公升級linux2 4 20核心到2 6 18

2021-05-22 01:59:26 字數 3561 閱讀 7379

本文記錄了我在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...