使用RPM包對RedHat進行核心升級(轉)

BSDLite發表於2007-08-11
使用RPM包對RedHat進行核心升級(轉)[@more@]概述:本文討論在RedHat中使用RedHat提供的核心rpm包手工進行核心升級的方法。將以在RedHat7.1中從2.4.2升級到2.4.3為例進行說明。

一、準備工作

1.確定是否要進行核心升級
通常需要進行核心升級是為了:
a.支援新安裝的硬體裝置:比如您剛買了一塊新的音效卡,但是當前的核心沒有提供其驅動,而新版本核心可以驅動該音效卡。
b.當前的系統核心被發現有安全漏洞,需要升級到新的版本進行修復。

2.確定所需下載的rpm包
首先透過以下命令確定系統當前所安裝的核心包:
# rpm -qa | grep kernel
kernel-source-2.4.2-2
kernel-headers-2.4.2-2
kernel-2.4.2-2

我們需要下載這三個包的新版本,以及以下三個非核心包的新版本:
[root@test update]# rpm -qa | grep init
initscripts-5.83-1
mkinitrd-3.0.10-1
SysVinit-2.78-17

3.獲取新版本核心rpm包
從獲取以上六個個包的新版本的rpm包,也就是:
kernel-source-2.4.3-12.i386.rpm
kernel-headers-2.4.3-12.i386.rpm
kernel-2.4.3-12.i386.rpm
SysVinit-2.78-17.i386.rpm
因為當前RedHat只發布了SysVinit-2.78-17.i386.rpm,所以就只下載了這個包。

4.檢驗新版本核心rpm包
為了保證下載過程不出錯,使用以下命令對下載的包進行校驗:
# rpm -K --nogpg *rpm
kernel-2.4.3-12.i386.rpm: md5 OK
kernel-headers-2.4.3-12.i386.rpm: md5 OK
kernel-source-2.4.3-12.i386.rpm: md5 OK
SysVinit-2.78-17.i386.rpm: md5 OK

如果校驗結果為OK,說明傳輸過程沒問題,所下載的rpm包是完整的。就可以接著做下一步,如果rpm不完整,請重新下載一次,最好使用支援斷點續傳的下載工具進行下載。

5.製作應急啟動盤
使用以下命令製作一張系統啟動盤,以便在系統升級失敗後可以啟動及恢復老系統:
# mkbootdisk --device /dev/fd0 2.4.2-2
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:
2.4.2-2是當前的系統核心版本,可以使用以下命令進行確定:
# uname -r
2.4.2-2

二、升級核心
1.升級非核心rpm包:
#rpm –Uvh SysVinit-2.78-17.i386.rpm

2.升級核心原始碼rpm包:
# rpm -Uvh kernel-source-2.4.3-12.i386.rpm kernel-headers-2.4.3-12.i386.rpm
Preparing... ########################################### [100%]
1:kernel-source ########################################### [ 50%]
2:kernel-headers ########################################### [100%]

3.升級核心rpm包:
# rpm -Uvh kernel-2.4.3-12.i386.rpm
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]

4.重新配置初始化RAM盤
如果系統中有SCSI裝置,並且正在使用SCSI裝置驅動模組,則必須重新配置初始化RAM盤,如果沒有SCSI裝置,可以直接跳到第5個步驟。

判斷系統中是否有SCSI裝置驅動模組的方法:
# more /etc/modules.conf |grep scsi
alias scsi_hostadapter megaraid
alias scsi_hostadapter1 sym53c8xx
alias scsi_hostadapter2 sym53c8xx

也即,如果這個命令有輸出時,表明您的系統正在使用SCSI裝置驅動模組,這時我們就必須重新配置初始化RAM盤。

所謂的RAM盤通常是用來駐留模組的,這些模組必須在核心訪問相關裝置(通常是SISC裝置)前載入RAM盤中。

首先,檢視/boot下的檔案,以獲取剛才安裝的核心版本:
# ls -l /boot/
total 3408

-rwxr-xr-x 1 root root 2174722 Jun 9 01:57 vmlinux-2.4.3-12
lrwxrwxrwx 1 root root 16 Jul 26 22:56 vmlinuz -> vmlinuz-2.4.3-12

可見,我們新的核心版本是2.4.3-12,我們使用以下命令來建立新的RAM盤:
#mkinitrd initrd-2.4.3.img 2.4.3-12

5.更新lilo資訊
更新您的lilo.conf檔案如下所示:
image=/boot/vmlinuz-
label=linux
root=
initrd=/boot/initrd-
read-only
我的機器上的lilo.conf更新檔案如下:
# more /etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
linear
default=linux

image=/boot/vmlinuz-2.4.3-12
label=linux
read-only
root=/dev/hda1
更新完成後,別忘了執行lilo使其生效。然後就可以重新啟動了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947170/,如需轉載,請註明出處,否則將追究法律責任。

相關文章