操作系统环境
VMware workstation15 Pro
Ubuntu 18.04 LTS
待编译内核5.3.10版本
Compiler: gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
内核下载地址
kernel.org
环境配置
在正式编译前需要安装部分软件。
sudo apt update && sudo apt upgrade
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
解压缩
解压缩刚刚下载好的内核压缩包。
tar -zxf linux-5.3.10.tar.xz
cd linux-5.3.10
配置内核
在正式编译内核之前,我们首先必须配置需要包含哪些模块。实际上,有一些非常简单的方式来配置。使用一个命令,你能拷贝当前内核的配置文件,然后使用可靠的 menuconfig 命令来做任何必要的更改。
cp /boot/config-$(uname -r) .config
上述命令的意思就是拷贝对应当前内核配置到当前目录下并重命名为.config(文件名前加.意思为隐藏文件)。
可以自行查看下uname -r的输出:
uname -
之后执行命令:
make menuconfig
在虚拟机下有可能提示会因为屏幕太小而无法显示menuconfig而执行失败。要确保虚拟机下的显示面积足够大。
显示如下:
在这里可以选择启用或者禁用一些模块。如果你不知道该如何选择的话,默认退出即可。
编译和安装
退出menuconfig后,在命令行中输入
make -j4
命令即可开始编译。-j4意思是并发执行,可以提高速度,一般情况 下不要多于CPU核数。这个命令的执行会耗费很长时间。
编译完成之后首先安装模块,命令为:
sudo make modules_install
其次安装内核,命令为:
sudo make install
启用内核作为引导
输入下列命令将内核作为引导,将数字更改为你自己编译的版本号:
sudo update-initramfs -c -k 5.3.10
下面更新一下grub:
sudo update-grub
之后重启即可在启动界面选择需要启动的内核。如果看不到启动选择界面,请执行以下操作:
输入命令:
sudo vi /etc/default/grub
将文件修改为以下模式:(注释掉hidden那一行,将timeout更改为较大值,这里改为了10)
之后执行
sudo update-grub
重启即可见到下面菜单,选择advanced,进入后选择刚编译安装好的内核进入即可。
确认内核版本
说明内核安装成功。
自定义grub启动项
1. 修改启动项名称
在ubuntu下,可以直接修改/boot/grub/grub.cfg中有关启动项的名称。
2. 增加自定义启动项
复制/boot/grub/grub.cfg有关启动项的内容到/etc/grub.d/40_custom进行自定义即可。
3. 执行update
最后都要执行下述命令以生效。
sudo update-grub