Linux操作系統一直在不斷的發展和完善,內核版本也在不斷地更新。對於Linux的用戶來說,如果不想顯得自己太"Low",學會編譯安裝Linux 內核就變得非常重要。下面簡單介紹一下編譯和安裝內核的過程。事實上Linux 支持的硬件系統是很多的,比如X86、ARM等等。本文只介紹基於X86系統的編譯。
巧婦難為無米之炊,要想編譯內核首先得拿到內核的源代碼吧。到www.kernel.org 網站上download一個,並在Linuxx系統下用"tar xzvf $version "解壓開。這裡我下載的是Linux-3.19.3.所以執行的是" tar xzvf Linux-3.19.3 "。解壓完成的文件夾裡面就是龐大的Linux 內核代碼。下面開始介紹編譯過程。
編譯的過程大致可以分為4步
1.配置內核
為啥要配置內核?很簡單,因為內核是適用於多個系統的,我們要根據自己的硬件系統制定出匹配的軟件系統。
進入解壓開的內核源代碼根目錄,執行 “make menuconfig”命令,,會出現如下的界面:
這裡就是內核配置的菜單項,我們可以一項一項的選擇,可是這麼多選項,要知道哪個是需要的,哪個是不需要的可不是件容易的事兒。懶人自有懶人的方法,咱不是已經有了自己Linux系統麼,咱看看現在系統的配置,仿照它就行。到/boot/目錄下找到配置文件,這裡我的是 config-2.6.32-279.el6.i686 文件。將這個文件copy 到內核根目錄下。然後選擇上面的 <load> ,進去以後將文件名填好。選擇<OK>回到上面的界面,選擇 <save>,將文件名命名為.config 然後退出。
回到內核根目錄使用 ls -a 查看配置文件,如果有個.config 的文件則說明配置成功了。
2. 編譯內核
其實編譯內核可以細分為4步:
2.1 編譯內核文件:使用make bzImage 命令開始編譯,整個編譯過程非常漫長,可以達到15+分鐘,如果電腦殘點的可以用到半個小時。編譯完成後會在 arch/X86/boot/下找到一個bzImage的內核映像文件。
2.2 編譯內核模塊:首先為啥有了內核文件還有個內核模塊呢?因為整個Linux操作系統是非常龐大的,如果所有的文件都放在bzImage 裡,那系統就會顯得非常臃腫而且占空間。並且有些服務平時是不會用到的,所以就把這些需要用到才加載的文件編譯成內核模塊,等用到的時候在加載到內存運行。那怎麼編譯內核模塊呢?很簡單,執行命令 make modules 就行。編譯好的內核模塊散落在各個文件夾裡,後綴都是 .ko 。
2.3 將編譯好的內核模塊/lib modules/目錄下:make modules_install。執行完這個命令之後到/lib/modules/目錄下可以看到相應的目錄<我的就有兩個目錄2.6.32-279.el6.i686 和 3.19.3>
2.4 制作initramdisk:將編譯好的內核模塊文件打包成一個文件,執行命令 mkinitrd initrd-$version version 如我的就是 mkinitrd initrd-3.19.3 3.19.3。完成以後會在目錄下出現內核模塊文件 initrd-3.19.3 。至此,編譯階段完成。
3.安裝內核:經過前面的編譯階段,我們得到了兩個文件,分別是 bzImage 和initrd3.19.3 ,所謂的安裝其實就是將這兩個文件copy 到/boot/目錄下,然後修改啟動項/etc/grub.conf裡面的加載內核文件和內核模塊文件就行。最後重啟電腦即可用到我們剛剛編譯好的內核。
4.清除文件:安裝完成以後我們還得把內核代碼裡留下的痕跡清理。執行命令 make distclean 即可。
至此,編譯安裝內核的工作已經完成。
Ubuntu 13.10 (Saucy Salamander) 內核已升級至 Linux Kernel 3.10 RC5 http://www.linuxidc.com/Linux/2013-06/86110.htm
Linux Kernel 3.4.62 LTS 現已經提供下載 http://www.linuxidc.com/Linux/2013-09/90368.htm
如何在Ubuntu 13.10上安裝Linux內核 3.12 http://www.linuxidc.com/Linux/2013-11/92930.htm
如何在Ubuntu 14.10,Ubuntu 14.04及其衍生版本安裝 3.16.7 CKT2內核 http://www.linuxidc.com/Linux/2014-12/110189.htm
Linux Kernel 的詳細介紹:請點這裡
Linux Kernel 的下載地址:請點這裡