通过内核源码升级ubuntu内核

时间:2021-09-21 12:31:14

今天第一次尝试通过源码升级Ubuntu的kernel,现将过程记录下来,以供大家参考。

1.升级环境

  • 系统版本: Ubuntu 12.04 LTS
  • Kernel版本:3.2.0.51
  • 升级的目标kernel:3.6.0
  • 2.下载内核
    https://www.kernel.org/pub/linux/kernel/下载kernel源码linux-3.6.tar.gz,解码到/usr/src或工作目录下,角解码到工作目录下:

  • tar zxvf /home/liulijun/linux-3.6.tar.gz
  • 3.清除旧的编译文件和配置文件

  • cd linux-3.6
  • sudo make mrproper //清除以前曾经编译过的旧文件和配置文件(第一次编译不用执行)
  • 4.配置内核
    可以使用当前正在使用的内核的配置文件,也可以自己新创建一个内核配置文件,我使用的是当前正在使用的内核的配置文件,按如下方式操作:

  • cd linux-3.6
  • cp /boot/config-3.2.0-51-generic-pae ./.config
  • make menuconfig
    会弹出Linux/i386 3.6.0 Kernel Configuration的对话框,在该界面上选中“Load an Alternate Configuration File”,如下图:
    通过内核源码升级ubuntu内核
    按Enter键,弹出另一个对话框,如下图:
    通过内核源码升级ubuntu内核
    在红框中输入配置文件名(默认为.config),选中”ok”,按Enter键退出到上图中,然后再退出,最终会弹出是否保存配置文件的对话框,如下图:
    通过内核源码升级ubuntu内核
    选中“Yes”,按Enter键保存。
  • 5.编译和安装内核

  • cd linux-3.6
  • make –jN(其中N代表同时允许多少个任务进行编译)
  • sudo make modules_install //安装模块,最终会将模块安装在/lib/modules/3.6.0+下,其中3.6.0代表安装的内核版本
  • sudo make install //安装内核,会将新内核编译出的System.map, initrd.img, vmlinuz, config文件拷贝到/boot文件夹中,如下图红框中是拷贝的文件:
    通过内核源码升级ubuntu内核
    此外,该步骤还会更新/boot/grub/menu.list(如果没有该文件会提示生成)列表,将新安装的内核添加到该文件中。
  • 6.更新配置grub引导列表
    grub在引导系统时是通过其配置文件grub.cfg进行引导的,为了能够让grub默认引导新安装的内核必须配置grub.cfg。

  • cd /boot/grub
  • sudo chmod 644 grub.cfg
    参考grub.cfg中已有的menuentry,将新内核的menuentry放在已有内核的menuentry前面(因为grub.cfg中默认启动第一个内核set default=”0”),新增加的menuentry如下:
  • menuentry 'Ubuntu, Linux 3.6.0+' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0, msdos1)'
    search --no-floppy --fs-uuid --set=root a4c8987c-6f35-4af1-b539-3617000ec73b
    linux /boot/vmlinuz-3.6.0+ root=UUID=a4c8987c-6f35-4af1-b539-3617000ec73b ro quiet splash text $vt_handoff
    initrd /boot/initrd.img-3.6.0+
    }

    到此为止,整个新内核就配置完成,重启验证结果如下:
    通过内核源码升级ubuntu内核

    7.帮助信息

  • 可以参考内核源码根目录下的README文件,该文件中讲了如何配置、编译内核和一些注意事项。
  • 在linux内核原码根目录下,使用make help命令可以查看make的帮助信息
  • menuconfig中每个选项的说明和依赖关系,可以下图中的红色标注来查看
    通过内核源码升级ubuntu内核