聯系作者:ols3@www.tnc.edu.tw
更換 Linux 核心是每一位 Linux 主機管理者經常要面對的問題, 本文將一些文件串聯在一起, 供各位參考
更換 Linux 核心(Kernel) 對剛接觸 Linux 管理者而言, 多少會覺得有點困難; 其實只要試個幾次, 很快地, 您就會感到駕輕就熟.
早期更換 Linux Kernel 只有采用原始碼編譯一途, 近幾年由于套件管理模式大行其道, 因此又多了另一新選擇, 其中 RPM 是最為流行的方式之一.
注意! 不管您打算采用那一種方式, 您都應該先做好一開機片, 以防萬一
制作開機片的方法如下:
1.uname -r
比如出現以下訊息
2.4.18-10
2.將它放在以下指令之后, 此時請放入一片空白磁片:
mkbootdisk --device /dev/fd0
完整指令為:
mkbootdisk --device /dev/fd0 2.4.18-10
接著您便可以安心來做核心的更換工作了.
以下先介紹原始碼編譯安裝的方法:(by OLS3 技術文件)
一. 原始碼 Kernel 重制:
流程:
1.先至 ftp.tnc.edu.tw/sysop/Linux-kernels/
或 http://www.kernel.org 去下載 Linux 核心
其中, 版本代碼 2.4 開頭者為穩定版(建議), 2.5 為實驗版(不建議).
2.設定 kernel 選項
3.編譯 kernel
4.編譯 modules, 安裝 modules
5.安裝 kernel
6.設定 boot loader
7.重新開機
步驟:
1.cd 您解壓后的目錄下的 linux 目錄中
2.make mrproper
3.make xconfig (menuconfig 或 config), 它會存成 .config
這個步驟是最困難的, 因為您必須了解很多個選項的意義才行! 這個部份也是必須充份練功的地方!
4.make dep
5.make bzImage
6.make modules
7.make modules_install
8.cp arch/boot/i386/bzImage /boot
9.編輯 /etc/lilo.conf 或 /boot/grub/grub.conf
10.lilo.conf 的修改范例:
11.
12.boot=/dev/hda
13.map=/boot/map
14.install=/boot/boot.b
15.prompt
16.timeout=50
17.linear
18.default=linuxnew
19.
20.image=/boot/vmlinuz-2.2.14-5.0
21.label=linux
22.read-only
23.root=/dev/hda1
24.
25.image=/boot/bzImage
26.label=linuxnew
27.read-only
28.root=/dev/hda1
29.
30.==========================
31.grub.conf 的修改樣本:
32.
33.default=0
34.timeout=3
35.splashimage=(hd0,0)/grub/splash.xpm.gz
36.title Red Hat Linux (2.4.18-10)
37. root (hd0,0)
38. kernel /vmlinuz-2.4.18-10 ro root=/dev/hda3
39. initrd /initrd-2.4.18-10.img
40.title Red Hat Linux (2.4.18-5)
41. root (hd0,0)
42. kernel /vmlinuz-2.4.18-5 ro root=/dev/hda3
43. initrd /initrd-2.4.18-5.img
44.title Red Hat Linux (2.4.18-3)
45. root (hd0,0)
46. kernel /vmlinuz-2.4.18-3 ro root=/dev/hda3
initrd /initrd-2.4.18-3.img
47.執行 lilo -v -v; 若是使用 grub, 則不必.
48.reboot
·為安全起見, 應該在 lilo 中保留舊核心, 以免萬一新核心出問題, 而無法開機.
說明:
1.make mrproper 會移除先前重制核心時不必要的殘余檔案, 這樣可以避免這些檔案對原始碼目錄樹產生不必要的干擾. 執行 make mrproper 時, 會砍除設定配置檔 .config, 如果您認為它很重要的話, 應該予以備份.
2.make config 是文字選項模式, 也是傳統的方式, 這個方式的缺點是: 在選擇時, 無法回頭.
make menuconfig 是文字選單模式.
make xconfig 是圖型選單模式, 需要 X Windows.(推薦此方式)
make config 時, 它會先執行 /bin/sh scripts/Config arch/i386/config.in
二. 使用 RPM 更換核心:
必須注意您的硬碟是 IDE 或是 SCSI, 以及您的主機 CPU 是單顆或雙顆!
另外, 我建議各位在更換核心之前, 先安裝 urh, 把大部份套件自動予以更新, 它也會把核心相關的 RPM 更新, 如 kernel-header*.rpm; 俟 urh 執行完畢, 才來進行以下動作!
A. 若是 IDE 硬碟, 那么更換的方式十分簡單:
1. 若有安裝 autoURPM(ftp.tnc.edu.tw/sysop/urh) 者,
可 cd /var/spool/autoupdate
rpm -ivh kernel-2.2.19-6.2.16*.rpm
若無安裝 autoURPM 者,
可至教網中心 ftp.tnc.edu.tw/sysop/rpms 中去下載
kernel-2.2.19*.rpm
若是雙 CPU , 則要安裝 kernel-smp*.rpm 的套件.
2. 編輯 /etc/lilo.conf 修改成如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linuxnew
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda1
image=/boot/vmlinuz-2.2.19-6.2.16
label=linuxnew
read-only
root=/dev/hda1
注意! 您的開機區未必是 /dev/hda1
必須視貴校主機 lilo.conf 中原有的設定而定
3. lilo -v -v
4. 重新開機即可.(注意, 上述已改由新的核心來開機)
若是使用 GRUB 來開機者, 只要執行以下指令即可
rpm -ivh kernel-2.2.19-6.2.16*.rpm
不必再去修改 /boot/grub/grub.conf
因為安裝這個 kernel RPM 套件時, 它會自動幫您修改 grub.conf
您唯一要做的是: 把 grub.conf 中的開機順序改成新的核心
比如: 以下的 default=0 即表示是由最新的 kernel 來開機
default=0
timeout=3
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-10)
root (hd0,0)
kernel /vmlinuz-2.4.18-10 ro root=/dev/hda3
initrd /initrd-2.4.18-10.img
title Red Hat Linux (2.4.18-5)
root (hd0,0)
kernel /vmlinuz-2.4.18-5 ro root=/dev/hda3
initrd /initrd-2.4.18-5.img
title Red Hat Linux (2.4.18-3)
root (hd0,0)
kernel /vmlinuz-2.4.18-3 ro root=/dev/hda3
initrd /initrd-2.4.18-3.img
B. SCSI 硬碟:
若是 SCSI 硬碟, 且 /boot 中有 initrd 的 image
則要多做一個動作: (注: 若您是安裝 RedHat 7.2 以后的版本,
可直接像 IDE 硬碟的作法一樣,
使用 rpm -ivh kernel*.rpm 即可升級)
以 RedHat 6.2 為例:
mkinitrd /boot/initrd-2.2.19-6.2.16.img 2.2.19-6.2.16
lilo.conf 要修改, 加入以下設定:
image=/boot/vmlinuz-2.2.19-6.2.16
label=linuxnew
root=/dev/sda1 (這個地方, 要視您原先的 root=/dev/sda?? 而定)
initrd=/boot/initrd-2.2.19-6.2.16.img
read-only
再 lilo -v -v
重新開機一次
當然, 開機 bootdisk 一定要先準備好.
若還是不成?, 可用 RedHat 7.3 光碟直接升級.
再用 urh-7.3 來大量升級套件. (下載位址: ftp.tnc.edu.tw/sysop/urh)
(以上是 OLS3 在網管討論區的回應)
C. 以下問題您可能也會碰到喔!(SCSI硬碟)
底下是敝縣網管討論區中二位網管先進的對話內容節錄, 對您可能有所幫助.
=======================
sammy 留言:
重新開機后出現LI
二字就都不動了
還好我有做舊kernel的開機片,
暫時用開機片開機server可工作
我的猜測是 lilo -v -v時
電腦以為我的開機碟是hda,
所以把開機程式寫入hda,但我真正的開機碟是sda
但實際情形是否如此,我也不知
目前暫時只能用磁片開機
請問要如何是好
========================
hsmhsm 回復 sammy 如下:
之前去中山上課,老師說ide的硬碟就是會先被讀取
所以他在前兩行中間再加了兩行
(不過當時裝的是trustix)
boot=/dev/sda
disk=/dev/sda
bios=0x80
map=/boot/map
反正你有開機片,要不要試試??
=======================
sammy 回復 hsmhsm 如下:
從暑假一直放到現在,
放了一個月,一直使用開機片開機
今天終于有空試了一下
在加了那二行后,
果然成功,真是謝了
D. 另外, 有二篇文件, 建議各位一定要先看一下!
1.: RedHat/rhl-cg-en-7.2/kernel.html
2.: Upgrading the Linux Kernel on Red Hat Linux systems
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/