歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RedHat5.3 升級內核到2.6.33 版本

RedHat5.3 升級內核到2.6.33 版本

日期:2017/2/28 16:36:27   编辑:Linux教程

之前嘗試過將系統升級到2.6.31,結果失敗了,由於工作太緊張,也沒有去繼續嘗試,最近的時間稍微有些空,就又想起來這事情了。到www.kernel.org看了下,最新的內核版本都到2.6.33了,就打算直接升級2.6.33了。

一、環境

使用的Vmware安裝裝的RedHat5.3,下面都是使用的root用戶進行操作

#uname -r

2.6.18-53.el5

二、升級過程

1) 下載內核

升級之前到www.kernel.org看看有沒有最新的內核,目前為止最新的是2.6.33,下載地址是:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.tar.bz2

2) 將linux-2.6.33.tar.bz2拷貝到/usr/local/src目錄下面,使用下面的命令解壓,得到文件夾linux-2.6.33

tar xjvf linux-2.6.33.tar.bz2

3) make distclean

假如是第一次編譯,這一步驟可以省掉的。

4) 復制原有的config文件到linux-2.6.33目錄

#cd /usr/local/src/linux-2.6.33

# cp /boot/config-2.6.18-53.el5 .config

5) make menuconfig

選擇Load an Alternate Configuration File,導入.config文件,更加自己的需要添加功能或者進行精簡。

注:內核配置有兩種方法,一種是直接置入內核* ;另一種是編成模塊M ;兩種方法各有優點;直接編入內核的,比如設備的啟動,不再需要加載模塊的這一過程了;而編譯成模塊,則需要加載設備的內核支持的模塊;但直接把所有的東西都編入內核也不是可行的,內核體積會變大,系統負載也會過重。我們編內核時最好把極為重要的編入內核;其它的如果您不明白的,最好用默認[3]。

修改完畢選擇Save an Alternate Configuration File,然後退出配置。

6) 修改.config文件

在.config文件搜索CONFIG_SYSFS_DEPRECATED_V2,會發現# CONFIG_SYSFS_DEPRECATED_V2 is not set這一行,將該行修改為CONFIG_SYSFS_DEPRECATED_V2=y

假如不修改該行,在升級重新啟動後會報如下的錯,導致啟動失敗

Volume group "VolGroup00" not found

Unalbe to access resume device (/dev/VolGroup00/LogVol00)

mount: could not find filesystem '/dev/root'

setuproot:moving /dev failed: No such file or directory

setuproot:error mounting /proc: No such file or directory

setuproot:error mounting /sys: No such file or directory

switchroot: mount failed: No such file or directory

Kernel panic - not syncing:Attempted to kill init!

7) 編譯內核

#make all

大概需要半個小時到一個小時的時間。

8) #make modules_install

9) #make install

這時候會出現3個警告[2]

WARNING: No module dm-mem-cache found for kernel 2.6.33, continuing anyway

WARNING: No module dm-message found for kernel 2.6.33, continuing anyway

WARNING: No module dm-raid45 found for kernel 2.6.33, continuing anyway

經過測試,這3個警告不會影響內核的升級,參考資料[2]中有相關的說明。

10) 修改initrd文件

假如在升級重啟後會報的錯誤insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits,這是由於initrd裡面的init中加載dm-region-hash.ko這個模塊重復了,因此需要修改生成的initrd文件(不是所有的機器都會出現這個錯),修改的方式如下[1],方法見參考資料1:

a) 解壓initrd

# cp /boot/initrd-2.6.33.img /tmp

# cd /tmp/

# ls

initrd-2.6.33.img

# mkdir newinitrd

# cd newinitrd/

# zcat ../initrd-2.6.33.img |cpio -i

# ls

bin dev etc init lib proc sbin sys sysroot

b) 編輯init,刪掉重復的兩行

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

c) 重新打包initrd

# find .|cpio -c -o > ../initrd

# cd ..

# gzip -9 < initrd > initrd-2.6.33.img

d) 將initrd重新復制到/boot目錄下

#cp initrd-2.6.33.img /boot

11) 重新啟動

啟動成功。

#uname –r

2.6.33

Copyright © Linux教程網 All Rights Reserved