参考内容:
编译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 即可