Linux核心裁減及根檔案系統定製(之一)——–Linux核心裁減[z]

來源:互聯網
上載者:User

Linux核心裁減及根檔案系統定製(之一)--------Linux核心裁減
目錄:

一、核心編譯

二、根檔案系統定製

三、核心選項說明

 

一、核心編譯

1、  準備工作

(1)       整理出系統需要支援的硬體、檔案系統類型以及網路通訊協定等內容。

(2)       建議用命令uname –r 查看一下系統的版本號碼,如果你的系統版本與將要編譯的核心版本一致,建議將/lib/modules下的內容備份,否則將來的make modules_install 步驟產生的檔案會覆蓋這個路徑下的內容。

(3)       下載並解壓linux核心,建議從http://www.kernel.org/pub/linux/kernel/ 下載核心,因為安裝系統時所安裝的原始碼預設情況下支援很多裝置,這樣給核心裁減增加了難度。以下假設你已經下載了核心的為linux-x-y-z.tar.gz。一般都將linux核心原始碼放在/usr/src下,這裡仍然遵守這個習慣,如果你的這個路徑下已經存在這個版本的核心,建議將已有的改個名稱。

2、  開始編譯

(1)       make mrproper

確保原始碼目錄下沒有不正確的.o檔案和檔案依賴關係,執行該命令後,核心選項會回到預設的狀態下。如果你是下載的核心源碼,而且是第一次編譯,就沒有必要執行這一步操作

(2)       make menuconfig

以文本菜單方式選擇核心選項(與它功能相同的命令還有make config;make xconfig;make oldconfig),不同版本的核心,選項可能會有一些差異。

這一步是核心編譯的關鍵,根據需要支援的硬體、檔案系統和協議等內容,選擇不同的選項。配置選項時,有三種選擇方式,它們代表的含義如下:

 

   Y-將該功能編譯進核心

 

   N-不添加功能

 

   M-將該功能編譯成模組,在需要時動態載入到核心

選擇的原則是與核心關心緊密而且經常使用的部分功能代碼直接編譯到核心中;將與核心系較遠且不經常使用的部分功能代碼編譯成為可載入模組,有利於減小核心的長度,減小核心消耗的記憶體,簡化該功能相應的環境改變時對核心的影響;不需要的功能就不要選。

我們使用空格鍵進行選取。根據選項的不同,按下空格鍵的結果也有所不同:選項後有”―――>”符號的,進入下一級菜單;選項前有中括弧的,則在空和"*"之間切換;選項前有角括弧的,在空、"*"和"M"之間切換;選項前有圓括弧的,需要在所提供的幾個選項中選擇一項,或者需要輸入數值等符號。

 

咦,什嗎?要我詳細介紹具體該怎麼選擇這些選項?大汗!這可是個大問題,需要根據不同的需求進行選擇,比如需要支援USB鍵盤、滑鼠或/和儲存空間,支援多CPU,支援網卡,串口,支援TCP協議,ext2檔案系統,nfs檔案系統等等。後面我將就核心選項做詳細的介紹。

(3)       make dep

根據上一步所選擇的選項,建立檔案的依賴關係。

(4)       make clean

清理一些不必要的檔案,如果你在上次編譯的基礎上,刪去了一些選項,建議你執行這一步操作,否則,就沒有必要了。

(5)       make bzImage

產生核心壓縮檔。如果你確認你的核心在640K以下,你可以用make zImage來代替 make bzImage。這一步相當費時,你可以在命令後加上&,讓其在後台執行,或者重新導向到/dev/null中,這樣你就什麼也看不見螢幕上閃過不停的字元啦。編譯出的核心在 ./arch/i386/boot/ 下,檔案名稱為bzImage

(6)       copy "/usr/src/linux/arch/i386/boot/bzImage  /boot/vmlinuz-x.y.z

(7)       make modules

編譯可載入模組(即核心選項中選擇為M的選項),編譯時間跟M選項的數量有關。

(8)       make modules_inatall

將編譯好的modules拷貝到/lib/modules下,這就是為什麼在“準備工作”的第三步提醒你備份的原因了。

(9)       cp /usr/src/linux/System.map /boot/ System-x.y.z.map

3、  修改啟動設定檔

現在大多數使用的都是grub啟動,需要修改/boot/grub/grub.conf,添加相應的啟動資訊,新增內容的最簡單格式如下:

title 顯示在啟動菜單上的名稱

root 根檔案系統掛載分區

kernel 壓縮過的核心檔案名稱

initrd 根檔案系統檔案名稱

              如:

              title My new kernel

              root (hd0,2)

              kernel /boot/vmlinuz-x.y.z

              initrd /boot/initrd-x.y.z.img

 

題外:

1、  現在才發現,自己理解了和把理解的東西寫出來,還是有區別的,以後還得勤奮點,多寫寫。

2、  其實這些東西,在google可以搜一大堆,我只是根據自己的理解,將其最本質的東西整理出來,方便查閱。

3、  寫本篇的目的在於前段時間做核心裁減,一直想做個結,上星期一來勁,就把題目列了出來,沒有騙人或者打免費廣告的意思,剩餘內容也將在以後抽空陸續貼出。

4、  感謝你關注本站,希望你能留下意見和建議,但請不要用轉頭拍我,要拍就用RMB好啦, :--)。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=554368

相關文章

聯繫我們

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