联系作者: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