天天看点

linux内核学习--准备环境

一.查找源码

由于我用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/

网站

根据内核版本号找到对应源码包

linux内核学习--准备环境

下载对应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 用完了句柄。需要调整一下监听参数。详情可以参考如下设置:

    linux内核学习--准备环境

    4.设置完后重启vscode,配置global

    5.配置global参数,先到vscode 商店下载 gnu global插件

    User Setting添加codegnuglobal设置

    linux内核学习--准备环境
    另外,如果代码有改动需要使用global -u更新数据库文件,可在User Setting下设置codegnuglobal.autoupdate=false即可自动更新。

6.重启vscode

linux内核学习--准备环境

输入上述命令,如果有显示global版本即说明工作正常。

开始源码学习吧~