linux内核编译替换

linux内核编译比我想象的要简单很多。之所以要编译内核,是因为BPF开发过程需要打开内核的一些功能。但是基础镜像的内核版本默认是不打开这些功能的。所以只能尝试自己编译内核。

整个编译过程如下:

  1. 安装编译所依赖的包
  2. 下载Kernel源码
  3. 自定义配置项
  4. 编译
  5. 重启

安装依赖包

apt-get install build-essential kernel-package libncurses-dev dwarves 
apt-get install flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

下载Kernel源码

参考Linux内核源代码获取方法。一般将源码copy到/usr/src目录下,执行命令tar -xf linux-XXX.tar.xz

自定义配置项

首先执行命令make mrproper清理之前的设定的配置项。

配置项修改的方式很简单,将对应的配置由n改为y就可以了。但困难的是如何找到这一项!因为一种系统特性通常不是一个配置项负责。不同的配置项之间也存在干涉。如果手动修改,除非经验丰富,极容易发生错误。

推荐使用make menuconfig来修改配置项。使用方法写在了界面窗口中。简单来说,使用\查询相关配置项。搜索结果会说明匹配的配置项的含义,已经需要修改编辑位置。根据编辑位置将对应位置修改就可以了。之后退出保存就可以了。

每个配置项的含义可以参考Make Menuconfig详解

编译

make -j $(nproc) bzImage
make -j $(nproc) modules
make modules_install
make install

重启

reboot

安装过程中可能遇到的问题:

1.执行命令make bzImage之后出现错误

错误信息为:

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
make: *** [Makefile:1179: vmlinux] Error 1

根据stack overflow,安装sudo apt install dwarves可以解决问题。

2.存储空间不足

内核编译大概需要50G的硬盘空间,如果存储空间不足需要扩充硬盘。购买硬盘之后,并不能直接使用,因为并没有安装文件系统。可以根据磁盘初始化指导书来完成配置。

配置完成之后,新盘与启动盘独立。可以将编译文件移动到新盘再安装。

3.执行命令make menuconfig之后出现错误

在一个新的环境安装,执行命令make menuconfig遇到错误如下:

/bin/sh: 1: flex: not found
make[1]: *** [scripts/Makefile.host:9: scripts/kconfig/lexer.lex.c] Error 127
make: *** [Makefile:603: menuconfig] Error 2

ask ubuntu,查到需要安装如下的包。

apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

参考资料

  1. 如何编译和更换Linux系统内核
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值