linux内核学习--准备环境

一.查找源码

由于我用VB装的虚拟机是Centos 8的版本,为方便后续学习,所以就以当前我正在使用的这个版本内核为例。

1.先查看当前Centos具体版本号

# 查看Centos版本
[root@localhost kernel]# cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core) 

# 查看内核版本号
[root@localhost 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.安装源码包

  1. 创建源码的编译目录树,目的源码存放地址
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
  1. 安装源码到编译目录
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
  1. 编译时,会提示缺少对应的依赖包,使用yum命令安装完所有依赖包。
    其中有两个工具(dwarves和libpf-devel),yum源上可能没有,可以通过手动安装方式进行安装。
    前往 http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/
    搜索这两个工具的rpm安装包,下载到系统中。
    使用rpm ivh 进行安装

  2. 安装完所以依赖后,最后再执行
    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 用完了句柄。需要调整一下监听参数。详情可以参考如下设置:
    在这里插入图片描述
    4.设置完后重启vscode,配置global
    5.配置global参数,先到vscode 商店下载 gnu global插件
    User Setting添加codegnuglobal设置
    在这里插入图片描述
    另外,如果代码有改动需要使用global -u更新数据库文件,可在User Setting下设置codegnuglobal.autoupdate=false即可自动更新。

6.重启vscode
在这里插入图片描述
输入上述命令,如果有显示global版本即说明工作正常。

开始源码学习吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值