一.查找源碼
由于我用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版本即說明工作正常。