参考内容:

Linux内核开发_1_编译LInux内核

编译linux内核报错:flex: not foundscripts

编译kernel5.14报错fatal error: openssl/opensslv.h

编译内核错误——*** 没有规则可制作目标“debian/canonical-certs.pem”

内核错误:BTF: .tmp_vmlinux.btf: pahole (pahole) is not available

# 切换到 root 账户
sudo su

# 查看操作系统版本
cat /etc/issue

# 查看 Linux 内核版本
cat /proc/version

# 进入 root 账户目录
cd /home/root

# 下载 Linux 内核源码
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.157.tar.xz
# Linux 其它版本源码 https://www.kernel.org/

# xz 解压
xz -d linux-5.10.157.tar.xz

# tar 解压到 /usr/src/linux-5.10.157 目录下
tar -xf linux-5.10.157.tar -C /usr/src/.

# 进入源码目录
cd /usr/src/linux-5.10.157

# 查看源码结构
tree . -L 2

# 若没有 tree 命令,可以执行下面命令
# apt-get install tree

# 配置编译选项
make menuconfig

# 若没有 make,可以执行下面命令
# apt-get install make

# 若执行 make 后报错找不到 curses.h,可以执行下面命令
# apt-get install libncurses5-dev

# 若报错找不到 flex not found,可以执行下面两条命令
# apt-get install flex
# apt-get install bison

# 再次运行 make menuconfig 弹出图形化配置页面后
# 若使用默认配置,则直接按两次 Esc 键退出即可
# 此时会在当前目录下生成 .config 文件

# 编译 Linux 源码
make bzImage -j4

# 在编译过程中若报错 fatal error: openssl/opensslv.h,可执行下面命令
# apt-get install libssl-dev
# 若还出现同样的问题,可参考 https://blog.csdn.net/ComputerInBook/article/details/107380796 源码编译安装 openssl

# 若出现「没有规则可制作目标“debian/canonical-certs.pem”」报错
# 需要删除 .config 中相应的字段,总共有两处
# 一处为 CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
# 一处为 CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

vim .config
# 删除之后的样子如下(需要保留引号):
# 一处为 CONFIG_SYSTEM_TRUSTED_KEYS=""
# 一处为 CONFIG_SYSTEM_REVOCATION_KEYS=""

# 若出现 BTF: .tmp_vmlinux.btf: pahole (pahole) is not available 错误,则执行下面命令
# apt-get install dwarves

# 若在过程中还出现其它问题,大多是因为缺少相关库导致的,直接用 apt-get install 即可