以下流程在Ubuntu19.10和20.04中均成功编译内核。特别要注意的是系统根目录一定要够大,如果双系统的话,分配50G磁盘空间,全部给到根目录就可以了。
1、到Linux官方网站下载内核。
2、做好编译前的准备工作
# sudo apt-get install libncurses5-dev openssl libssl-dev
# sudo apt-get install build-essential openssl
# sudo apt-get install pkg-config
# sudo apt-get install libc6-dev
# sudo apt-get install bison
# sudo apt-get install flex
# sudo apt-get install libelf-dev
# sudo apt-get install zlibc minizip
# sudo apt-get install libidnll-dev libidnll
3、解压下载的源码
# tar -xavf linux-4.18.14.tar.xz -C /usr/src
# cd /usr/src/linux-4.18.14
注意这里以及后面要把内核版本号改成自己所下载的版本。
4、净化源码
# make mrproper
如果是第一次编译内核可以省略该步。
5、对内核选项进行配置选择
# cp /boot/config-`uname-r` ./.config
# make menuconfig
load --> (.config)OK --> SAVE --> (.configbak)OK --> EXIT
这里使用当前正在使用的Ubuntu系统内核的配置文件设置为要编译内核的配置文件。
注意这里按上面这种方式操作很可能会没有load成功,我也不记得后来怎么就load成功了,只记得如果成功了那么在点击OK的时候是会有提示的。如果没有成功那么在后面开始编译的时候会提示你手动一步一步地设置配置文件。
6、删除配置时留下的一些不用的文件
# make clean
如果是第一次编译内核同样是不需要的。
7、编译内核
# make bzImage -jN
内核较小时可以用make zImage。
注意N代表你选择使用几个CPU来进行编译,当然N越大越快,下一步的N相同。
8、编译模块
# make modules -jN
9、安装模块
# make INSTALL_MOD_STRIPE=1 modules_install
此时/lib/modules/下应该新生成一个KERNEL_VERSION(4.18.14)目录
10、构建内核映像
# mkinitramfs /lib/modules/4.18.14 -o /boot/initrd.img-4.18.14-generic
11、拷贝内核映像和System.map到/boot/下
# cp /usr/src/linux-4.18.14/arch/x86/boot/bzImage /boot/vmlinuz-4.18.14-generic
# cp /usr/src/linux-4.18.14/System.map /boot/System.map-4.18.14
# ln -s /boot/System.map-4.18.14 /boot/System.map
12、修改grub配置文件/boot/grub/grub.cfg
# chmod 777 grub.cfg
# update-grub2
13、重启
在选择系统时就可以看到自己新编译的内核版本了,如果没有看到,进入Ubuntu高级选项就可以看到了。进入新编译的内核后可以使用命令uname -r查看自己当前的内核版本。