更換 Linux 核心
2002/10/09 OLS3 (ols3@www.tnc.edu.tw) Copyright 2003 OLS3,
本講義僅供教育人員參考, 任何引用, 請先取得作者的同意.
(以上聲明, 主要是防止商人拿本文沽取利益, 除此, 請自行取用, 勿受限制, 或對此感到有任何的不愉快)
更換 Linux 核心是每一位 Linux
主機管理者經常要面對的問題, 本文將一些文件串聯在一起, 供各位參考
更換
Linux 核心(Kernel) 對剛接觸 Linux 管理者而言, 多少會覺得有點困難;
其實只要試個幾次, 很快地, 您就會感到駕輕就熟.
早期更換 Linux Kernel 只有採用原始碼編譯一途, 近幾年由於套件管理模式大行其道, 因此又多了另一新選擇, 其中 RPM 是最為流行的方式之一.
注意! 不管您打算採用那一種方式, 您都應該先做好一開機片, 以防萬一
製作開機片的方法如下:
uname
-r
比如出現以下訊息
2.4.18-10
將它放在以下指令之後,
此時請放入一片空白磁片:
mkbootdisk --device /dev/fd0
完整指令為:
mkbootdisk --device /dev/fd0 2.4.18-10
接著您便可以安心來做核心的更換工作了.
以下先介紹原始碼編譯安裝的方法:(by OLS3 技術文件)
一. 原始碼 Kernel 重製:
流程:
先至
ftp.tnc.edu.tw/sysop/Linux-kernels/
或 http://www.kernel.org
去下載 Linux 核心
其中, 版本代碼 2.4 開頭者為穩定版(建議),
2.5 為實驗版(不建議).
設定 kernel 選項
編譯 kernel
編譯 modules, 安裝 modules
安裝 kernel
設定 boot loader
重新開機
步驟:
cd 您解壓後的目錄下的 linux 目錄中
make mrproper
make
xconfig (menuconfig 或 config), 它會存成 .config
這個步驟是最困難的,
因為您必須了解很多個選項的意義才行! 這個部份也是必須充份練功的地方!
make dep
make bzImage
make modules
make modules_install
cp arch/i386/boot/bzImage /boot
編輯 /etc/lilo.conf 或 /boot/grub/grub.conf
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/bzImage label=linuxnew read-only root=/dev/hda1 ========================== grub.conf 的修改樣本: 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
執行 lilo -v -v; 若是使用 grub, 則不必.
reboot
為安全起見, 應該在 lilo 中保留舊核心, 以免萬一新核心出問題, 而無法開機.
說明:
make mrproper 會移除先前重製核心時不必要的殘餘檔案, 這樣可以避免這些檔案對原始碼目錄樹產生不必要的干擾. 執行 make mrproper 時, 會砍除設定配置檔 .config, 如果您認為它很重要的話, 應該予以備份.
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. 另外, 有二篇文件,
建議各位一定要先看一下!
=============================================
Powered by OpenOffice.org
1.0.1 (Linux version)
$Id: kernel2.html,v 1.2 2003/09/06 07:21:24 ols3 Exp $