当前位置导航:炫浪网>>网络学院>>操作系统>>Linux教程

更换 Linux 核心


  联系作者:[email protected]
  
  更换 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
  
相关内容
赞助商链接