• 正文
  • 相關推薦
申請入駐 產業(yè)圖譜

Linux內核源碼下載及閱讀指南,想學習嵌入式Linux的同學可以參考

01/20 13:06
2.1萬
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

前言

有很多同學想入門Linux內核,這是Linux最核心的部分,也是學習驅動和軟件流程最好的資料。今天給大家說下如何下載Linux內核,并開始閱讀學習。

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

一、Linux內核源碼下載方法

學習Linux看源碼是最好的方法,但是很多人留言不知道怎么下載源碼,下邊進行了總結。

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

1.官網下載

官網鏈接:https://www.kernel.org/

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

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

進入所選版本目錄后,下載對應的源碼壓縮包,如.tar.gz或.tar.xz格式的文件。

2.Git倉庫克隆

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

sudo apt updatesudo apt install git

然后,使用Git命令克隆Linux內核的官方Git倉庫。

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

國內用戶可以選擇使用清華大學的Git鏡像站,下載速度比較快:

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

3.使用國內鏡像站點下載

為了提高下載速度,在國內的大家也可以選擇使用鏡像站點下載。下邊是常用的一些鏡像站點,進入站點后下載源碼壓縮包就可以;

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

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

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

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

二、Linux內核源碼閱讀以及工具詳解

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

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

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

下面就正式開始介紹;

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

要想順利閱讀源代碼,正確的方法和工具至關重要。對于Linux內核源代碼的閱讀也同樣如此。下面,我將分享一些自己閱讀內核源代碼的經驗。

在閱讀之前,最好對源代碼的知識背景有一定的了解。對于Linux內核源代碼來說,我認為至少需要具備以下基本知識:操作系統(tǒng)的基本原理、熟悉C語言,以及最好了解一些匯編語言和GNU C對標準C的擴展。此外,還應該對Linux內核源代碼的整體結構有一個大致的了解。現代操作系統(tǒng)一般由進程管理、內存管理、文件系統(tǒng)、驅動程序、網絡等組成部分構成,Linux內核源代碼的目錄結構也大致對應了這些方面。

arch?目錄包含了與特定硬件體系結構相關的核心代碼。

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

init?目錄包含了核心啟動代碼。

mm?目錄包含了所有的內存管理代碼。

net?目錄包含了核心的網絡部分代碼。

lib?目錄包含了核心的庫代碼。

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

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

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

我的建議是:開始最好按順序閱讀啟動代碼,然后進行專題閱讀,如進程部分、內存管理部分等。在每個功能函數內部,應該一步步來閱讀和理解。實際上,這是一個反復的過程,不可能讀一遍就能完全理解。

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

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

下面簡要介紹一下它的使用方法:

1.首先選擇“Project”菜單下的“New”選項,新建一個工程,并輸入工程名。

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

在閱讀過程中,如果想要查看某個變量的定義,只需將光標定位在該變量上,然后點擊工具條上的相應選項,該變量的定義就會顯示出來。對于函數的定義與實現也可以進行同樣的操作。Source Insight還有許多其他功能,在此就不一一介紹了。有興趣的朋友可以下載安裝Source Insight試試看,相信它一定會大大提高你閱讀源代碼的效率。

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

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

這里我比較建議大家下載一個老版本的內核用來學習,我下載的是2.6.24版本,這樣的話有很多可以參考的書籍可以配套學習。

我就通過上邊的鏡像網站進入Linux 內核的文件下,找到對應的版本號,下載到本地后解壓待用:

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

軟件內點擊,創(chuàng)建新工程。

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

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

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

通過文件名添加:

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

點擊“Add”按鈕,將該文件加入到工程中。

通過目錄添加:

使用“Add All”按鈕:這個選項會提供兩種方式來添加文件,一種是僅添加頂層文件,另一種是遞歸地添加選中目錄及其所有子目錄中的文件。

使用“Add Tree”按鈕:這個按鈕相當于“Add All”選項中的遞歸添加所有文件的方式。它會自動將選中目錄及其所有子目錄中的文件全部加入到工程中。

我個人更喜歡使用“Add Tree”按鈕,因為它可以一鍵將整個目錄樹中的文件全部添加進來,非常方便快捷。而且,由于Source Insight采用了部分打開文件的方式,即只有當你實際需要查看某個文件時,該程序才會打開它,所以即使你加入了數千個文件,也不用擔心會超出程序所能處理的最大文件數量。比如,我就是使用“Add Tree”的方式,將Linux 2.4內核的20487十一個文件全部加入到了工程中。

下面就是最關鍵的工作界面;

按照排序依次是:

函數列表

關系窗口

定義窗口,顯示當前項目的文件夾結構和庫文件列表。

文件窗口,這個窗口可以以文件列表的方式,列出所有的文件,點擊一個文件就可以打開該文件。

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

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

當然了,這只是簡單的一個介紹,Source Insight的使用還有很多技巧,但是還是那句話,先搞起來起來再說,很多細節(jié)都可以慢慢積累。

然后就可以按照教材或者書籍開始學習研究Linux內核源碼了。

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄