1.准備工作 1.1.確定是否要進行內核升級 通常需要進行內核升級是為了: a.支持新安裝的硬件設備:比如您剛買了一塊新的聲卡,但是當前的內核沒有提供其驅動,而新版本內核可以驅動該聲卡。 b.當前的系統內核被發現有安全漏洞,需要升級到新的版本進行修復。 1.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 1.3.獲取新版本內核rpm包 從FTP://updates.redhat.com/7.1/en/os/i386/獲取以上六個個包的新版本的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,所以就只下載了這個包。 1.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不完整,請重新下載一次,最好使用支持斷點續傳的下載工具進行下載。 1.5.制作應急啟動盤 使用以下命令制作一張系統啟動盤,以便在系統升級失敗後可以啟動及恢復老系統: # mkbootdisk --device /dev/fd0 2.4.2-2 Insert a disk in /dev/fd0. Any information on the disk will be lost. Press <Enter> to continue or ^C to abort: 2.4.2-2是當前的系統內核版本,可以使用以下命令進行確定: # uname -r 2.4.2-2
2.升級內核 2.1.升級非內核rpm包: #rpm –Uvh SysVinit-2.78-17.i386.rpm 2.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%] 2.3.升級內核rpm包: # rpm -Uvh kernel-2.4.3-12.i386.rpm Preparing... ########################################### [100%] 1:kernel ########################################### [100%] 2.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 2.5.更新lilo信息 更新您的lilo.conf文件如下所示: image=/boot/vmlinuz-<新安裝的內核版本號> label=linux root=<您的/分區> initrd=/boot/initrd-<RAM盤的版本號> 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使其生效。然後就可以重新啟動了。