編譯linux核心(2.6.x和3.x都適合)(雖然是轉載,但不是直接複製,是在轉載的基礎上實機確認的)

來源:互聯網
上載者:User

編譯核心

     Linux相對Windows來說,最大的特點是它可以自由的定製核心。核心是一個作業系統的核心,負責管理系統的進程、記憶體、裝置驅動程式、檔案和網路系統,決定著系統的效能和穩定性。Linux核心來源程式存放在/usr/src/kernels/目錄下,在光碟片或網路上找到並安裝即可。如果沒有,可能是安裝系統時並沒有選擇安裝核心代碼。

     初次編譯核心可能會遇到多種問題,此時可以搜尋網路資源求助。編譯核心主要有以下幾步:

1)解壓並進入核心代碼目錄:(核心可以去www.kernel.org網站下載)

#tar -xzvf linux-3.5.4.tar.gz或者tar -xjvf linux-3.5.4.tar.bz2(linux中比較常用的兩種壓縮方式)

#cd linux-3.5.4

首先要確保代碼目錄下沒有不正確的.o檔案以及檔案的相互依賴。

#make mrproper

還要確保/usr/include/目錄下的asm、linux和scsi這三個目錄串連是指向要升級的核心原始碼。他們分別指向電腦體繫結構所需要的原始碼目錄下真正的include子目錄。如果沒有這些串連就要手工建立:

#cd /usr/include/

#rm -r asm linux scsi

#ln -s /usr/src/kernels/linux-3.5.4/arch/x86/include/asm asm(通常很多文章都寫成/usr/src/kernels/linux-3.5.4/include/asm,其實這種寫法只能針對老版本,新版本如2.6和3.x都把這個asm放到了arch這個目錄了)

#ln -s /usr/src/kernels/linux-3.5.4/include/linux linux

#ln -s /usr/src/kernels/linux-3.5.4/include/scsi scsi

這是配置中非常重要的一部分,刪除掉/usr/include下的asm、linux和scsi串連後,再建立新的串連指向新核心原始碼目錄下同名的目錄。這些標頭檔目錄包含著保證核心在系統上正確編譯時間所需要的標頭檔。

2)使用下面的命令配置核心:

#make menuconfig

在編譯核心時,最繁瑣的就是核心的配置工作。配置時,大部分都可以使用其預設值,只有小部分需要根據使用者的不同需要選擇。選擇的原則是:將與核心其他部分關係比較遠且不經常使用的部分功能代碼編譯成可載入模組,不需要的功能就不要選,與核心關係緊密且經常使用的部分功能代碼直接編譯到核心中。

(3)配置好核心後,接下來就是編譯。與編譯有關的命令有下面一些:

#make dep(在2.6核心,不用執行這一步)

#make clean(ok)

#make zImage(make: *** No rule to make target `zImage'.  Stop.現在老是提示這個錯誤,其實這個原因很簡單,新的核心(2.6和3.x)已經不再支援make zImage這個命令,希望查看make 支援哪些產生鏡像的命令,可以通過make help來查看)

#make bzImage(ok)

#make modules(ok)

#make modules_install(ok)

#depmod -a

第1個命令make dep實際上讀取配置過程產生的設定檔。來建立對應於配置的相依樹狀結構,從而決定哪些需要編譯而哪些不需要;(新核心(2.6和3.x)已經不再使用這個命令)

第2個命令make clean完成刪除前面步驟留下的檔案,以避免出現一些錯誤。

第3個命令make zImage和第4個命令make bzIamge實現完全編譯核心,二者產生的核心都是使用gzip壓縮的,只要使用一個就夠了,他們的區別在於使用make bzImage可以產生大一點的核心,建議使用make bzImage命令。

後面3個命令是有在進行配置的過程中,在回答Enable loadable module support(CONFIG_MODULES)時選了Yes才是必要的,make modules和make modules_insatll分別產生相應的模組和把模組複製到需要的目錄中。

嚴格的說,第7個命令和編譯過程並沒有關係,他是產生模組間的依賴關係,這樣啟動核心之後,是用modprobe命令載入模組時就能正確定位模組。

(4)更新核心。現在已經得到了新版本的核心,為了使用新核心,還要作下面的改動:

#cp /usr/src/linux/System.map /boot/System.map-(版本號碼)

#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-(版本號碼)

以上這兩個檔案是剛才編譯時間新產生的。下面修改/boot下的兩個串連System.map和vmlinuz,使其指向新核心的檔案:

#cd /boot;rm -f System.map vmlinuz

#ln -s vmlinuz-(新核心版本號碼) vmlinuz

#ln -s System.map-(新核心版本號碼) System.map

現在就可以使用新核心了。

轉載自http://www.cnblogs.com/276815076/archive/2010/09/29/1838719.html

相關文章

聯繫我們

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