Ubuntu 系统手动编译内核

默认的 Ubuntu 的 kernel 附带和非常多的本机并没有的驱动, 而且, 尤其恶劣的是其内核中的 processor family 编译的是 genetic x86_64, 所以, 对于 i5/i7 系列的 CPU 中比较新的特定支不是很好, 所以, 这就使得我有了自己编译 Ubuntu 内核的冲动. 实时也证明, 编译内核对于压榨机器性能还是蛮有效果的. 由于之前用 Gentoo 的时候已经有了编译内核的经验, 所以, 编译 Ubuntu 内核并没有遇到很大的困难.

  1. 准备工作

    1
    2
    3
    4
    sudo apt-get update
    sudo apt-get install build-essential
    sudo apt-get install libncurses5-dev
    sudo apt-get build-dep linux-image-$(uname -r)
  2. 下载 kernel 源码
    由于下载源码以及解压操作会带来很多附加文件, 所以, 最好创建一个单独的工作目录

    1
    2
    mkdir kernel && cd kernel
    apt-get source linux-image-4.4.0-47-generic
  3. 配置内核选项
    其实, 这一步是最难的, 如果想编译出一个和自己机器完全 match 的内核非常难, 以方面要完全了解自己机器的硬件信息以及在 kernel 中的对应选项, 另一方面, 还要明白 kernel 中每个配置选项的修改会带来什么后果. 只有对软件和硬件都非常熟悉的人才能配置出一个好的私人订制的内核. 我这里由于是第一次编译 Ubuntu 内核, 我选择了比较保守的配置选项, 只更改了 Processor Family

    1
    2
    3
    4
    # 1. 拷贝目前机器内核的配置选项, 在该配置的基础上进行修改
    make oldconfig
    # 2. 编译内核, 在该命令接下来的截面中选择 Processor Family 为 core2, 这个是可选的最新的 CPU 类型
    make menuconfig
  4. 编译内核

    1
    make
  5. 编译 modules

    1
    make modules
  6. 安装 modules

    1
    sudo make install_modules
  7. 安装 kernel

    1
    sudo make install
  8. 更新 bootloader

    1
    sudo update-grub
  9. 重新把 nvidia 显卡驱动编译到内核中
    参考之前的一篇文章