由於需要在PC機上做一些Linux驅動的實驗,來學習《linux設備驅動開發技術及應用》這本書,最近在ubuntu上配置、編譯、安裝了更老一些的內核。原來ubuntu11.10自帶的內核是linux-3.0.0-12的,我改為了linux-2.6.39.4版本的。過程主要參考《Ubuntu環境下編譯linux-2.6.36內核操作手冊》。
以下過程全部在root權限下操作。
1、 安裝必備軟件編譯工具:
#apt-get install libncurses5-dev build-essential kernel-package
注意:
(1)libncurses5-dev是為之后配置內核能運行 make menuconfig程序做准備
Build-essential為編譯工具,kernel-package是編譯內核工具
(2)如果系統顯示無法查找到這三個文件,輸入#apt-get update更新數據源。
2、 下載內核
去www.kernel.org下載你需要的內核版本的源代碼:linux-3.6.39.4.tar.bz2
3、 將源碼放在windows下的共享目錄內,這樣在linux下就可以看到並操作了。
我在linux下的共享目錄為:
linux@xiangpingli:~/桌面/share$ pwd
/home/linux/桌面/share
linux@xiangpingli:~/桌面/share$ ls
linux-2.6.39.4.tar.bz2 vimrc.tiny3
4、 將該壓縮包拷貝到/usr/src/目錄下解壓
5、 配置內核:
建議使用當前系統配置文件,使用當前系統配置文件方法:
#cp /boot/config-XX ./.config,然后進入menuconfig選擇load選項。
6、 編譯內核:
make,這可能需要2~3個小時的時間。
7、加入模塊
#make modules_install
8、生成可執行的內核引導文件
#make bzImage
#cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.39.4
9、將System.map復制到/boot下:
#cp System.map /boot/System.map-2.6.39.4
10、生成initrd.img文件
#cd /lib/modules/2.6.39.4
#update-initramfs –c –k 2.6.39.4
11、自動查找新內核,並添加至grub引導
#update-grub
12、修改/boot/grub/grub.cfg文件,將幾個timeout的值設為10
這樣grub在引導的時候就會出現10秒的停留,如果有按鍵輸入,則可以對內核鏡像進行選擇