搞了兩三天,主要為了使用linux2.6.30.4自帶的RT73無線網卡驅動,還剩下iwpriv指令不能使用,這裡先分兩篇文章分別講述linux2.6.30.4內核的編譯、安裝、啟動項設置和linuxkernel自帶的無線網卡驅動安裝、使用。這篇主要將linux2.6.30.4內核的編譯、安裝、啟動項設置。
1、下載內核
http://www.kernel.org/
這個地方永遠是內核下載的官方地址。
2、將下載的內核包*.tar.bz2拷貝到/usr/src目錄下,其實別的地方也可以,不過按照慣例放到這個目錄下。
3、解壓下載的內核*.tar.bz2到/usr/src目錄
4、進入內核源代碼樹 cd /usr/src/linux-2.6.30.4
5、make mrproper ,命令的作用是在每次配置並重新編譯內核前需要先執行“make mrproper”命令清理源代碼樹,包括過去曾經配置的內核配置文件“.config”都將被清除。即進行新的編譯工作時將原來老的配置文件給刪除到,以免影響新的內核編譯。
6、配置內核 make menuconfig,其他類似配置內核的指令還有make config 、makegconfig等。
(1)對每一個配置選項,用戶有三種選擇,它們分別代表的含義如下:
<*>或[*]——將該功能編譯進內核
[]——不將該功能編譯進內核
[M]——將該功能編譯成可以在需要時動態插入到內核中的代碼
(2)具體的配置選項不說了,可以參考:
http://www.tyonly.com/archives/536
但有一點比較重要,大家都會提到的:一定要記得把ext2和ext3文件系統編譯進內核,但其實系統默認選項就會將ext2和ext3編譯進內核,按默認選項就行。但上面http://www.tyonly.com/archives/536文章裡說:ext2和ext3文件系統配置很重要,也是必需的,如果對Ext3、Ext2文件的支持直接編譯進內核,在你reboot時機器就會當掉,出現錯誤信息。具體是不是這樣不知道,沒有遇到過。
7、make oldconfig,在修改過配置文件之後,或者在用已有的配置文件配置新的代碼樹的時候,應該驗證和更新配置。
8、make。很多教程說在編譯內核前還需要make dep,但其實到了2.6以後的內核版本,不需要在每次編譯內核之間運行makedep了,代碼之間的依賴關系會自動維護。也不必要再指定像老版本中bzImage這樣的編譯方式或獨立地編譯模塊。默認的Makefile規則會打理一切。
9、模塊的安裝 makemodules_install。模塊的安裝是自動的,也是獨立於體系結構的,運行這個指令會把所有已編譯的模塊安裝到正確的主目錄/lib/modules中。
10、內核安裝 make install。使用“makeinstall”命令安裝新內核到系統中,並且自動為是用新內核作一些必要的配置,在/boot/目錄下會生成vmlinuz-2.6.30.4的文件和system.map的文件,system.map是在內核編譯的時候在源代碼書的根目錄下創建的,是一份符號對照表,用以將內核符號和它們的起始地址對應起來,調試的時候,如果需要把內存地址翻譯成容易理解的函數名以及變量名,這會很有用。到這裡內核安裝便算完成,但離放到啟動界面裡以供選擇還有一段距離。
11、生成啟動文件。
#mkinitramfs -o /boot/initrd.img-2.6.30.4
update-initramfs -c -k 2.6.30.4在/boot/目錄下生成initrd.img-2.6.30.4 文件。
update-grub2 自動修改系統引導配置,產生grub.cfg啟動文件。
上面還有一條指令,mkinitramfs,這個指令在我制作啟動配置的時候其實沒有用到,但很多教程列了出來,一並列在這裡,對於mkinitramfs,還有一篇轉載的文章將專門講解。
對於update-grub2還多說一點,在最初的linux系統發行版中,使用grub.conf文件來管理啟動項;隨後
取而代之的是在/boot/grub目錄下的menu.lst文件(具體在哪個版本改變的不明),現在的是在/boot/gru/grub.cfg。但不宜去直接修改grub.cfg,利用系統提供的update-grub2指令相對方便和安全些。
12、到此,內核編譯、安裝、啟動配置就全完成了,重新啟動,Over。
附錄一個講得比較清楚的內核編譯流程:
http://zjuedward.blog.51cto.com/1445231/461376