更换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

 

你可能感兴趣的:(linux,kernel,ubuntu)