linux kernel 2.6.36 编译升级
1.定制啟動畫面
a)linux啟動畫面分為兩種,grub使用的背景圖片,以及kernel啟動時的圖片(即一般在啟用linux framebuffer設備時出現的小企鵝畫面,一般系統有幾個CPU,就會出現幾個小企鵝)
首先定制grub的背景,要求圖像尺寸為640*480(沒試過其他尺寸), 而且主機已安裝了convert開源圖像處理工具。
例如準備了一張圖像為splash.bmp,
執行:
convert -geometry 640x480 -colors 14 splash.bmp splash.xpm /*背景要求640x480的尺寸,以及14色*/
gzip -9 splash.xpm
cp splash.xpm.gz /boot/grub
注意備份原有的splash.xpm.gz
再次啟動,grub的背景圖片已被更改,需要注意的是grub的配置menu.cfg中需要命令行支持splash畫面
?b)
linux kernel的啟動logo存放于KERNEL_PATH/drivers/video/logo/logo_linux_cult224.ppm
是被編譯到內核的,所以不能簡單的替換就改變原有的logo,按以下命令制作logo_linux_cult224.ppm
bmptopnm logo.bmp > logo_linux_cult224.pnm /*格式轉換*/
pnmquant 224 logo_linux_cult224.pnm > logo_linux_cult224.pnm /*將圖像改為224色*/
pnmtopnm logo_linux_cult224.pnm > logo_linux_cult224.ppm /*將圖像轉存為ppm格式*/
替換新內核中原有的logo_linux_cult224.ppm,注意備份原有的企鵝logo_linux_cult224.ppm。
內核編譯后,且以framebuffer方式啟動新內核,此時企鵝圖標就變成了自定義的LOGO(注意LOGO圖像的尺寸不能大于framebuffer的尺寸)
但是在啟動中,logo上會有光標在閃爍,如果需要將光標去除(提示console的光標也會消失),將內核中的KERNEL_PATH/drivers/video/console/fbcon.c中的fb_flashcursor和fbcon_sursor函數體置空。重新編譯安裝內核即可。
2.內核編譯
內核的編譯需要依照實際的硬件配置,否則,對不明確的地方全選即可。需要注意的是:在2.6.xx版的內核中在配置文件中有部分配置需要手動修正:
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
否則在使用LVM的linux系統下,內核編譯成功但是會提示找不到VolGroup00等錯誤,并直接導致內核啟動失敗,文件系統掛載出錯。
另外在2.6.36的內核中(可能此前的內核也存在這個問題),即使用intel和mavell以太網硬件的平臺上,編譯內核后會導致網絡驅動加載失敗,即找不到eth0和eth1設備。
這個問題和LVM的問類似,首先查看網卡設備信息:
lspci
結果會列出pci上所有的硬件設備信息,如ethernet,usb等,找到對應的以太網調制器。
cat /etc/modprobe.conf
找出ethx對應的驅動程序(如果系統在內核升級前正常,而升級后網絡不正常了,那可以在這里找到此前的有效驅動名稱)
在新內核下/lib/modules/2.6.xx/kernel/driver/net下如果能找到這些驅動,那么說明問題不出在驅動層,就可以不用再重新編譯內核。否者查看新內核目錄的.config配置文件
找到CONFIG_E1000E,和CONFIG_SKY2關鍵字,如果是“未設置”狀態,將這兩行加上:
CONFIG_E1000E=m
CONFIG_SKY2=m
保存后退出
make clean
make all
make modules_install
make install
修改grub的啟動順序使之選用新內核而后reboot
3.initrd定制
內核編譯安裝后,重啟可能會遇到類似insmod xxxx.ko error: xxxx.ko exist的錯誤
這是因為在生存initrd.img文件時,打包軟件重復的引入了某些驅動模塊
按以下步驟解壓initrd.img
新建一個目錄用于存放解壓的initrd
mkdir initrd
cd initrd
cp?/boot/initrd.img initrd.img.gz
gunzip initrd.img.gz
cpio -idcmv < initrd.img
此時initrd目錄下生成了諸多文件,其他不理會,編輯init文件,刪除其中的重復項,保存并退出
刪除舊的壓縮文件
rm initrd.img
然后執行以下命令生成新的initrd.img
find . | cpio -c -o > initrd.img
gzip -9 initrd.img
mv initrd.img.gz inird.img
使用新的initrd.img替換boot目錄下的對應文件,使用時注意initrd.img的具體文件名,中途勿隨意更改中間結果的名稱。
轉載于:https://www.cnblogs.com/semo/archive/2011/01/05/1926295.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的linux kernel 2.6.36 编译升级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对联想乐Pad的十大期待
- 下一篇: 瞧瞧这哥们的答案