linux核心編譯學習筆記

來源:互聯網
上載者:User

                            linux核心編譯學習筆記

作者:laomai

首頁:http://blog.csdn.net/laomai

一、實驗環境
    一台工控機,帶有光碟機。裝有redhat linux es3作業系統。最小安裝,
即在選擇軟體的時候什麼都不選.

本文參考資料:
 http://www.uplinux.com/www/sys/01/77.shtml
 http://tristones.viaspeip.com/archives/000209.html
 
二、查看當前的系統配置
1、查看核心版本號碼
#uname -a
2、查看目前已裝入的模組
#lsmod

3、安裝編譯時間所需工具(gcc、make和ncurse)
 cpp-3.2.3-20.i386.rpm 
 glibc-devel-2.3.2-95.3.i386.rpm
 glibc-headers-2.3.2-95.3.i386.rpm
 glibc-kernheaders-2.4-8.34.i386.rpm
 gcc-3.2.3-20.i386.rpm
 make-3.79.1-17.i386.rpm
 ncurses-devel-5.3-9.3.i386.rpm

三、編譯前準備
1、獲得核心原始碼。有幾種方式
 ⑴我實驗用的是as3第三張安裝光碟片的 kernel-source-2.4.21-4.EL.i386.rpm
 ⑵最新的核心版本到http://www.kernel.org/下載
 
2、安裝核心代碼
 rpm -ivh kernel-source-2.4.21-4.EL.i386.rpm
3、清除以前編譯核心時留下的東西 
 cd /usr/src/linux-2.4   #進入核心源碼所在目錄
 make mrproper           #進行清理

四、設定核心選項
 執行 #make menuconfig  
1、選項的配置辦法
 執行make menuconfig以後,會出現一個主菜單,用方向鍵選擇功能表項目,如果選擇了某一個還有子功能表的項(以-->結尾),按斷行符號鍵回進入下級子功能表.
 選項的配置形式:
  按Y,表示以build-in的方式包含,也就是把選項整合到核心裡.
   對應的表徵圖為[*]或<*>,
  按N,表示不包含。對應的表徵圖為[ ]或< >
  按M,表示以模組的形式包含,對應的表徵圖為<M>. 注意不是所有的選項都可以用模組形式載入的

2、選項的狀態表徵圖  
 每個選項設完之後會顯示一個狀態表徵圖,只能是下面5種之一 
 [*] - built-in表示這個選項被整合在核心裡了
 [ ] - excluded 表示這個選項被核心排除了
 <M> - module 表示這個選項以模組的形式放在核心裡,
  使用者用到這個選項的時候要執行insmod命令.
  要注意不是所有的選項都可以以模組的形式載入的。
  所以當你按了m鍵,表徵圖仍然是[*]而不是<M>時,就要
  明白這個選項只能要麼整合在核心裡,要麼被核心排除。
 < > - module capable,表示這個選項雖然被排除了,但
  可以以模組的形式被重新載入,比如,一個表徵圖為<M>的
  選項,按N鍵以後狀態就會變成< >.
 <*> - 這個表徵圖協助沒寫,當實際上會出現,比如,按某個選項狀態為<M>
    或者< >時,按Y鍵,表徵圖就會變成這個,意思和[*] 一樣,把可以用模組
    載入的選項變成build-in方式載入。
   
  歸納一下就是: 括弧裡如果為空白,則該選項未被載入;
  如果括弧裡是*,是以build-in的方式載入;
  如果中間是m(此時只能是角括弧),就是以模組的形式動態載入.

3、選項的具體含義
 每個具體選項的含義可以按H鍵得到協助,本文的主要是講清楚實驗步驟,
 所有選項均取預設值。
 4、儲存設定
 設定完需要的選項後按ESC鍵退出menuconfig,此時會提示是否儲存,選yes.

五、開始編譯
1、設定關聯檔案
  #make dep   
2、編譯核心(也就是編譯build-in的東西),我的機器用了大概10分鐘(奔4+512記憶體)
  #make bzImage
3、編譯模組  這個時間比較長,我用了大概1個小時
  #make clean
  #make modules
4、安裝模組
  #make modules_install
5、檢查結果
   #depmod –a
檢查核心中有沒有未解析的symbol,它是產生模組間的依賴關係,
這樣啟動新核心之後,使用modprobe命令載入模組時就能正確地定位模組。
假如輸入這個命令後看不到沒有任何返回資訊的話,那說明編譯過程已經成功了。

6、安裝完整新核心
  #make install

六、用新核心啟動
1、檢查/etc/lilo.conf檔案
   可以看到新編譯的核心已經增加到啟動菜單了。
2、執行 /sbin/lilo   使新的啟動設定生效
3、重起機器,觀看啟動菜單,多了一項,說明成功!

 

七、致謝

    在學習編譯核心的過程中得到了水晶劍鋒、刀子、苯熊、小二等餅子堂朋友的指點和協助

,在此謝過。
 

相關文章

聯繫我們

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