通过内核源码升级ubuntu内核

本文详细介绍了一次从源码升级 Ubuntu 的 kernel 过程,包括下载内核、配置及编译新内核、更新 grub 引导列表等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天第一次尝试通过源码升级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”,如下图:
    这里写图片描述
    按Enter键,弹出另一个对话框,如下图:
    这里写图片描述
    在红框中输入配置文件名(默认为.config),选中”ok”,按Enter键退出到上图中,然后再退出,最终会弹出是否保存配置文件的对话框,如下图:
    这里写图片描述
    选中“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文件夹中,如下图红框中是拷贝的文件:
    这里写图片描述
    此外,该步骤还会更新/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+
    }

    到此为止,整个新内核就配置完成,重启验证结果如下:
    这里写图片描述

    7.帮助信息

  • 可以参考内核源码根目录下的README文件,该文件中讲了如何配置、编译内核和一些注意事项。
  • 在linux内核原码根目录下,使用make help命令可以查看make的帮助信息
  • menuconfig中每个选项的说明和依赖关系,可以下图中的红色标注来查看
    这里写图片描述
### 升级Ubuntu上的内核源码 对于希望在Ubuntu升级内核源码的情况,可以按照如下方法操作: #### 下载特定版本的Linux内核源码 当需要下载指定版本的Linux内核源码时,可以通过`wget`命令从官方服务器获取压缩包文件。例如,要下载版本号为5.4.1的Linux内核源码,可执行以下命令: ```bash $ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.1.tar.xz ``` 此命令会将目标文件保存到当前目录下[^1]。 #### 安装必要的工具和依赖项 为了编译新的内核,在开始之前应该先确保已经安装了构建环境所需的工具链以及相关库文件。通常情况下,这些都可以通过APT包管理器轻松获得。建议至少安装以下组件: ```bash sudo apt update && sudo apt install build-essential libncurses-dev bison flex \ libssl-dev libelf-dev dwarves ``` #### 解压并配置新内核 一旦下载完成之后,则需解压tarball档案,并进入对应的文件夹继续后续工作: ```bash tar xf linux-5.4.1.tar.xz cd linux-5.4.1/ make menuconfig ``` 这里使用的是`menuconfig`选项来进行图形化的配置界面调整;当然也可以选择其他方式如`olddefconfig`来自动生成默认设置而无需手动干预。 #### 编译与安装自定义内核 完成了所有必要修改后就可以着手于实际编译过程了。考虑到不同硬件平台可能存在的差异性因素影响效率表现,推荐采用多线程模式加速整个流程(`-jN`),其中N代表CPU核心数加一作为经验值参考: ```bash make -j$(nproc) sudo make modules_install sudo make install ``` 最后一步将会自动更新GRUB引导菜单并将最新版映像放置适当位置以便重启计算机时加载运行。 #### 更新后的验证 成功安装完毕以后应当重新启动系统以应用更改。开机过程中注意观察屏幕提示确认是否正常切换到了预期的新版本之上。另外还可以借助uname指令快速查看当前正在使用的具体编号信息: ```bash uname -r ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值