内核开发过程中,阅读源码和查看源码定义,以及查看函数调用处是必不可少的功能,本节推荐在 BiscuitOS 下使用 ctags 和 grep 工具协助源码阅读. 参考如下命令进行部署和使用(在部署之前请确保已经部署 BiscuitOS 开发环境,如果未部署请参考 《BiscuitOS 用户手册 - 1.2》):
# 切换到 BiscuitOS 项目目录
cd /BiscuitOS
# 选择开发环境,如果已经选择过可以跳过,这里与 linux 6.10 X86 为例
make linux-6.10-x86_64_defconfig
make docker
# 切换到 Linux 内核源码目录
cd /BiscuitOS/output/linux-6.10-x86_64/linux/linux
# 生成源码 ctags 数据库
# 不同的 Architecture 命令存在差异
# 1. X86 => ARCH=x86_64
# 2. ARM32 => ARCH=arm
# 3. ARM64 => ARCH=arm64
# 4. i386 => ARCH=i386
make ARCH=x86_64 tags -j98
# 添加全局配置
在 “~/.vimrc” 文件里添加全局配置,可以使用 “set tags” 命令同时支持多个 CTAGS 数据库, 也可以在 vim 打开源码的时候,使用 “:set tags=XXX” 方式动态添加 CGTAGS 数据库.
当需要查看某个函数的定义时,可以将光标移动到函数位置,然后同时按下 “Ctrl” 和 “]” 两个按键,既可以跳出函数的定义,如果该函数符号有多个定义,可以在给出的选项中使用数字进行跳转选择. 当需要从函数定义中返回,可以同时按下 “Ctrl” 和 “t” 两个按键. 但需要查看某个函数在哪些地方调用,可以参考如下命令:
# 切换到 Linux 内核源码目录
cd /BiscuitOS/output/linux-6.10-x86_64/linux/linux
# 使用 grep 命令,例如 start_kernel
grep start_kernel * -nR --include "*.c"
以上便是 BiscuitOS 推荐的源码浏览工具,开发者可以根据需要自行部署.