当前位置:Linux教程 - 安装启动 - 安装启动 - 备份和修复Linux LILO指南

安装启动 - 备份和修复Linux LILO指南

备份和修复Linux LILO指南
2004-04-23 15:18 pm
来自:Linux文档
现载:Www.8s8s.coM
地址:无名

一. 本文目的

本文旨在如何给工作的系统做LILO和内核的软盘备份,因为大多数Linux服务器使用
LILO进行引导,同时也给出紧急修复办法。

二. 测试环境

Redhat Linux ,IDE和SCSI启动硬盘。

三. 备份措施

当我们设置完新的服务器后,除了常规的服务器重要配置文件和系统备份之外,最好
也要做LILO和内核的软盘备份,万一由于某种原因导致LILO不能引导系统。

1. 第一种方法

适用范围: 自己编译的内核,所有的支持模块已经编译进内核,如果有SCSI硬盘,必
须编译进SCSI支持进内 核,也就是说内核已经包含了所有引导需要的东西。

步骤:

格式化一张空白软盘,不要生成文件系统,直接写内核到软盘,然后改变内核文件中
的根文件系统分区定义

fdformat /dev/fd0h1440
  dd if=/boot/vmlinuz of=/dev/fd0 (用你自己的内核文件名替代vmlinuz)

rdev /dev/fd0 /dev/sda3 (用你的根分区设备名称替代/dev/sda3)
  rdev -R /dev/fd0 1 (安装根文件系统成只读模式)

作用: 这样当系统LILO失败时,可用该软盘引导系统且安装硬盘根文件系统。

2. 第二种方法

适用范围: 内核需要一系列模块帮助引导,如SCSI硬盘驱动程序,则需要用下面的方
法生成带LILO的引导软盘

步骤: 放一张新的软盘,不要格式化和分区,直接用mkbootdisk创建引导盘

mkbootdisk --device /dev/fd0 2.2.12-20 (用你的内核版本代替2.2.12-20,可用
uname -a查看)

3. 第三种方法

适用范围: mkbootdisk命令不可用,或者无论什么理由你想手动创建一张带LILO的
引导软盘。

步骤:

fdformat /dev/fd0h1440 (低级格式化软盘)
  /sbin/mkfs.minix /dev/fd0 1440 (在软盘上创建minix文件系统)
  /bin/mount /dev/fd0 /mnt/floppy (安装软盘到/mnt/floppy目录)
  cd /mnt/floppy
  mkdir boot etc dev
  cp -a /boot/vmlinuz /boot/initrd.img /boot/boot.b boot/
  注:用你的内核文件名代替vmlinuz 用你的initrd映像文件名代替initrd.img
  cp -a /dev/fd0 /dev/null /dev/zero /dev/hd[abcd]* /dev/sd[abcd]* dev/
  注: 如果你没有SCSI设备,可不用拷贝/dev/sd[abcd]*
  创建/mnt/floppy/etc/lilo.conf如下
  boot=/dev/fd0
  read-only
  prompt
  image = /boot/vmlinuz
  initrd=/boot/initrd.img
  root = /dev/sda1 # 把/dev/sda1换成你的根文件系统设备名称
  label = linux

最后运行 lilo -r /mnt/floppy 在软盘上安装LILO (将自动生成/boot/map文件包括内
核的物理映像位置) 。

4. 剖析initrd.img

如果你是用SCSI硬盘启动,内核必须能装入SCSI驱动程序才能转入你的硬盘根文件系统
引导系统。

如果你的内核没有编译进SCSI驱动程序,则需要用mkinitrd创建RAM驱动映像想知道你的
initrd.img中包含了哪些驱动程序吗?

cat initrd.img | gunzip > /tmp/myinitrdfs
  mkdir /mnt/tmp
  mount -o loop -t ext2 /tmp/myinitrdfs /mnt/tmp

然后查看/mnt/tmp中的文件linuxrc中的内容即可知道启动时会装入哪些驱动程序。你
也可以更改其中的内容,假设我们想加另一种SCSI驱动aic7xxx.o进入你的initrd.img

cd /mnt/tmp
  vi linuxrc 加上一行 insmod /lib/aic7xxx.o
  cp /lib/modules/`uname -r`/scsi/aic7xxx.o lib/
  cd /
  umount /mnt/tmp
  dd if=/tmp/myinitrdfs | gzip > /boot/initrd2.img

至此,新的initrd文件initrd2.img就包含了aic7xxx的驱动程序了。

四. 紧急修复

许多情况能导致LILO引导失败,象升级内核,忘记运行lilo更新MBR,克隆硬盘,缺少
SCSI驱动程序引导根文件系统等等,当我们遇到这些情况而手边又没有备份的引导软盘
时,你仍然有许多其它途径去修复。

1. 查看周围有没有类似的其它机器和系统在运行,如另一台服务器上有相同版本或同系
列的内核在运行。则在另一台系统上生成引导软盘(带LILO或者不带LILO),如果需要添
加initrd.img中的SCSI驱动文件。

2. 用CDROM安装盘启动,CDROM会载入SCSI驱动,到分区界面时用ALT+F2转入字符界面,
可mount硬盘根分区,运行lilo 和做相关的修复。

3. 下载包含boot/root文件系统在一张软盘上的文件,如www.toms.net/rb/ 可完全从一
张软盘启动系统,完全不需要硬盘,然后再安装硬盘,修复系统(例如万一你的/etc/fstab
中的根文件分区指定错误 ,可用此方法修复)。

4. 最后如果都不可行,你可以下载与你的服务器相同版本或者同系列中最新版本的内核,
在另一台机器上编 译需要的SCSI和网卡等相关驱动程序直接进入内核,不需要任何模块,
然后用本文的方法拷贝至软盘,去引导系统。