ubuntu 12.04 更新內核


經過多次苦痛的編譯低版本linux-2.6.34內核而無法開機,發現貌似使用着高版本號的內核是無法更新為低版本的內核的。(若有人有成功經驗,歡迎留言)

所以換成版本linux-3.6.3終於成功了。

這里記錄下編譯過程。

# uname -a//顯示當前內核版本的全部信息

Linux linx 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux 

//當前版本號為 3.2.0 低於3.6.3

 //下載好內核包

tar xvf linux-3.6.3.tar.bz2 

cd linux-3.6.3

cp /arch/x86/configs/i386_deconfig .config //或者cp /boot/config-3.2.0-23-generic-pae .config

make menuconfig

//若無法使用menuconfig可能是ncurses包不全

//可以嘗試apt-get update 更新源 然后apt-get install ncurses-*更新ncurses文件 

//make menuconfig的設置可以直接讀取當前設置然后保存當前設置

make -j6//可以-jn實現多線程編譯,提高編譯速度。若想不回顯無用信息,可以在后面加 > /dev/null

make module //編譯模塊

make module_install //安裝模塊

mkinitramfs -o initrd.img-3.6.3 3.6.3 //產生的文件名盡量保持當前操作系統的命名規則

//3.6.3必須得再/lib/modules目錄下存在,若之前的編譯沒錯,則將自動生成

cp /arch/x86/boot/bzImage /boot/vmlinuz-3.6.3 

cp initrd.img-3.6.3 /boot/

//將鏡像和引導文件拷貝至boot目錄下

gedit /boot/grub/grub.cfg //手動修改grub文件

復制一段原有的

menuentry 'Ubuntu, with Linux 3.2.0-23-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,msdos6)'

search --no-floppy --fs-uuid --set=root 35a98672-5254-407d-a028-f27af3349765

linux /boot/vmlinuz-3.2.0-23-generic-pae root=UUID=35a98672-5254-407d-a028-f27af3349765 ro   quiet splash $vt_handoff

initrd 
/boot/initrd.img-3.2.0-23-generic-pae

} 

修改紅色標注的內容

第一個修改信息可以換成自己希望看到的引導信息,例如 my linux...

第二個修改信息換成我們剛才拷貝到boot目錄下的vmlinux-3.6.3

第三個修改信息換成剛才生成initrd.img-3.6.3

接着就可以reboot了。

//在ubuntu下,默認開機引導目錄是不可見的,所以會出現無法選擇編譯好的內核

//可以使用boot-repair工具,具體內容可google

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM