Linux核心編譯步驟(基於Ubuntu10.04+2.6.35.2 Kernel)

來源:互聯網
上載者:User

是日,閑暇之餘研究了一下Linux的Kernel的編譯。以前都是在Windows平台工作,幾乎無機會用Linux,於是也想湊熱鬧玩一下。平台是最新的Ubuntu 10.04 LTS,Kernel也是最新下載的2.6.35.2版本。其實現在Kernel的編譯比過去方便的多,用menuconfig的話幾乎不用人工配置,命令也不用敲多少行。編譯核心算是學Linux Kernel最開始的部分。

 

編譯步驟:

 

1. 到http://www.kernel.org/
上下載最新的核心原始碼linux-2.6.35.2.tar.bz2(目前最新的版本),然後放在/usr/src目錄下。

 

2. 為了使編譯過程方便,建議進入root賬戶進行操作,這樣做使你不用每次都用sudo命令。(我還不太瞭解這樣做安全性是否可靠)

    進入Terminal,執行:su root

 
然後輸入你的Password,這樣就在root賬戶許可權下進行剩下的操作了。

 

3. 下載的Linux源碼是壓縮包,需要解壓到目錄下:tar -j
x
vf linux-2.6.35.2.tar.bz2 -C /usr/src

 

4. 進入解壓後的目錄:cd /usr/src/linux-2.6.35.2

 

5. 檢查有無不正確的.o檔案和依賴關係: make mrproper

(其實這一步可以省略,因為是剛下載好的源碼,一定是乾淨的;如果使用的是已經編譯過的code,則需要做這一步)

 

6. 配置Kernal選項:make menuconfig

(這一步很重要,它決定了你可以個人定製化你的Kernel。當你使用menuconfig時,會有一些選擇列出來) 主列表如下:

 

    General Setup: 常規的配置,比如Kernel config, CPU Group,Aduiting等等

    Loadable module support: 定製你要載入哪些modules

    Enable the block layer: 主要是塊裝置和大檔案的設定

    Processor type and features: 處理器配置和定製化

    Power management options: 電源管理的定製化,比如Hibernate這樣的

    Bus options: PCI匯流排的定製

    Executable file formats: 主要是設定ELF的配置

    Networking support: 定製網路選項,包括Wireless,Bluetooth和Network選項

    Device Drivers: 定製你需要載入的裝置驅動

    Fireware Drivers: BIOS和EFI這樣的韌體驅動設定

    File System: 檔案系統的設定,包括EXT3, EXT4, FAT, CD/DVD...等等N種

    Kernel hacking: 主要是設定Kernel debugging的,做核心調試會有用

    Security options: 安全選項

    Cryptographic API: 加密設定,包括MD5, SHA1, CRC等等N種密碼編譯演算法的配置

    Virtualization: 虛擬化設定

    Library routines: 主要定製CRC校正的function

 

    上面是16大項,每一項都有N多小項,說真的這個裡面每一項都夠研究一陣子的。不過對核心編譯而言,你可以全部採用預設選項(會延長編譯時間)。設定好了menuconfig,儲存退出。

 

7. 建立Modules依賴關係: make dep

 

8. 刪除配置後剩下的不適用的檔案:make clean

 

9. 編譯核心:make bzImage

(這個會花些時間,看機器情況和menuconfig的定義而言。我採用預設的設定,編譯時間花了20分鐘左右。如果Kernel小於512K,可以用make zImage
命令)

 

10. 編譯核心模組:make modules

(這個也會花點時間,要看你定製的modules數量而言。採用預設設定,花了大約25分鐘。你可以用make -j<n>
加快編譯速度,n代表你CPU的數量)

 

11. 安裝核心模組:make modules_install

 

12. 安裝核心:make install

 

13. 建立initrd檔案:(1) cd/

(2)輸入:mkinitramfs 2.6.35.2 -o /boot/initrd.img-2.6.35.2-generic

 

14. 拷貝編譯好的核心image: cp /usr/src/linux-2.6.35.2/arch/i386/boot/bzImage /boot/vmlinuz-2.6.35.2-generic

 

15. 最後一步,修改Grub,更新啟動列表:update-grub

(如需手動編輯grub.cfg, 則在root賬戶下使用gedit就可以了)

 

(註:Ubuntu10.04已經使用了Grub2來管理啟動設定,而不是Grub,所以在以往的/boot/grub路徑下你是找不到menu.lst的, 因為Grub2已經使用了/boot/grub/grub.cfg來管理配置啟動設定,不過最好不要手動編譯這個檔案,具體的方式是編輯/etc/default/grub和/etc/grub.d下的指令檔。有關Grub2的詳細教程,請參考https://docs.google.com/Doc?docid=0AeVQ5PqmbeaoZGc0czgyOWtfMjRjbWo0ODVoYw&hl=en
)

 

16. Reboot機器,然後Enjoy it!

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.