編譯Linux核心:基於Fedora 10的Linux核心編譯__Linux

來源:互聯網
上載者:User

編譯Linux核心是核心開發的基本功,如果我們通過直接修改Linux核心代碼來增加核心功能,那麼修改後的核心代碼必須要重新編譯產生新的映像檔案,然後載入該映像檔案便可以啟用新核心。

 不同的Linux發行版本,其核心編譯過程會有所不同。這裡所用平台是Fedora 10,Linux kernel為2.6.27.5,待編譯的Linux kernel為2.6.27.39。此處僅僅是編譯一個乾淨的核心並且載入成功,而並不對核心進行修改。

第一步:下載核心

一般情況下,待編譯的核心(即新核心)的版本不能低於正在啟動並執行版本,如果兩者版本差距較大,則可能需要更新如gcc,binutils之類的編譯工具。這裡只採用Linux發行版所對應的核心版本進行編譯,這樣所有核心編譯工具都是現成的,無須更新。

1)、先查看當前環境下的核心版本號碼

#uname –r

2.6.27.5-117.fc10.i686

2)、下載相應的核心壓縮包

網址:http://www.kernel.org/pub/linux/kernel/v2.6/(筆者選擇的是2.6.27.39.tar.bz2)。將核心壓縮包複製到Linux下某個目錄,如/usr/src。

筆者是在XP系統中先下載壓縮包,然後將其複製到Linux的目錄中。這樣操作不能直接將壓縮包複製到Linux的/usr/src目錄下,只能先將其複製到Linux案頭,然後用cp命令將壓縮包複製到Linux的/usr/src目錄下。

3)、解壓縮包產生代碼樹/usr/src/linux-2.6.27.39

指令如下:

 #cd /usr/src

 #tar jxvf linux-2.6.27.39.tar.bz2

#cd linux-2.6.27.39

說明:如果選擇的壓縮包尾碼是.gz,上3)中的第二條指令中的jxvf應換成zxvf。

第二步:產生核心設定檔.config

Linux核心代碼非常龐大,使用於許多體繫結構,包含大量驅動程式。在產生核心的時候要根據實際情況進行配置,所有的配置將儲存在核心代碼樹頂級目錄下的一個名為.config的設定檔中。

 1)、複製設定檔範本

設定檔可以從頭開始產生,一般沒這必要,因為當前正在啟動並執行核心已經有對應的設定檔,在/boot目錄下。將其做模板複製到/usr/src/linux-2.6.27.39目錄下:

#make mrproper

#cp /boot/config-‘uname –r’ ./.config

命令“make mrproper”用來保證核心樹是乾淨的,如果核心樹已經編譯過,該命令有效;如果核心樹第一次編譯,則可以省略該命令。命令“cp /boot/config-‘uname –r’ ./.config”中“‘uname –r’”代表2.6.27.5-117.fc10.i686,“./.config”中前一點表示將拷貝放置在開頭進入的預設目錄(即/usr/src/linux-2.6.27.39)中,並將其命名為.config的隱含檔案。

2)、產生新核心的.config設定檔

拷貝後雖然有了模板,但是.config檔案的配置並不一定囊括了新核心的所有編譯選項,可以使用下面的命令:

 #make oldconfig或#make silentoldconfig

命令“#make oldconfig”讀取.config檔案並根據新核心版本更新它。具體是:該命令輸出新核心所有的配置值,如果配置項在.config中有設定,則輸出設定值;如果是新項,程式會暫停要使用者輸入設定值。命令“#make silentoldconfig”和命令“#make oldconfig”功能相似,但他不輸出資訊,除非是新選項要求使用者輸入的時候。

到此,產生的.config檔案就可以使用了。

第三步:編譯和安裝新的核心

1)、可以定義自己的核心版本號碼

在編譯核心之前,使用者可以定義自己的核心版本號碼,這樣做目的是為了便於識別。在核心代碼樹的根目錄下有檔案Makefile,它的前4行的最後一行“EXTRAVERSION=.39”中的值.39可以修改。(當然可以對Makefile檔案不做任何處理)

2)、編譯新核心

執行下面三個命令:

#make all

#make modules_install

#make install

命令“make all”用於產生期望的核心映像及模組;“make modules_install”將安裝模組到“預設目錄/lib/module/<核心版本號碼>”下面;“make install”最終將核心映像等幾個檔案複製到“/boot”目錄,並修改引導程式的配置以啟用該新核心。這三個命令一定要執行成功。

說明:對於雙核處理器,命令“make all”可改用“make -j2 all”以加快速度。

3)、可以修改引導程式GRUB

如果上述三個命令均執行成功,使用者可以觀察到引導程式grub的設定檔/boot/grub/menu.lst並將其進行合理修改配置。開啟menu.lst的方法之一是:

#gedit /boot/grub/menu.lst

說明:1、命令“gedit /boot/grub/menu.lst”只是用gedit開啟設定檔menu.lst,其他還可以用eamcs,vim,cat,tail等。

           2、為了以後能直接操作菜單,可把menu.lst檔案中hiddenmenu那一行注釋掉(前加#)或刪除,並且可以根據需要設定其中的default和timeout的值,分別表示預設啟動項及等待時間。

4)、重啟查看

用命令#reboot重啟系統就可以看到GRUB菜單已經包含了新編譯的核心。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.