使用急救盘组进行维护
急救盘组(也称为 boot/root 盘组),是系统管理员必不可少的工具。用它可以独立地启动和运行一个完整的 Linux 系统。实际上,急救盘组中的第 2 张盘上就有一个完整的 Linux 系统,包括 root 文件系统;而第 1 张盘则存放了可启动的内核。
使用急救盘组维护系统很简单。只需用这两张盘启动系统后,进入急救模式,这时使用的是 root 账户。为了能访问硬盘上的文件,需要手工安装硬盘文件系统。例如,用下面的命令可在 / mnt 目录中安装 /dev/hda2 盘上的 ext2fs 类型的 Linux 文件系统:
# monut -t ext2/dev/hda2/mnt
注:现在根目录是急救盘上的根目录。为了访问硬盘文件系统中的文件,必须先把它安装到某个目录下。这样,如果将硬盘上文件系统安装在 / mmt 目录下,则硬盘上原来的 / etc/passwd 文件的路径就是 /mnt/etc/passwd。
文件系统被破坏时的处理方法
当文件系统被破坏时,如果使用的是 ext2fs 类型的文件系统,就可从软盘运 e2fsck 命令来修正文件系统中被损坏的数据。对于其他类型的文件系统,可以使用相应的 fsck 命令。
当从软盘上检查文件系统时,最好不要 mount 安装。
注:文件系统被破坏的常见原因是超级块被损坏,超级块是文件系统的 “头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,这样也就不能安装它了,即使采用 e2fsck 命令也不能处理这个问题。
不过,ext2fs 类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(block group)边界。可以用如下的命令通知 e2fsck 使用超级块的备份
# e2fsck -b 8193
是指文件系统所在的分区,-b 8193 选项用于显示使用存放在文件系统中的 8193 块的超级块的备份数据。
恢复丢失的文件
如果不小心删除了重要的文件,那么没有办法直接恢复。但是还可以将相应的文件从急救盘复制到硬盘上。例如,如果删除了文件 / bin/login,此时系统无法正常进到登录界面,可以用急救盘组启动系统,将硬盘文件系统安装到 / mnt 目录下,然后使用下述命令:
#cp -a /bin/login /mnt/bin
“-a” 选项用于告诉 cp 在拷贝时保持文件的访问权限。当然如果被删除的基本文件不在 “急救盘组” 中, 也就不能用这种方法了。如果以前做过系统备份的话,那么也可以用以前的备份来恢复。
函数库破坏时的处理方法
如果不小心将系统函数库文件破坏了,或者破坏了 / lib 目录下符号链接,那么将导致依赖这些库的命令无法执行。最简单的解决办法是用急救盘组启动系统, 在 / mnt 目录中安装硬盘文件系统,然后修复 / mnt/lib 目录下的库。
无法用 root 账号登录系统
由于系统管理员的疏忽,或者由于系统受到黑客的入侵, 系统管理员可能无法用 root 帐号登录系统。
对于第 1 种情况,可能是系统管理员忘记了 root 密码,用急救盘组就可以解决问题。
对于第 2 种情况,由于很可能是密码被黑客修改了,因此系统管理员无法进入系统,也就是说,Linux 系统完全失去了控制,因此应尽快重新获得系统的控制权。在取得 root 权限后,还应检查系统被破坏的情况,以防被黑客再次入侵。
需要做的最主要的工作就是重新设置 root 的密码,获得 Linux 操作系统的控制权。首先用急救盘组启动系统,然后将硬盘的文件系统安装到 / mnt 目录下,编辑 / mnt/etc/passwd 文件,将其对应于 root 账户的一行加密口令域置空,如下所示:
root::0:0:root:/root:bin/bash
注:如果系统使用 shadow 工具,就需要对文件 / etc/shadow 进行上述的操作,使 root 登录系统不需要口令。 这样,root 账户就没有口令了。当重新从硬盘启动 Linux 系统时,就可以用 root 账户登录(系统不会要求输入密码)。进入系统后,再用命令 passwd 设置新的口令。
Linux 系统不能启动
一般来说,如果系统管理员不能正常进入系统,就需要考虑使用急救盘组进入急救模式排除系统的故障。但在没有制作急救盘组的情况下,Linux 系统不能启动,该怎么办?
在个人计算机使用 Linux 系统时,通常都是 Linux 和 MS Windows 9x 或 MS Windows NT 并存的。
由于重新安装其他的操作系统,经常会导致原有的 Linux 不能启动。这主要是因为,这些操作系统默认为计算机中没有其他的操作系统,因而改写了硬盘的主引导记录(MBR),冲掉了 Linux 的 LILO 系统引导程序。
如果有急救盘组,那么很简单,用第一张启动盘启动硬盘的 Linux 系统,重新运行 LILO 命令,就可以将 LILO 系统引导程序写回硬盘的主引导记录。再次开机即可。
如果没有系统启动盘,怎样恢复硬盘上的 Linux 呢?在这种情况下,如果知道 Linux 在硬盘上的确切安装分区,且有 loadlin 程序,就可以重新返回 Linux。loadlin 程序是 DOS 下的程序,运行它可以从 DOS 下直接启动 Linux,快速进入 Linux 环境。在 Red Hat Linux 6.0 光盘的 dosutil / 目录下就有这个程序。除此之外,还需要一个 Linux 启动内核的映像文件。在 Red H at linux 6.0 光盘的 images / 目录下有这个文件——vmlinuz。
例如,在 Windows 98 系统下面,进入 DOS 的单用户模式,然后运行下述的 loadlin 命令,即可重新进入 Linux 系统:
loadlin vmlinuz root=/dev/hda8
/dev/hda8 是 Linux 的 root 文件系统所在的硬盘分区位置。命令执行后,就引导 Linux 系统。用 root 登录后,运行 LILO 命令,则重新将 LILO 装入 MBR,回到以前多操作系统并存使用的状态。