標籤:
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.配置核心,得到設定檔 .config
2.編譯核心,得到 核心映像 zImage 和 核心模組映像 initrd-$version
3.安裝核心
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 即可。
至此,編譯安裝核心的工作已經完成。
Linux 核心編譯