Ubuntu18更新Linux内核5.15及Linux内核编译
0.下载源代码
- https://mirrors.aliyun.com/linux-kernel/v5.x/在镜像网站中找到需要的版本,这里用linux-5.15.10.tar.gz,解压缩到/linux_kernel中,进入/linux_kernel/linux-5.15.10.tar.gz
解压缩命令:
tar -xzvf linux-5.15.10.tar.gz
1.安装编译环境
apt-get install libncurses5-dev build-essential kernel-package
2.配置内核运行
进入解压后的内核源代码目录,并使用现有的内核配置文件作为基础配置。可以复制系统中 /boot/config-$(uname -r) 文件到内核源代码目录,并命名为 .config
cp /boot/config-$(uname -r) ~/linux_kernel/linux-5.15.10/.config
make menuconfig
在make menuconfig中选在load选项.config并save : (点击一下load ,再exit)
3.编译内核
make -j 8
4.安装模块
make modules_install
这里结束后不用make install否则报错没有bzimage
5.生成可执行的内核引导文件
make bzImage
cp arch/x86/boot/bzImage /boot/vmlinuz-5.15.10
6.复制System.map文件
cp System.map /boot/System.map-4.20.12
7. 生成initrd.img文件
cd /lib/modules/5.15.10
update-initramfs –c –k 5.15.10
8.修改引导文件
vi /etc/default/grub
将GRUB_DEFAULT=0注释掉
9.自动更新配置
update-grub
reboot#重启验证
uname -r#查看版本
问题
报错1:
arch/x86/Makefile:142: CONFIG_X86_X32 enabled but no binutils support
sed: can’t read modules.order: No such file or directory
make: *** [Makefile:1479: __modinst_pre] Error 2
解决方案:
这个报错原因是 CONFIG_X86_X32 enabled but no binutils support
,选择重新编译binutils或者禁用CONFIG_X86_X32,我选择禁用,编辑.config文件,将CONFIG_X86_X32=y改为CONFIG_X86_X32=n。重新运行make -j4
,不再报此处错误。
报错2:
make[1]: *** No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’. Stop.
解决方案:
编辑.config文件,修改CONFIG_SYSTEM_TRUSTED_KEYS
修改CONFIG_SYSTEM_TRUSTED_KEYS,将其赋空值。
修改前:原变量有值
CONFIG_SYSTEM_TRUSTED_KEYS=“debian/canonical-certs.pem”
修改后:将该变量赋空值,将该项原有内容删掉即可,如下:
CONFIG_SYSTEM_TRUSTED_KEYS=“”
修改CONFIG_SYSTEM_REVOCATION_KEYS(可选),如果CONFIG_SYSTEM_REVOCATION_KEYS的值不为空的话,也将其赋空值。
修改前:原变量有值
CONFIG_SYSTEM_REVOCATION_KEYS=“debian/canonical-revoked-certs.pem”
修改后:将该变量赋空值
CONFIG_SYSTEM_REVOCATION_KEYS="
报错3:
sh ./arch/x86/boot/install.sh 5.15.10
arch/x86/boot/bzImage System.map “/boot”
*** Missing file: arch/x86/boot/bzImage
*** You need to run “make” before “make install”.
解决:步骤5有些教程用的make install ,不用这个,用make bzImage生成