内核更换
测试环境:Ubuntu 22.04
安装编译依赖
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev dwarves
获取内核源代码
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.43.tar.xz
tar xf linux-6.6.43.tar.xz
cd linux-6.6.43
内核配置
make menuconfig
处理证书问题,在编译时遇到证书问题输入两次 enter 即可继续
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
编译内核和模块
make -j$(nproc)
安装模块
sudo make modules_install
安装内核
sudo make install
更新引导加载程序
sudo update-grub
重启
sudo reboot
默认情况下已经更换为最新的内核。如果没有更换,则在 GRUB 引导界面(在开机过程中按下 Esc 键)选择 Advanced options for Ubuntu,手动选择对应的内核版本启动即可。
代码阅读环境设置
在内核代码成功编译之后执行,会在代码根目录生成 compile_commands.json 文件
scripts/clang-tools/gen_compile_commands.py
安装 Clangd
sudo apt install clangd
在 Vscode 中安装扩展 Clangd,打开扩展设置(远程),将 Clangd: Path 设置为 /usr/bin/clangd 。(这适用于本机是 Windows,通过远程连接到 Linux 环境)
之后随便打开一个代码文件,使用快捷键 ctrl + shift + p 打开 Vscode 命令面板,输入 reload window,选择 [开发人员: 重新加载窗口](Developer: Reload Window),重新打开后可以看到界面左下角 clangd 插件正在生成索引信息,等待完成后即可进行符号的跳转。