在线Linux kernel代码阅读指南
Linux Kernel 是一个巨大的工程,因此其代码量也是巨大的。根据2020年的统计数据,Linux Kernel有大概2800万行代码。使用本地方式阅读代码会消耗大量的本地硬盘及 CPU 资源,如果是在手机上,那根本就是不太现实的事情。至于为什么还要在手机上看 Kernel 代码,这就是另一个话题了。因此,有时候我们需要可以在线阅读 Linux Kernel 代码,根据经验我总结了一些方法。本文主要针对内核 net 网络子系统,如果是看其他代码,切换一下目录即可。
git.kernel.org
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/core
内核官方 git 仓库,速度尚可,PC和手机都支持,代码有语法高亮,不支持函数及变量跳转,不支持引用搜索。
elixir.bootlin.com
https://elixir.bootlin.com/linux/latest/source/net/core
基于LXR(the Linux Cross Referencer)技术构建的内核交叉引用站点,速度尚可,PC和手机都支持,代码有语法高亮,支持函数及变量跳转,支持引用搜索。
github.com
https://github.com/torvalds/linux/tree/master/net/core
github.com 上Linux Kernel代码镜像,速度时断时续,PC和手机都支持,代码有语法高亮,支持函数及变量跳转,支持引用搜索,支持文件内符号表(变量,函数)显示。
虽然在线阅读很方便,但是也有一些缺点。
- 只支持最新版本,或者有限的分支版本
- 需要有网络的环境,不能本地服务器部署
- 符号表展示,文件搜索,函数跳转不如本地速度快。
如果有条件,可以本地部署代码阅读环境。
本地下载推荐地址:https://mirrors.tuna.tsinghua.edu.cn/help/linux.git/
下载完成后推荐使用VSCode阅读代码,同时配置一下包含和排除目录,便于快速跳转。
注意,Linux Git库下载完解压后会占用大量空间,而且WSL和Windows交互有一些文件系统性能问题。具体看这里:https://learn.microsoft.com/en-us/windows/wsl/filesystems#file-storage-and-performance-across-file-systems
推荐另一种方式:直接下载一个特定版本的Linux Kernel代码,然后用VSCode阅读,比如当前最新的LTS版本:6.12.17,地址为:https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.12.17.tar.xz
其实在新接触一个项目的时候,需要频繁的使用交叉引用功能,因为这个时候你还不太了解项目的逻辑关系。当你比较熟悉之后,大脑中已经有了比较清晰的交叉引用路径,这个时候函数及变量的跳转功能用的就更多了。