天天看點

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版本即說明工作正常。

開始源碼學習吧~

繼續閱讀