最近搭建开发环境,需要linux PC 内核xfrm 子系统支持IPsec的几个算法(sm3, sm4等),以便执行IPsec相关测试,因此需要修改PC机的linux内核。
环境:ubuntu 16.04,内核 linux-4.4.0
需求:使用linux-4.15.18内核,修改源码,编译安装
主要步骤有:
- 先准备编译内核需要提前安装依赖的lib库:
sudo apt-get install libssl-dev
sudo apt-get install libncurses5-dev
- 将从网上下载的指定内核版本,如linux-4.15.18, 解压到本地路径,如/usr/src/kernel中
tar -xvf linux-source-4.15.18.tar.bz2
- 编译config生成Makefile
sudo make mrproper
sudo make clean
sudo make menuconfig
- 如果需要自定义内核版本号,如 linux-4.15.18-20230720 修改Makefile,
1 # SPDX-License-Identifier: GPL-2.0
2 VERSION = 4
3 PATCHLEVEL = 15
4 SUBLEVEL = 18
5 EXTRAVERSION = 20230720
6 NAME = Fearless Coyote
- 编译
sudo make
- 安装
sudo make modules_install
sudo make install
- 检查/boot/下是否已经存在vmlinux-4.5.18-20230720等相关文件
ubuntu@xxx:~$ ls /boot/
abi-4.15.18-041518-generic memtest86+_multiboot.bin
config-4.15.0-112-generic retpoline-4.15.18-041518-generic
config-4.15.0-142-generic System.map-4.15.0-112-generic
config-4.15.18 System.map-4.15.0-142-generic
config-4.15.18-041518-generic System.map-4.15.18
config-4.15.180720 System.map-4.15.18-041518-generic
config-4.15.18.old System.map-4.15.18-060509-generic
efi/ System.map-4.15.180720
grub/ System.map-4.15.18.old
initrd.img-4.15.0-112-generic vmlinuz-4.15.0-112-generic
initrd.img-4.15.0-142-generic vmlinuz-4.15.0-142-generic
initrd.img-4.15.18 vmlinuz-4.15.18
initrd.img-4.15.18-041518-generic vmlinuz-4.15.18-041518-generic
initrd.img-4.15.18-060509-generic vmlinuz-4.15.18-060509-generic
initrd.img-4.15.180720 vmlinuz-4.15.180720
memtest86+.bin vmlinuz-4.15.18.old
memtest86+.el
- 重启PC,选择需要启动的ubuntu内核版本