Ubuntu20.04默认内核版本是5.4.x,在开发的时候不太够用。
最新版本的bpftool在源码安装编译时要求llvm>=10.0.0。
0. 前期准备
安装一些工具,我是参考了很多篇博客,一股脑装的
如果有遗漏欢迎补充
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-server \
vim \
git \
net-tools \
iproute2 \
build-essential \
golang-go \
libncurses5-dev \
flex \
bison \
libelf-dev \
binutils-dev \
libssl-dev \
binutils-dev
libcap-dev
1. 源码安装编译LLVM
参考里面的方法二即可
2. 升级内核(源码编译安装)
2.1. 获取内核源码
下载地址:The Linux Kernel Archives
使用命令行下载或在本机浏览器上下载再拖进虚拟机/服务器中,我下载的是5.15.153,直接下载到了用户目录下
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.153.tar.xz
解压。如果解压报错,复制报错信息上网搜一下就好,一般都是参数多了或少了点问题
tar -xvf linux-5.15.153.tar.xz
2.2. 编译内核源码
先进入解压好的文件
cd linux-source-5.15.153
设置一个参数
sudo sed -i 's/CONFIG_MODULE_COMPRESS_ZSTD=y/# CONFIG_MODULE_COMPRESS_ZSTD is not set/' .config
生成配置
sudo make olddefconfig
再设置一下
sudo scripts/config --disable SYSTEM_TRUSTED_KEYS
sudo scripts/config --disable SYSTEM_REVOCATION_KEYS
sudo scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""
sudo scripts/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""
编译,数字8是线程数的意思,也可以是别的数,觉得慢就数字改大一点,这个过程可能需要很长时间
sudo make -j8
这时候可能会出现磁盘空间不够用的问题
参考这个提问解决: 20.04 - Low disk space on Filesystem root despite having plenty of space in `home` - Ask Ubuntu
总的来说就一句命令行,最后一个字段改成你的磁盘区域名sudo lvextend --resizefs -L +20GB /dev/mapper/ubuntu--vg-ubuntu--lv
编译完后检查一下,如果结果是 0 表示编译成功
echo $?
安装
sudo make install
安装完成后重启,检查内核是否自动替换。如果输出的版本号和新编译安装的内核版本一致,则表示安装成功。
uname -r
3. 安装bpftool
不要直接用apt安装,因为大概率不是最新的。如果安装中途报错,很有可能是llvm版本不够高。
git clone --recurse-submodules https://github.com/libbpf/bpftool.git
cd src
make
make install