Linux核心入門-如何擷取Linux核心原始碼、組建組態核心

來源:互聯網
上載者:User

如何擷取Linux核心原始碼
如何擷取Linux核心原始碼

下載Linux核心當然要去官方網站了,網站提供了兩種檔案下載,一種是完整的Linux核心,另一種是核心增量補丁,它們都是tar歸檔壓縮包。除非你有特別的原因需要使用舊版本的Linux核心,否則你應該總是升級到最新版本。

使用Git

由Linus領頭的核心開發隊伍從幾年前就開始使用Git版本控制系統管理Linux核心了(參考閱讀:什麼是Git?),而Git項目本身也是由Linus建立的,它和傳統的CVS不一樣,Git是分布式的,因此它的用法和工作流程很多開發人員可能會感到很陌生,但我強烈建議使用Git下載和管理Linux核心原始碼。

你可以使用下面的Git命令擷取Linus核心代碼樹的最新“推送”版本:

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

 

然後使用下面的命令將你的代碼樹與Linus的代碼樹最新狀態同步:

$ git pull

安裝核心原始碼

內 核包有GNU zip(gzip)和bzip2格式。Bzip2是預設和首選格式,因為它的壓縮比通常比gzip更好,bzip2格式的Linux核心包 一般採用linux-x.y.z.tar.bz2形式的檔案名稱,這裡的x.y.z是核心原始碼的具體版本號碼,下載到原始碼包後,解壓和抽取就很簡單了,如 果你下載的是bzip2包,運行:

$ tar xvjf linux-x.y.z.tar.bz2

如果你下載的是gzip包,則運行:

$ tar xvzf linux-x.y.z.tar.gz

無論執行上面哪一個命令,最後都會將原始碼解壓和抽取到linux-x.y.z目錄下,如果你使用Git下載和管理核心原始碼,你不需要下載tar包,只需要運行git clone命令,它就會自動下載和解壓。

核心原始碼通常都會安裝到/usr/src/linux下,但在開發的時候最好不要使用這個原始碼樹,因為針對你的C庫編譯的核心版本通常也連結到這裡的。

應用補丁

Linux核心開發人員會將自己的修改做成補丁與其它人員分享,而且補丁是增量的,增量補丁是從一個核心樹移動到另一個核心樹的有效方法,不用下載完整的核心包就可以升級核心,不僅可節省頻寬,也節省了核心升級時間,應用補丁之前先進入核心原始碼樹所在目錄,然後運行:

$ patch –p1 < ../patch-x.y.z

注意,補丁包也有明確的版本號碼,這裡的版本號碼與Linux核心原始碼的版本號碼要一致,核心和補丁版本號碼不一致時,強制應用補丁會引起意想不到的後果。

核心原始碼樹介紹

核心原始碼樹分為許多目錄,它們下面又包含許多子目錄,原始碼樹的頂級目錄及其描述參見下表。

目錄 描述
arch 特定架構的原始碼
block 塊I/O層
crypto 加密API
Documentation 核心原始碼文檔
drivers 裝置驅動
firmware 使用某個驅動需要的裝置韌體
fs VFS和獨立檔案系統
include 核心頭
init 核心啟動和初始化
ipc 處理序間通訊
kernel 核心子系統,如調度器
lib 助手例行程式
mm 記憶體管理子系統和VM
net 網路子系統
samples 樣本,示範代碼
scripts 用於產生核心的指令碼
security Linux安全模組
sound 聲音子系統
usr 早期的使用者空間代碼(叫做initramfs)
tools 輔助Linux開發的工具
virt 虛擬化基礎設施

在原始碼樹的根目錄下還有很多檔案需要說明,COPYING是核心許可描述檔案(即GNU GPL v2),CREDITS是參與Linux核心的開發人員名單,MAINTAINERS列出了維護各個子系統和驅動的個人,Makefile是核心Makefile的基礎。

產生、配置核心

 

產生核心

產生核心其實很簡單,甚至比編譯和安裝其它系統級組件,如glibc還要簡單,從2.6版本開始,Linux核心引入了一個新的配置和產生系統,它使生產核心的操作變得更加簡單了。

配置核心

既 然已經拿到核心原始碼,那我們在開始編譯前就可以根據需要自行配置和定製,可以編譯你指定的功能和想要的驅動,配置核心是產生核心必須的一步,因為核心提 供了大量的功能,支援各種不同的硬體,有很多都需要配置,核心配置是由配置選項控制的,配置選項都有CONFIG首碼,例如,對稱式多處理(SMP)是由 CONFIG_SMP配置選項配置的,如果設定了這個選項,SMP就被啟用了,反之則被禁用,配置選項可以確定會產生哪個檔案,也可以通過預先處理指令操控 代碼。

配置選項可以控制產生過程要麼是布爾型,要麼是三態型,布爾型就是“是”或“否”,大部分核心配置選項都屬於布爾型,如 CONFIG_PREEMPT,而三態型則在“是”和“否”的基礎上,又增加一個“模組”選項,模組選項表示配置選項被設定了,但最後會編譯成模組,而不 是直接編譯進核心,模組可以理解為可獨立動態載入的對象,一般來說,驅動配置通常都是三態型。

配置選項也可以是字串或整數,這樣的選項不會控制產生過程,指定的值由核心原始碼訪問預先處理宏時使用,例如,可以為某個配置選項指定靜態分配數組的大小。

Linux 廠商也會隨發行版提供先行編譯的核心,如Canonical為Ubuntu,或Red Hat為Fedora提供的核心,這樣的核心通常只啟用了需要的核心 功能,幾乎所有驅動都被編譯成模組了,這樣的核心提供了一個良好的基礎核心和廣泛的硬體模組支援,無論如何,想要成為核心高手,你應該編譯自己的核心。

值得慶幸的是,核心提供了很多工具簡化配置 ,最簡單的工具是基於文本命令列的公用程式,如:

$ make config

這 個工具會一個選項一個選項地配置,但使用者需要參與,如指定“是(y)”,“否(m)”還是“模組(m)”,整個配置過程需要很長的時間,因此,除非是有人 按小時計費請你升級核心,實在找不出別的理由用這種最原始的方法配置核心了,相反,有現成的基於ncurses的圖形化工具可以代替。

$ make menuconfig

或是基於gtk+的圖形化工具

$ make gconfig

上述三個工具都將配置選項分成多個類別,如“處理器類型和特徵”,你可以在這些類別上來回移動,查看核心選項,當然也可以修改它們的設定了。

下面這個命令會根據你的架構建立一個預設的配置基礎。

$ make defconfig

雖然預設配置有些武斷(在i386上,預設配置是由Linus配置的),但如果你從未配置過核心,它提供了一個良好的開端。

配置選項儲存在原始碼樹根目錄下一個名叫.config的檔案中,你可以開啟這個檔案手工編輯其中的配置選項,修改後或要在新的核心原始碼樹上應用現有設定檔,你可以使用下面的命令驗證和更新配置:

$ make oldconfig

在產生核心之前必須運行這個命令。

配 置選項CONFIG_IKCONFIG_PROC指定了完整的核心設定檔壓縮包位置,預設是/proc/config.gz,這樣在產生新核心時要複製 現有的配置就變得非常簡單了。如果你當前的核心開啟了這個選項,你可以從/proc拷貝該設定檔,然後在此基礎上產生新的核心:

$ zcat /proc/config.gz > .config $ make oldconfig

核心配置好後,使用下面的命令進行產生:

$ make

和2.6以前的核心不一樣,在產生核心前不再需要執行make dep命令了,依賴樹會自動維護,也不需要再指定特定的組建類型,如bzImage,或獨立產生模組,預設Makefile規則會自動處理好一切。

將幹擾資訊最小化

在產生過程中會遭到警告和錯誤的幹擾。最小化幹擾資訊的一個訣竅是重新導向make的輸出,但仍然會看到一些警告和錯誤:

$ make > ../detritus

如果你想查看產生輸出,你可以事後閱讀這個檔案,如果你完全不想看到任何輸出,那麼就重新導向到/dev/null:

$ make > /dev/null

同時執行多個產生作業

Make命令提供了一個功能可以將產生過程拆分成多個平行的作業,這些作業可以獨立運行,也可以並行運行,在多處理器系統上可以極大地提高產生速度,也提高了處理器利用率,因為產生大型原始碼樹會出現大量的I/O等待時間。

預設情況下,make只能拆分成一個作業,因為Makefiles常常會包含不正確的依賴資訊,如果真是這樣,多個並存執行的作業將會引起混亂,最終會導致產生過程失敗,如果Makefiles中的依賴資訊無誤,那麼完全可以拆分成多個作業執行,如:

$ make –jn

這裡的n表示拆分的作業數量,通常按每個處理器拆分成1-2個作業,例如,在一個16核心的機器上 ,你可以運行:

$ make -j32 > /dev/null

來自: http://www.360its.com/category/%E6%96%87%E7%AB%A0%E6%A0%87%E7%AD%BE/linux
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.