拯救Linux系统(转)[@more@]
Linux系统管理员几乎都有过处理瘫痪系统的经历。如果是硬件问题,那么通过更换主板、电源或者控制器等出问题的部件,就可解决了;但如果是文件系统崩溃、引导区出现问题或者配置不当导致系统无法启动,就会出现“数据近在咫尺却无法访问”的现象。
对于这种类型的问题,最简单的解决办法就是使用急救盘来启动系统。急救盘可以是软盘、光盘或者其它可移动的媒体。这种办法可以帮助启动损坏的系统,解决存在的问题并将其迅速恢复。
Linux急救盘一般分为两类,每一类都有其优点,也有其缺点。第一类急救盘一般由某一特定的Linux发行商提供,所以其解决的问题只是针对运行该发行版的机器上出现的问题。这种类型的急救盘可能是启动过程中用软盘制作的,或者直接在发行版的安装盘上。不管是那一种情况,这种针对某一发行版的急救盘一般都反应了该发行版所用的启动管理器、文件系统和工具的一些情况。
第二类急救盘是独立于某一特定的发行版的,一般是在一张软盘或者一张光盘之上。这种类型的急救盘是一种非常灵活的解决方案,它不依赖于任何一个发行版,使用它可以修复很多版本的Linux系统。不过,如果该工具不支持你使用的系统,那么你就不得不采用其它的办法了。
很显然,不管是那一种类型的急救盘,我们希望永远都不要用上它,但是一旦真的碰上问题,就会发现有一张急救盘还是非常必要的。我们先来看一看各种需要使用急救盘的情况,然后关注一下由各Linux发行版的急救机制。在下一次,我们再通过比较来看一些独立于发行版的、功能强大的急救盘。
使用急救盘
和所有其它的操作系统一样,Linux自己带有一些工具,它们可以在系统启动过程中自动地修复一些常见问题。当然,在此所说的问题不包括硬件方面的错误,只是指启动过程本身或者启动程序自检出现错误导致系统无法启动的问题。例如,由于硬盘扇区(比如MBR)丢失或者损坏、引导程序需要的程序 (LILO 或者GRUB)丢失、错误的引导程序配置、内核丢失或者损坏导致的启动问题。
假设内核和引导程序文件本身没有问题,问题出现在 root文件系统,那么就可能会导致root或者/boot文件系统不能正确识别、定位或者加载。作为启动过程的一部分,大多数Linux系统的启动脚本会检测启动状态,并且判断上一次启动时卸载过程是否彻底完成。在一般情况下,在启动过程中就可以解决文件系统崩溃的问题,但是如果崩溃影响到系统的启动脚本或者fsck工具本身,那么系统就会出现无法启动的现象。
不同类型的急救盘有不同的能力。一些比较简单的急救方案提供的就只有一个启动扇区和一个可以让你加载现有root文件系统的内核;一些比较复杂的解决方案则会提供一个完整的工具集,它几乎可以处理任何情况下的硬盘崩溃。
一般情况的解决办法
计算机出现无法启动的情形有很多种,不过在很多情况下,我们都可以使用相对简单的办法来进行恢复。下面是一些可以恢复系统的办法:
1.因为root文件系统已经崩溃,系统甚至无法启动到可以访问fsck工具时候。这种情况比较简单,可以从急救盘启动,然后使用fsck来修复崩溃的文件系统。我们可以使用一些标准的fsck常用的一些技巧来进行修复。如果文件确实丢失了,那么可以从其它的系统上把文件拷贝至系统并且将其进行安装,另外,如果能够访问源盘的话,可以从源盘重新安装。
2. 文件系统配置不当也是一个问题。对于这种情况,可以从急救盘启动,然后修复文件系统配置文件(/etc/fstab)或者使用诸如tune2fs、debugfs等工具来纠正配置不当的地方。
3. 如果是引导程序有问题,那么可以从急救盘启动,然后修改引导程序的配置文件,并且重新安装部分或者全部的引导程序。
4. 如果系统丢失了内核,也可以从急救盘启动,加载Linux系统的root分区,然后重新编译内核。
5. 最坏的情况是文件系统损坏得非常厉害,这时重新安装整个文件系统反而更容易一些。在这种情况下,可以从急救盘启动,然后使用备份工具将有用的文档备份至网络或者其它可移动的存储设备上。当然,进行这些操作的前提是你的急救盘支持这些功能。
很多常见的Linux发行版都会提供急救机制,下面我们就详细看一看各种Linux发行版的急救机制。
针对发行版的急救盘
大部分的Linux发行版都把创建一个急救软盘作为Linux安装进程中的一部分。这些急救软盘主要是在系统出现一些简单的启动配置错误或者引导程序出现问题时用于恢复系统的。比如:在重新编译、安装了一个新内核之后忘了升级引导程序的配置文件;进行了升级引导程序的配置以后忘了运行LILO (如果使用 LILO作为启动管理器的话)等等。
各种发行版提供的这种急救盘具有的最大缺点是它们一般都不提供用于应付比较严重问题的工具。比如,Red Hat中使用“mkbootdisk”创建的急救盘只是用于定位系统的root文件系统的。因此,此种急救盘只能用于与制作启动盘的机器有相同分区的机器。
当使用Red Hat等的软盘急救时,如果分区和试图去修复的系统不同,通常在急救盘的LILO提示符可以指定“root=/dev/root分区”选项,其中要用欲修复的系统的root分区来代替“root分区”。不过,因为这种类型的急救盘包含有一个用于制作急救盘系统的内核映像,因此它可能不支持你系统里的硬件。比如,在一个不支持SCSI的系统里,我们无法创建一个支持SCSI系统的急救盘,除非急救盘的内核中被编译进去了对SCSI的支持。然而大部分急救软盘并不包括可加载的内核模块。当然,这并不奇怪,毕竟软盘的容量实在是有限。
基于软盘的急救盘的设计过于简单,并且一般都不包含任何工具,因此无法修复损坏严重的系统。还是以Red Hat为例,使用“mkbootdisk”脚本创建的急救盘只包含有一个启动扇区、内核和与之有关的配置文件。该急救盘主要是依赖于能够定位和加载系统的 root文件系统,然后再由此发现可以彻底修复系统的工具。因此如果你的系统root文件系统已经崩溃或者有其它的损坏,就不能访问那些修复系统的工具了。
今天,大部分的Linux发行版都在其启动光盘中有一个“应急”模式。它以常用的内核来启动,然后给用户提供对fsck和用于创建和修改启动配置信息的命令和工具。下面,我们来看一看从光盘启动的各种Linux发行版的急救能力。
以应急模式启动Linux
在商业领域里,在选择Linux发行版时,公司更倾向于整个公司都使用同一个Linux发行版。不过,不管有什么理由,选择一个有商家支持的版本还是很有必要的。诸如戴尔这样的硬件厂商捆绑的Linux发行版一般都是针对他们的硬件进行优化和改进过的。所以,除非你使用的是他们捆绑的 Linux,否则他们是不会帮助你的。
如果在一台机器上安装多个版本的操作系统或者在一个企业的桌面上使用多个版本的Linux,那么就意味着在它出现问题的时候你必需要准备好一堆的Linux光盘。所幸的是,被损坏的Linux是各个不同的发行版,一般也可以用某一个发行版的光盘来修复它们。当然这还取决于你使用的硬件、文件系统以及各个发行版所支持的引导管理器。
我们来看一看比较流行的Linux发行版的各种应急模式,以及它们提供的可以帮助修复损坏Linux系统的工具。
Debian
从使用jigdo工具(Jigdo 是为了缓解庞大的 CD 和 DVD 光盘映像文件对 Debian 镜像网络造成的冲击而开发出来的)创建的Debian 2.6 CD启动时,有两种急救机制可供选择。可以从CD启动,然后进行安装,以修复现有的系统。此外,也可以使用“root=/dev/root分区”选项指定一个现存的root分区。在前一种情况中,选择了所使用的语言以后,就可以进行一些“查看分区表”、“执行一个shell”、“使系统可以启动”、“制作一个启动盘”等与修复相关的命令了。选择执行一个Shell,可以访问、操作ext2和ext3文件系统的fsck、fdisk分区工具,以及用于 ext2文件系统的mkfs工具和重建崩溃交换分区的mkswap工具。
Mandrake 8.2
Mankrake传统、友好的用户界面也反应在其提供发行版光盘的应急模式之上。从光盘启动以后,按F1键可以进入一个高级选项列表,在 boot提示符下输入“rescue”,然后按回车。启动以后,Mankrake的应急模式会显示一些菜单选项:“Re-install Boot Loader”、“Restore Windows Boot Loader”、“Mount your partitions under /mnt”、 “Go to console”、“Reboot”和“Doc: what's addressed by this Rescue?”。这其中“Go to console”是这些选项中最有用的选项,因为它会给用户一个root提示符。这样,通过访问相应的工具,用户就可以修复自己的系统了。
Mankrake 8.2的应急模式提供了可用于ext2、ext3、JFS、ReiserFS和XFS文件系统的fsck工具。对于那些损坏非常严重的不幸用户,它还提供了fdisk和sfdisk分区工具以及用于ext2文件系统的mkfs。如果引导程序损坏了,Mandrake应急模式还可以安装grub。
Red Hat 7.3
Red Hat的应急模式非常强大。从第一张光盘启动以后,按F4键,然后在LILO的boot提示符下键入“linux rescue”,这时系统以应急的内核启动,然后就可选择使用的语言和键盘。这时,应急模式就会尝试加载现存Red Hat的root目录,并将其加载至/mnt/sysimage。这时可以按下回车,登录到一个shell中。
Red Hat的应急模式只包含可用于ext2、ext3和ReiserFS文件系统的fsck版本。如果分区无法用fsck来恢复,那么Red Hat的应急模式还提供了fdisk和sfdisk分区工具以及可以创建ext2、ext3、RAID、ReiserFS、交换分区甚至是VFAT文件系统的命令。此外,它还包含了LILO。如果能够发现并加载现存的分区,它还提供对grub的访问。
Slackware 8.1
作为历史最为久远的Linux发行版之一,Slackware并不太关注其图形界面,而是努力使其可以修复任何被损坏的Linux系统。从第一张光盘启动以后,可以按下回车来加载标准内核,也可以按下F3来看一些可启动的内核列表。这些内核分别支持特定的设备子系统、文件系统等,其中包括 SCSI、 XFS文件系统、JFS文件系统、RAID、USB等。
一旦选择了一个内核启动,Slackware就会提供用于网络、 PCMCIA等检测和初始化子系统的命令。因为恢复JFS和XFS文件系统被处理成支持这些文件系统内核的加载命令,因此,Slackware提供的 fsck只支持ext2和ext3文件系统。如果问题非常严重,Slackware还提供了fdisk和cfdisk分区工具,支持ext2、ext3、 JFS、ReiserFS和XFS文件系统的mkfs工具,此外还包括用于创建RAID设备和被LVM使用的物理卷的命令。Slackware应急模式不包含LILO或者grub的安装。
SuSE 8.0
众所周知,SuSE是世界上最大的、更新最频繁的Linux发行版之一。SuSE安装盘也有应急模式,并且其提供的工具安全可以满足你的需要。要让SuSE 8.0运行于应急模式之下,首先从第一张光盘启动,使用上下箭头键选择从初始化菜单中选择“Rescue System”,然后按下回车。这时候应急内核启动,提示你选择所用的键盘,并且会给出一个root提示。
SuSE 8.0的应急模式提供了一个可以支持ext2、ext3、JFS、ReiserFS和XFS文件系统的fsck,以及用于修复ReiserFS和XFS文件系统、LVM(逻辑卷管理)和RAID支持的工具。对于分区损坏非常严重的情况,它还提供了fdisk和支持所有文件类型的mkfs版本。如果需要重写主硬盘的boot分区,SuSE 8.0还提供了LILO。
好了,至此,现今流行的各Linux发行版的各种应急机制就介绍完了。对于同时在使用很多种发行版的企业来说,希望能够发现一种放之四海而皆准的解决方案。下一次,将向大家介绍一些独立于发行版的、可从网上免费下载的急救解决方案
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-938825/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8225414/viewspace-938825/