更換ubuntu系統內核版本

本文是將ubuntu12.04版本下低版本內核升級到高版本(3.2.0-23-generic-pae ---> 4.0.4)

一、www.linux.org下載內核版本

下載鏈接:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/

下載完成後開始進行解壓

sudo tar -zxf linux-4.0.4.tar.gz -C /usr/src

二、安裝必要的軟件包。在正式替換之前先安裝幾個必要的軟件包

sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-headers

各個包的主要作用如下:

  build-essential: 基本的編程庫(gcc, make等)

  kernel-package: Debian 系統裏生成 kernel-image 的一些配置文件和工具

  libncurses5-dev: make menuconfig要調用的

  libqt3-headers: make xconfig要調用的

其他的工具在升級過程中可以根據提示安裝。

三、編譯內核

1、拷貝原有配置文件。把正在使用中的內核配置文件/usr/src/linux-headers-3.2.0-23-generic-pae/.config 拷到/usr/src/linux-4.0.4目錄下

sudo cp /usr/src/linux-headers-3.2.0-23-generic-pae/.config /usr/src/linux-4.0.4

2、導入配置文件。運行以下命令

sudo cd /usr/src/linux-4.0.4
sudo make menuconfig

3、編譯配置時可能遇到的問題(執行make menuconfig可能出現的問題)

scripts/kconfig/lxdialog/dialog.h:38:20: 致命錯誤: curses.h:沒有那個文件或目錄

解決辦法:

sudo apt-get install libncurses5-dev

4、編譯

sudo make mrproper   //清除以前曾經編譯過的舊文件,如果你是第一次編譯,可不執行。

sudo make              //編譯,此過程需要較長時間。
sudo make install     

sudo make modules  //編譯模塊
sudo make modules_install  //安裝模塊

四、最後創建initrd文件

mkinitramfs -o /boot/initrd.img-4.0.4

五、更新grub引導列表

sudo update-grub

sudo gedit /boot/grub/grub.cfg

將Code3拷貝至Code1和Code2之間,即將Ubuntu, with Linux4.0.4啓動項拷貝至最前面,這樣在重啓時系統會自動選擇第一個作爲默認啓動,於是就能進入內核爲Linux4.0.4的系統。

Code1:

if [ "$linux_gfx_mode" != "text" ]; then load_video; fi

Code2:

menuentry 'Ubuntu,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,msdos1)'
        search --no-floppy --fs-uuid --set=root 5f8170e2-c901-43b3-ac5c-64602cabdd99
        linux   /boot/vmlinuz-3.2.0-23-generic-pae root=UUID=5f8170e2-c901-43b3-ac5c-64602cabdd99 ro   quiet splash $vt_handoff
        initrd  /boot/initrd.img-3.2.0-23-generic-pae
}

Code3:

menuentry 'Ubuntu,Linux 4.0.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 5f8170e2-c901-43b3-ac5c-64602cabdd99
        linux   /boot/vmlinuz-4.0.4 root=UUID=5f8170e2-c901-43b3-ac5c-64602cabdd99 ro   quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.0.4
}

六、重啓系統

七、可能出現的問題

在重啓後可能會出現如下問題:

warning: can't open directory /lib/modules/4.04/modules.dep, no such files or directory

解決方案:

這時,可以先從舊內核中進入系統,然後執行以下命令:

$ su root         //獲得root權限

# cd /boot

# cp initrd.img-4.0.4 initrd-4.0.4.old              //備份原有文件

# depmod –a                                             //檢查所有模塊

# update-initramfs –k 4.0.4 –c

# cd /tmp

# gzip –dc /boot/initrd.img-4.0.4| cpio –id

# touch lib/modules/4.0.4/modules.dep

# find ./ | cpio –H newc –o > /boot/initrd.img-4.0.4.new

# gzip /boot/initrd.img-4.0.4.new

# cd /boot

# mv initrd.img-4.0.4.new.gz initrd.img-4.0.4

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章