• 正文
    • 一、Linux內(nèi)核源碼下載方法
    • 二、Linux內(nèi)核源碼閱讀以及工具詳解
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Linux內(nèi)核源碼下載及閱讀指南,想學(xué)習(xí)嵌入式Linux的同學(xué)可以參考

01/20 13:06
1.3萬(wàn)
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

前言

有很多同學(xué)想入門Linux內(nèi)核,這是Linux最核心的部分,也是學(xué)習(xí)驅(qū)動(dòng)和軟件流程最好的資料。今天給大家說(shuō)下如何下載Linux內(nèi)核,并開始閱讀學(xué)習(xí)。

本文主要分為兩部分:Linux內(nèi)核源碼下載方法;Linux內(nèi)核源碼閱讀以及工具詳解

一、Linux內(nèi)核源碼下載方法

學(xué)習(xí)Linux看源碼是最好的方法,但是很多人留言不知道怎么下載源碼,下邊進(jìn)行了總結(jié)。

當(dāng)然,如果你本地已經(jīng)安裝了Linux版本,在安裝的linux系統(tǒng)下,/usr/src/linux目錄下的東西就是內(nèi)核源代碼,下邊的方法是提供幾種獲取具體版本的方法。

1.官網(wǎng)下載

官網(wǎng)鏈接:https://www.kernel.org/

提供另一個(gè)鏈接,比官網(wǎng)下載速度快:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/

在下載目錄中,選擇所需的內(nèi)核版本。例如,如果需要穩(wěn)定版本,可以選擇帶有“stable”標(biāo)簽的目錄。

進(jìn)入所選版本目錄后,下載對(duì)應(yīng)的源碼壓縮包,如.tar.gz或.tar.xz格式的文件。

2.Git倉(cāng)庫(kù)克隆

這種方法需要你本地先安裝git工具,下面的命令我就以Ubuntu系統(tǒng)為例。

sudo apt updatesudo apt install git

然后,使用Git命令克隆Linux內(nèi)核的官方Git倉(cāng)庫(kù)。

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

國(guó)內(nèi)用戶可以選擇使用清華大學(xué)的Git鏡像站,下載速度比較快:

git clone https://mirrors.tuna.tsinghua.edu.cn/git/linuxstable.git

3.使用國(guó)內(nèi)鏡像站點(diǎn)下載

為了提高下載速度,在國(guó)內(nèi)的大家也可以選擇使用鏡像站點(diǎn)下載。下邊是常用的一些鏡像站點(diǎn),進(jìn)入站點(diǎn)后下載源碼壓縮包就可以;

中科大鏡像站:mirrors.ustc.edu.cn/kernel.org/

清華大學(xué)開源軟件鏡像站:mirrors.tuna.tsinghua.edu.cn/kernel/

阿里云開源鏡像站:mirrors.aliyun.com/kernel/

OK,上邊幾個(gè)方法就足夠下載使用了,還有更多的方法也可以自己補(bǔ)充使用。

二、Linux內(nèi)核源碼閱讀以及工具詳解

這里我主要想介紹的閱讀Linux內(nèi)核閱讀的工具是source insight。

source insight是一付費(fèi)軟件,也是很多C語(yǔ)言開發(fā)工程師很喜歡的軟件。對(duì)于源碼的閱讀搜索修改都堪稱神器。

下載地址:https://www.sourceinsight.com/download/

下面就正式開始介紹;

閱讀Linux內(nèi)核源代碼對(duì)于許多人來(lái)說(shuō)可能顯得有些令人生畏,但實(shí)際上,這種恐懼并無(wú)必要。誠(chéng)然,Linux內(nèi)核作為一個(gè)龐大且復(fù)雜的系統(tǒng)代碼,閱讀起來(lái)確實(shí)存在不少挑戰(zhàn),但它并非高不可攀。只要有堅(jiān)持不懈的決心,任何困難都是可以克服的。而且,我們往往都是在不斷學(xué)習(xí)和實(shí)踐中成長(zhǎng)的,不是嗎?

要想順利閱讀源代碼,正確的方法和工具至關(guān)重要。對(duì)于Linux內(nèi)核源代碼的閱讀也同樣如此。下面,我將分享一些自己閱讀內(nèi)核源代碼的經(jīng)驗(yàn)。

在閱讀之前,最好對(duì)源代碼的知識(shí)背景有一定的了解。對(duì)于Linux內(nèi)核源代碼來(lái)說(shuō),我認(rèn)為至少需要具備以下基本知識(shí):操作系統(tǒng)的基本原理、熟悉C語(yǔ)言,以及最好了解一些匯編語(yǔ)言和GNU C對(duì)標(biāo)準(zhǔn)C的擴(kuò)展。此外,還應(yīng)該對(duì)Linux內(nèi)核源代碼的整體結(jié)構(gòu)有一個(gè)大致的了解。現(xiàn)代操作系統(tǒng)一般由進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、驅(qū)動(dòng)程序、網(wǎng)絡(luò)等組成部分構(gòu)成,Linux內(nèi)核源代碼的目錄結(jié)構(gòu)也大致對(duì)應(yīng)了這些方面。

arch?目錄包含了與特定硬件體系結(jié)構(gòu)相關(guān)的核心代碼。

include?目錄包含了核心的大多數(shù)頭文件。

init?目錄包含了核心啟動(dòng)代碼。

mm?目錄包含了所有的內(nèi)存管理代碼。

net?目錄包含了核心的網(wǎng)絡(luò)部分代碼。

lib?目錄包含了核心的庫(kù)代碼。

scripts?目錄包含了用于配置核心的腳本文件。

Documentation?目錄提供了一些參考文檔。

了解了源代碼的結(jié)構(gòu)組成后,就可以著手閱讀了。閱讀方法或順序可以分為縱向和橫向兩種。縱向閱讀就是順著程序的執(zhí)行順序逐步進(jìn)行;橫向閱讀則是分模塊進(jìn)行。實(shí)際上,這兩種方法并不是絕對(duì)的,而是經(jīng)常結(jié)合在一起使用。對(duì)于Linux源代碼來(lái)說(shuō),啟動(dòng)代碼可以順著Linux的啟動(dòng)順序一步一步來(lái)閱讀,而像內(nèi)存管理等部分則可以單獨(dú)拿出來(lái)進(jìn)行閱讀分析。

我的建議是:開始最好按順序閱讀啟動(dòng)代碼,然后進(jìn)行專題閱讀,如進(jìn)程部分、內(nèi)存管理部分等。在每個(gè)功能函數(shù)內(nèi)部,應(yīng)該一步步來(lái)閱讀和理解。實(shí)際上,這是一個(gè)反復(fù)的過(guò)程,不可能讀一遍就能完全理解。

“工欲善其事,必先利其器”。閱讀像Linux內(nèi)核代碼這樣的復(fù)雜程序確實(shí)是一項(xiàng)艱巨的任務(wù)。它就像一個(gè)越滾越大的雪球,閱讀某個(gè)部分時(shí)經(jīng)常需要引用好幾個(gè)其他的相關(guān)文件,很容易讓人迷失方向。因此,一個(gè)好的工具是必不可少的??紤]到許多用戶對(duì)Windows平臺(tái)比較熟悉,并且經(jīng)常使用Windows系列平臺(tái),我今天介紹的這款Windows下的工具軟件-Source Insight。這是一款有30天免費(fèi)試用期的軟件,可以從其官方網(wǎng)站下載。安裝非常簡(jiǎn)單,只需雙擊安裝文件名,然后按照提示進(jìn)行安裝即可。安裝完成后,就可以啟動(dòng)該程序了。

Source Insight的使用非常簡(jiǎn)單,是一款閱讀源代碼的好工具。

下面簡(jiǎn)要介紹一下它的使用方法:

1.首先選擇“Project”菜單下的“New”選項(xiàng),新建一個(gè)工程,并輸入工程名。

2.接著,將想要閱讀的源代碼添加到工程中(可以整個(gè)目錄添加)。添加完成后,該軟件會(huì)自動(dòng)分析所添加的源代碼。分析完成后,就可以開始閱讀了。

在閱讀過(guò)程中,如果想要查看某個(gè)變量的定義,只需將光標(biāo)定位在該變量上,然后點(diǎn)擊工具條上的相應(yīng)選項(xiàng),該變量的定義就會(huì)顯示出來(lái)。對(duì)于函數(shù)的定義與實(shí)現(xiàn)也可以進(jìn)行同樣的操作。Source Insight還有許多其他功能,在此就不一一介紹了。有興趣的朋友可以下載安裝Source Insight試試看,相信它一定會(huì)大大提高你閱讀源代碼的效率。

下邊是Source Insight在沒(méi)有創(chuàng)建工程前的界面,可以根據(jù)自己習(xí)慣修改布局,改變背景色,修改快捷鍵等。

下面就帶大家一起創(chuàng)建一個(gè)Linux內(nèi)核的項(xiàng)目。

這里我比較建議大家下載一個(gè)老版本的內(nèi)核用來(lái)學(xué)習(xí),我下載的是2.6.24版本,這樣的話有很多可以參考的書籍可以配套學(xué)習(xí)。

我就通過(guò)上邊的鏡像網(wǎng)站進(jìn)入Linux 內(nèi)核的文件下,找到對(duì)應(yīng)的版本號(hào),下載到本地后解壓待用:

可以在源碼的同級(jí)創(chuàng)建一個(gè)工程文件夾(SI-linux-2.6.24)。

軟件內(nèi)點(diǎn)擊,創(chuàng)建新工程。

定義工程名稱和工程保存位置,后續(xù)都點(diǎn)擊OK即可。

下一步是選擇需要添加的源碼。

在這個(gè)對(duì)話框中,你可以將想要閱讀的源代碼文件添加到工程中。添加文件有兩種主要方式:

通過(guò)文件名添加:

在“File Name”輸入框中輸入你想要添加的源代碼文件的名稱。

點(diǎn)擊“Add”按鈕,將該文件加入到工程中。

通過(guò)目錄添加:

使用“Add All”按鈕:這個(gè)選項(xiàng)會(huì)提供兩種方式來(lái)添加文件,一種是僅添加頂層文件,另一種是遞歸地添加選中目錄及其所有子目錄中的文件。

使用“Add Tree”按鈕:這個(gè)按鈕相當(dāng)于“Add All”選項(xiàng)中的遞歸添加所有文件的方式。它會(huì)自動(dòng)將選中目錄及其所有子目錄中的文件全部加入到工程中。

我個(gè)人更喜歡使用“Add Tree”按鈕,因?yàn)樗梢砸绘I將整個(gè)目錄樹中的文件全部添加進(jìn)來(lái),非常方便快捷。而且,由于Source Insight采用了部分打開文件的方式,即只有當(dāng)你實(shí)際需要查看某個(gè)文件時(shí),該程序才會(huì)打開它,所以即使你加入了數(shù)千個(gè)文件,也不用擔(dān)心會(huì)超出程序所能處理的最大文件數(shù)量。比如,我就是使用“Add Tree”的方式,將Linux 2.4內(nèi)核的20487十一個(gè)文件全部加入到了工程中。

下面就是最關(guān)鍵的工作界面;

按照排序依次是:

函數(shù)列表

關(guān)系窗口

定義窗口,顯示當(dāng)前項(xiàng)目的文件夾結(jié)構(gòu)和庫(kù)文件列表。

文件窗口,這個(gè)窗口可以以文件列表的方式,列出所有的文件,點(diǎn)擊一個(gè)文件就可以打開該文件。

源文件窗口,編輯修改代碼

功能快捷鍵,顯示可用的工具和插件列表。

當(dāng)然了,這只是簡(jiǎn)單的一個(gè)介紹,Source Insight的使用還有很多技巧,但是還是那句話,先搞起來(lái)起來(lái)再說(shuō),很多細(xì)節(jié)都可以慢慢積累。

然后就可以按照教材或者書籍開始學(xué)習(xí)研究Linux內(nèi)核源碼了。

相關(guān)推薦