一.查找源码
由于我用VB装的虚拟机是Centos 8的版本,为方便后续学习,所以就以当前我正在使用的这个版本内核为例。
1.先查看当前Centos具体版本号
# 查看Centos版本
[[email protected] kernel]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
# 查看内核版本号
[[email protected] linux-4.18.0-193.14.2.el8.x86_64]# uname -r
4.18.0-193.14.2.el8_2.x86_64
2.根据版本号到https://vault.centos.org/8.2.2004/BaseOS/Source/SPackages/
网站
根据内核版本号找到对应源码包

下载对应rpm包
3.安装源码包
- 创建源码的编译目录树,目的源码存放地址
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
- 安装源码到编译目录
rpm -i kernel-3.10.0-229.20.1.el7.src.rpm 2>&1 | grep -v exist
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
-
编译时,会提示缺少对应的依赖包,使用yum命令安装完所有依赖包。
其中有两个工具(dwarves和libpf-devel),yum源上可能没有,可以通过手动安装方式进行安装。
前往 http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/
搜索这两个工具的rpm安装包,下载到系统中。
使用rpm ivh 进行安装
-
安装完所以依赖后,最后再执行
rpmbuild -bp --target=$(uname -m) kernel.spec
完成源码安装,最终源码路径在
~/rpmbuild/BUILD/kernel-/linux-/
二.配置vscode源码查看环境
前置条件: 安装完vscode,配置好remote-ssh,具体可以百度参考其它教程
1.centos系统上先gnu global源码插卡神器,采用源码安装方式:
wget https://ftp.gnu.org/pub/gnu/global/global-6.6.tar.gz
# 编译安装
./configure --with-sqlite3 # gtags可以使用Sqlite3作为数据库, 在编译时需要加这个参数
make -j4
sudo make install
2.在工程目录下打开命令行或终端,输入gtags,即可生成三个文件GPATH,GRTAGS,GTAGS。
GTAGS是定义的数据库,GRTAGS是引用的数据库,GPATH是路径的数据库;
3.vscode打开内核源码工作区
-
vscode 会提示
“Visual Studio Code is unable to watch for file changes in this large workspace” (error ENOSPC)
是由于内核文件太多了, VS Code file watcher 用完了句柄。需要调整一下监听参数。详情可以参考如下设置:
linux内核学习--准备环境 4.设置完后重启vscode,配置global
5.配置global参数,先到vscode 商店下载 gnu global插件
User Setting添加codegnuglobal设置
另外,如果代码有改动需要使用global -u更新数据库文件,可在User Setting下设置codegnuglobal.autoupdate=false即可自动更新。linux内核学习--准备环境
6.重启vscode
输入上述命令,如果有显示global版本即说明工作正常。