本文記錄了我在winxp下的vmware5.5.3虛擬機器中公升級linux2.4.20核心到2.6.18的過程。
飄揚的這篇文章寫的很詳細,只是個別地方還有瑕疵,
本文主要就是以該文為藍本,修正了原文中的一些錯誤,
並加入了編譯圖示的詳細說明。
2、我自己以前寫的核心編譯過程筆記。
一、安裝linux系統並登陸
1、安裝linux redhat 9,最小安裝,grub啟動,具體步驟略。
2、啟動linux系統,並用root使用者登入,進入終端模式下。
以後未加說明時下面帶#號的行都是要輸入的命令列,
且本文提到的所有命令列都在終端裡輸入。
3、檢視核心版本
# uname -a
如果螢幕顯示的是2.6.x,說明你的已經是2.6的核心,
也用不著看下文了,該幹什麼幹什麼去吧!
~~~如果顯示的是2.4.x,那恭喜你,闖關通過,趕快進行下一步。
2.1 安裝開發工具包,主要包括
gcc、make、ncurse,依次執行如下命令
#rpm -ivh binutils-2.13.90.0.18-9.i386.rpm
#rpm -ivh cpp-3.2.2-5.i386.rpm
#rpm -ivh glibc-kernheaders-2.4-8.10.i386.rpm
#rpm -ivh glibc-devel-2.3.2-11.9.i386.rpm
#rpm -ivh gcc-3.2.2-5.i386.rpm
#rpm -ivh ncurses-devel-5.3-4.i386.rpm
最後乙個ncurse開發庫如果不裝,在編譯module-init-tool時會報錯。
四、編譯工作
ok,繁雜的配置工作完成了,至此,編譯前的準備工作都做好了!
4.1、開始編譯啦……
在/usr/src/linux-2.6.18目錄下,執行以下命令即可編譯。
# make dep (建立編譯時所需的從屬檔案。注意:如果核心從未編譯過,此步可跳過)
# make clean (清除核心編譯的目標檔案。注意:如果核心從未編譯過,此步可跳過)
# make bzimage (注意大小寫。這一步才是真正編譯核心,也就是編譯built-in的東西)
這一步時間較長,我的機器是1個小時左右。
核心編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成乙個新核心的映像檔案bzimage。
如果用 make zimage編譯,核心很大的話,系統會提示你使用make bzimage命令來編譯,
所以直接用make bzimage來編譯。
# make modules (編譯可載入模組)
這一步時間也不短,我的機器用了半個小時
# make modules_install (安裝可載入模組)
安裝成功後,系統會在/lib/modules目錄下生成乙個2.6.18子目錄,裡面存放著新核心的所有可載入模組。
#make (這一步也要進行,不然執行下面的make install時會報錯)
#make install (安裝新核心)
注意:make install的時候可能會出現如下錯誤資訊:
no module buslogic found for kernel 2.4.12
mkinitrd failed
此問題一般只出現在scsi硬碟+vmware+redhat架構中,
因為buslogic被編譯進了核心而不是乙個module的形式
(2.4核心的buslogic模組即使靜態編譯進核心也不行)。
解決方式是直接將buslogic.o檔案複製過去:
#cp /usr/src/linux-2.6.18/drivers/scsi/buslogic.o /lib/modules/2.6.18/kernel/drivers/scsi
不過別忘記,複製過後再執行一下make install。
這一步若卡住了,下面的都無法進行
五、啟動新核心
5.1、將新核心和system.map檔案拷貝到/boot目錄下,依次執行以下命令:
# cp /usr/src/linux-2.6.18/arch/i386/boot/bzimage /boot/vmlinuz-2.6.18
# cp /usr/src/linux-2.6.18/system.map /boot/system.map-2.6.18
# cd /boot (進入boot目錄)
# rm –rf system.map (刪除原來的連線)
# ln –s system.map-2.6.18 system.map (重新建立連線)
5.2、修改grub啟動管理器
如果沒有錯誤的話, 下面開始修改grub配置檔案
在/boot目錄下,執行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18
(這時候你的/boot下會生成乙個initrd-2.4.18.img,並且你的grub.conf檔案也作了相應更改)
# df
(檢視根目錄在那個分割槽,下一步要用到。注意,這裡根分割槽不時boot的那個50m的分割槽,
而一般是你最大的那個分割槽,也就是「/」對應的物理裝置名,千萬不要搞錯哦。我的為 /dev/hda2)
# vi /grub/grub.conf
進入grub.conf檔案,找到如下資訊:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title red hat linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root= label=/
initrd /initrd-2.6.18.img
做兩處修改:
(1) 將default=1改為default=0(不改的話也可以,只不過重啟之後會預設進入2.4核心)
(2) 將kernel行的「label=/」換成根目錄所對應的裝置名(上一步用df檢視的就是)
此步很重要,修改錯誤將可能導致進不去系統,我把我修改後的grub.conf檔案列出來,不明之處,可以對照修改:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title red hat linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/hda2
initrd /initrd-2.6.18.img
title red hat linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=label=/
initrd /initrd-2.4.20-8.img
5.3,趕快重啟,看看公升級後的2.6核心吧,ok,大功告成
公升級linux核心到2 6 24
以下為正文 序 言 一 準備工作 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。啟動linux系統,並用根使用者登入,進入終端模式下。1 檢視linux核心版本 uname a 如果螢幕顯示的是2.6.x,說明你的已經是2.6的核心,也用不著看下文了,該幹什麼幹什...
CentOS公升級核心到2 6 27 46
想用kvm,而不太想用xen,折騰來折騰去,最後決定公升級核心。先到 linux kernel http www.kernel.org 找乙個穩定的版本,我選了2.6.27.46 安裝的過程很簡單,1,準備 tar jxvf linux 2.6.27.46.tar.bz2 c usr src cd ...
debian公升級核心到2 6 31 1
折騰了一天,終於把debian的核心從2.6.18公升到了2.6.31,期間甚是坎坷啊。cd linux 2.6.31.1 cp boot config 2.6.18 4 686 config 這時才發現生成核心的幾個工具 make kpkg和mkinitrd都還沒有 apt get install...