1. 程式人生 > >linux升級核心

linux升級核心

Linux 2.6核心編譯比以前方便多了,本文描述了在FC8下升級linux核心為2.6.25的詳細步驟. 

1. 首先從如下網址得到linux-2.6.25.
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2
2. 然後在/usr/src下untar這個包.
tar -xjfv linux-2.6.25.tar.bz2
3. 配置核心
cd /usr/src/linux-2.6.25
make mrproper(刪除一些stable的檔案,針對剛download下來的包這一步沒必要)
make menuconfig(以選單的方式顯示, 可以定製Linux模組, 在選單頂部有命令幫助)

3. 編譯核心
make (這一步花的時間最多,我用了將近40分鐘)
make modules_install
make install(系統將會把vmlinuz和System.map複製到/boot目錄下同時修改grub)
在2.6以前需要make bzImage make modules, 而且還需要將vmlinuz和System.map複製到/boot目錄.
要想得到更詳細關於編譯的描述, 可以參考/usr/src/linux-2.6.25的README. 每個Linux核心的發行都有這個檔案.
4. 重啟機器
shutdown -r now
這樣在開始的grub選單裡你可以選擇用新的核心來啟動linux
如果啟動時遇到這個錯:

"Enforcing mode requested but no policy loaded. Halting now."
Kernel panic: Attempted to kill init! 
可以用如下方法解決:
Try adding enforcing=0 to your grub.conf. 
kernel /boot/bzImage-2.6.5 ro root=/dev/hda5 enforcing=0
或者在/etc/selinux/config檔案中,將SELINUX的值設為disabled.
說明:
1. 本文摘自紅聯上的文章,感謝作者。
2. 我們不是發燒友,動就升級,F8核心已經是2.6.23.1-42,升到2.6.25也沒那個必要,不過,現在的Linux發行版本都不帶原始碼包的,所以做驅動開發的下個原始碼包編譯安裝是有必要的,所以我也下了當時最新版2.6.25,在開發板上移植我也用該版本。

3. make menuconfig的時候,根據自己的需要選擇,不清楚就預設即可
4. shutdown -r now 之後我可以在開始的grub選單裡選擇用新的核心來啟動linux,沒有遇到上述錯誤,系統正常執行。
5. 我解壓編譯後的linux-2.6.25檔案達到1.7G左右,交叉編譯到開發板則538.6M這樣,所以感覺當初裝系統的時候分配給系統檔案的9G還小了點。如果/ 下的空間不夠,那麼啟動系統的時候會出現“xx應用程式即將崩潰”,進入命令列下把一些檔案刪掉即可。
P.S.
Cross_compile_Tool_chain: gcc 4.2.3
http://www.codesourcery.com/gnu_toolchains/arm/download.html