Linux核心編譯

來源:互聯網
上載者:User

 

如何編譯Linux核心? 相信你會得到很多種不同的答案,而我在寫此文章之前,總是獲得一些編譯錯誤的結果。

如何你總是遇到編譯錯誤或者失敗,其實很多情況下是你下載的核心版本的問題,就是在高版本GCC中編譯低版本的核心,造成編譯失敗。如果你對編譯核心一悉莫展,在網上Google到很多種編譯方法,但都失敗的情話。倒不如看看核心的README文檔,或者在核心目錄下運行make help。它將會告訴許多你所不知的秘密。

1. Linux系統編譯核心的通用方法

核心代碼中的README檔案對編譯過程有非常 詳細介紹,下而介紹的方法是Linux核心通用的編譯方法,它是Makefile檔案已定義好的編譯過程。

  1) 下載原始碼(以2.6.28為例)

  wget  http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.1.tar.gz

  2) 解壓,並把它放到/usr/src/目錄下

   gzip -d linux-2.6.28.1.tar.gz

   tar -xvf linux-2.6.28.1.tar

  mv -rf linux-2.6.28.1 /usr/src

  3) 在/usr/src/建立一個軟連結到linux-2.6.28.1目錄 

  cd /usr/src

  ln -s linux-2.6.28.1 linux

  cd linux

 4) 清理原始碼(如果是之前已產生一些中間檔案可運行此命令,否則不必了)

   make mrproper

 5) 產生config檔案

  cp /boot/config-`uname -r` ./.config

  make menuconfig

  在make menuconfig的配置介面中,先選擇Load config file, 把該才拷貝的檔案載入進來再進行修改,修改完成後,直接選Exit,然後在提示中選擇保當前設定檔。

 6) 編譯

 make

 7)  安裝模組

  make modules_install

 該命令會把模組及相關檔案放到目錄/lib/modules/2.6.18.1/下,並不會與當前核心產生衝突,除非核心版本是一樣的。

  8)安裝核心

  make install

 該命令會把核心相關檔案(bzImage, initrd.img,System.map .config)放到/boot/目錄下,檔案名稱均帶有核心版本名,與其它版本相關區別。

 如果系統安裝了LILO,它會自己把該核心的啟動加進來。如果是grub程式,那要看情況而定。我在Fodera系統中,它會自動添加該啟動項到/boot/grup/menu.lst檔案中,而在Ubuntu中則不會,需要手動添加。添加完也,即可重啟進行新核心。

2. Ubuntu核心編譯方法。

      上面介如的通常方法適合於所有的Linux系統,Ubuntu也不例外。Ubuntu同樣提供了編譯核心的方法。而且方法非常簡單,把上述第6)和7)步換成下面這一命令即可。

  make-kpkg --initrd --append-to-version <your_tag> kernel_image kernel_headers

  其中<your_tag>是你給核心名字在版本號碼的基礎上加上你指定的字串,如果你打算直接使用核心版本號碼作為核心名字,則把--append-to-version和它的參數從命令列中去掉。個人建議你不要使用該選項,因為核心名字就是uname -r的運行結果,使得有時編譯新的模組程式時,uname -r 和 make kernelrelease結果不一致。

該命運行完畢後,產生兩個deb包,其它一個是核心和模組的包;另一個是標頭檔的deb包。如果不需要,可在命令列上把kernel_header去掉。

安裝核心變異常簡單,只需安裝一個產生的核心映象的deb包。使用如下命令:

dpkg - i  linux-image-2.6.28.1_2.6.28.1-10.00.Custom_i386.deb

安裝完後,所有的事情也就完成了,連/boot/grub/menu.lst的啟動功能表項目都修改好了,你所要做的事情就是重啟系統而已。

  使用這種方法的好處是不言而喻的:你只需要在一台Ubuntu上編譯好一個較新的核心,就可以在整個實驗室中升級,何樂而不為呢?

3. Fodera 核心編譯方法

   很抱歉,目前還未有找到很準確的Fodera核心編譯方法,後面會補上。但這裡介紹的方法仍然適後Fodera系統,那就是象Ubuntu一樣,把核心編譯成為一個rpm包。而且非常簡單,只需把上面的第6)和7)步換成下面的命令:

  make rpm-pkg

 運行完後,核心rpm包位於目錄/usr/src/rpm/RPMS/i386/kernel-2.6.28.1.i386.rpm下,使用rpm -i
kernel-2.6.28.1.i386.rpm
命令即可安裝。

 安裝rpm完成後,請檢查/boot/grup/menu.lst檔案是否有新核心的啟動,若否請手工添加。

 

聯繫我們

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