Linux內(nèi)核編譯測(cè)試方法
Linux內(nèi)核編譯測(cè)試方法
Step 1:配置內(nèi)核編譯選項(xiàng)。
make menuconfig
Optional Step :排除編譯結(jié)果文件(.o)等之間的依賴性。
make mrproper
Optional Step:清除歷史編譯結(jié)果。
make clean
Step 2:編譯內(nèi)核。
make bzImage #編譯內(nèi)核
make modules #編譯各內(nèi)核模塊,如驅(qū)動(dòng)等。
make modules_install #將編譯好的模塊安裝至 /lib/modules/x.xx.x 目錄下。
Step 3:生成初始盤鏡像 initrd.img。
cd linux-source-x.xx.x/.config #復(fù)制配置文件至/boot目錄
sudo cp .config /boot/config-x.xx.x
#x.xx.x 對(duì)應(yīng) /lib/modules/x.xx.x 目錄。
# -o 指示了鏡像的輸出目錄。
sudo mkinitramfs -o /boot/initrd.img-x.xx.x x.xx.x
Step 4:修改Grub配置。
在/boot/grub/grub.cfg中復(fù)制一段已有的啟動(dòng)項(xiàng)條目,將其中的內(nèi)核相關(guān)文件地址修改至新內(nèi)核相關(guān)文件所在位置。
如:
復(fù)制下段:
menuentry'Ubuntu,Linux 3.2.0-36-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 7b4e922c-d943-4b84-9c75-4fdc57cf1a3f
linux /boot/vmlinuz-3.2.0-36-generic-pae root=UUID=7b4e922c-d943-4b84-9c75-4fdc57cf1a3f ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.2.0-36-generic-pae
}
修改為:
menuentry 'Test,Linux 3.7.4' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 7b4e922c-d943-4b84-9c75-4fdc57cf1a3f
linux /boot/core/vmlinuz-3.7.4root=UUID=7b4e922c-d943-4b84-9c75-4fdc57cf1a3f ro quiet splash $vt_handoff
initrd /boot/core/initrd.img-3.7.4
}
Step 5:測(cè)試
在虛擬機(jī)啟動(dòng)時(shí)按Esc,強(qiáng)制進(jìn)入Grub啟動(dòng)菜單。
在菜單中選擇’Test,Linux 3.7.4,使用剛編譯的內(nèi)核初始化系統(tǒng),查看啟動(dòng)過程,看是否存在異常,如一切正常,則表明內(nèi)核編譯正確,反之則需要繼續(xù)修改編譯選項(xiàng)。