使用 Knoppix 进行系统恢复

本文介绍了如何利用一张 Knoppix CD 访问无法引导的 Linux 系统,取得配置文件的读写权,创建和管理分区和文件系统,将文件拷贝到不同的存贮媒介或者网络上。您可以用 Knoppix 来进行硬件和系统配置的检测和分区、文件系统的创建和管理。您可以使用 Knoppix 友好的图形界面或者命令工具来完成以上任务。

Knoppix 是在一张 CD 上完整的可引导的 Linux,我选择它作为急救盘。在developerWorks上几个月前有一篇对 Knoppix 的非常好的介绍(Cameron Laird 的“Knoppix 提供了一个可引导的、容量为一张光盘的 Linux” )。

我以前主要依靠 Tom 的 Root Boot,“一张软盘上的最佳 GNU/Linux” 和 Peter Anvin 的 SuperRescue CD,“超能急救 CD”。它们都是一流的 Linux 急救盘。我最喜欢表演的戏法是只用一张 Tom 的 Root Boot 盘和网络连接完成裸机系统的重建。

随着 CD-ROM 成为 PC 上的标准配置,我也用坏过几张 SuperRecue CD。不过,它是基于 Red Hat 7.2 的,虽然这是一个很好的 Red Hat 但也是一个古老的 Red Hat。而且,7.2 不提供新版本中具备的一些硬件支持,如 USB 和无线连接。

新星诞生
Knoppix,系统恢复领域炙手可热的新成员,具有出色的特性:

  • 一流的硬件检测和支持,包括 PCMCIA、USB 和无线连接
  • 最新最好的 Debian 和 KDE
  • 快速引导,通常两分钟左右
  • 商业发行的光盘可用最低的价格买到

直到去了一个没有高速 Internet 的地方,我才意识到最后一点的重要性。如果只能用拔号上网,下载 700M 的文件是非常不现实的。

Knoppix 集成了最好的 Debian、KDE 和它自己的系统工具。本文中我们将从使用命令行和图形工具两个方面考察如何使用这一工具。一定要使用与您的系统相匹配的数据,如分区数、文件名和网络主机。

启程
如果需要运行 KDE,或者任何其他图形桌面或窗口管理器,至少需要 96M RAM 和 Pentium 级或更好的处理器。如果不用 X,纯文本模式只需要 20M RAM,甚至可以在古老的 486 上运行。它将使用已有的 Linux 交换文件。

引导选项
在用 Knoppix CD 引导后,它将在命令提示状态下等待30秒,然后继续引导。有大量的引导选项,按 F2 可以察看它们。例如,下面是我在一个测试系统上引导 Knoppix 3.2 使用的命令:

knoppix lang=us knoppix wheelmouse knoppix desktop=icewm

默认的键盘映射是 German,所以我总是用 knoppix lang=us 引导。Knoppix 默认引导到 KDE 桌面。knoppix 2 引导到文本模式,不启动 X。failsafe 启动时进行最小化的硬件检测。

Knoppix 完全在内存中运行,或者如果您希望听起来更“正规”,在内存磁盘上运行。实际上您可以在文件树中看到内存磁盘。记住,有时它会比较慢,因为它必须到 CD 上去取可执行文件,这要比硬盘慢。它可以安装到硬盘上,但那不是我们今天要讲的话题。

挽救不能引导的 Linux 系统
这是最常见的情形。有些地方出了问题,系统崩溃,无法引导。没关系:启动 Knoppix,然后您就可以在 KDE 桌面上找到您所有本地分区的图标。(或者在 /mnt 目录中浏览文件树。)点击相应的图标,你所有的文件都在。但是它们被明智地设为只读。同样没关系:右击桌面的图标,弹出一个很棒的菜单,上面有一个选项是"Chang read/Write mode"。这样可以把分区的文件系统设置为读/写方式。现在您可以编辑任何文件。

默认的用户是 knoppix。对于需要 root 权限的操作,您需要 su 到 root 并指派一个 root 密码:

knoppix@ttyp0[knoppix]# su
root@ttyp0[knoppix]# passwd

从命令行把文件系统设置为读/写方式:

root@ttyp0[knoppix]# mount -t reiserfs -o rw /dev/hda5 /mnt/hda5

取消设置:

root@ttyp0[knoppix]# umount /mnt/hda5

如果您得到一个错误消息"Could not unmount device, device is busy",那么可能是文件系统正在被读取。请关闭那些文件,并切换出那个文件系统。

那么如何知道指定了哪些设置点和文件系统?只需要察看 /etc/fstab:

root@ttyp0[knoppix]# cat /etc/fstab
...
# Added by Knoppix
/dev/hda5 /mnt/hda5 reiserfs noauto,users,exec 0 0

硬件检测
在开始修改错误的配置文件之前,应该先去查看一下硬件的信息。Knoppix 在这一点上做得很好,它有最新版本的 Linux 硬件和系统工具:fdisk,lspci,iwconfig,ifconfig,dmesg,/proc,等等。(在购买之前检查硬件信息测试与 Linux 的兼容性非常方便。声卡、软猫和无线 NIC 尤其容易出问题;制造商经常更换了芯片却不改变它们的型号,所以您就需要知道 Linux 有没有这种芯片的驱动程序。Knoppix CD 包括了许多声音文件,可以在欢迎屏幕上启动 "OpenMusic" 快速测试声音。)

  • fdisk -l 显示所有硬盘上的所有分区。
  • lspci -v 给出每个连接到 PCI 总线上的设备和芯片的详细信息。
  • cat /proc/cpuinfo 给出安装的 CPU 的确切类型。
  • ifconfig 显示以及修改网络接口设置。通常是以太网卡和点到点设备,以及猫的接口。
  • iwconfig 类似 ifconfig, 不过是用于无线网卡。
  • dmesg 很有意思。如果您不是对内核特别熟悉, man dmesg 没有什么用处。只要使用 dmesg | grep ,您会发现这是一个有用的故障检修和系统发现工具。只运行 dmesg 不加任何参数可以看到所有内容。

当然 KDE 提供了友好的 GUI 可以完成以上功能;使用 System > Info Center

挽救数据文件
通常第一个挽救步骤是将数据从出问题的硬盘上拷贝出来。当需要拷贝大量文件的时候我所喜欢用的方法是:安装另一块硬盘,然后引导 Knoppix,再将文件从旧硬盘拷贝到新硬盘。即使您没有热插拔硬盘或者抽取式的硬盘架,打开机箱安装一个硬盘也用不了多长时间。您使用崭新的空白盘,还是需要清理并重新格式化的旧盘?都没关系,Knoppix可以准备磁盘。

分区和格式化
首先安装第二块硬盘。然后引导 Knoppix 并打开一个 root shell。如果在第二块硬盘已经有分区,只需要格式化您所需要的那些分区。注意,SCSI 硬盘被指定为 sd,而 IDE 硬盘是hd。这个命令列出了存在的硬盘分区;一定要使用与您的系统相相应的数据:

root@ttyp0[knoppix]# fdisk -l /dev/hdb

格式化一个磁盘分区:

root@ttyp0[knoppix]# mkfs.ext2 -c /dev/hdb1

这创建的是一个 plain-vanilla ext2 文件系统。参数 -c 是为了检测坏块。当然,您可以创建任何您喜欢的文件系统: ext3, ReiserFS, 哪种都可以:

root@ttyp0[knoppix]# mke2fs -j -c /dev/hdb1
root@ttyp0[knoppix]# mkreiserfs /dev/hdb1

什么?没有分区?首先,我们来看如何通过命令行用 fdisk 来创建分区。使用 fdisk 命令是中等安全的,因为所有的改变在您命令之前不会写到硬盘上。所以,在提交任何修改之前您都可尝试不同的选项并预览分区表。下面的一系列命令可以创建一个的分区:

root@ttyp0[knoppix]# fdisk /dev/hdb

可以随时输入"m"显示 fdisk 的命令表。然后,输入"n"创建一个新的分区。现在,输入"p"来创建一个主分区。按两下回车,接受默值。或者,如果您不想使用整个硬盘,按一下回车接受默认的起始点,然后选择您所希望的大小:

+1000M

可以随时按下"p"预览新的分区表。当确认无误后,按"w"将变化写到硬盘。fdisk 默认创建一个"type 83"的分区,即 Linux 分区。察看分区类型的列表按"l"。改变分区类型,按"t"。要删除一个分区?很简单,按"d"然后按提示操作。

QTParted
更简单的办法是启动 KDE,使用 QTParted (System > QTParted)。QTParted 可以创建、删除或者不损失数据地移动分区和重新设置分区大小(即使是 NTFS)。所以,您可以安排出空间,没有任何损失地完成数据的拷贝。

以 GUI 方式拷贝文件
我喜欢图形化的文件管理器。拖放比敲入很长的命令字符串要简单得多。点击 KDE 桌面上源盘图标和目的盘图标,每一个都会打开一个自己的文件管理器,拖放文件又快又简单。必须保证目的硬盘设置为可写的。

以命令行方式拷贝文件
不要忘记创建一个文件要拷贝到的目录:

# mkdir /mnt/hdb1/home/carla/backup
# cp -r /mnt/hda5/home/carla /mnt/hdb1/home/carla/backup

克隆整个硬盘
您需要两个相同大小的硬盘,或者目的盘比源盘大。确认两个硬盘上都没有设置分区。这个例子中,/dev/hda 是源盘,/dev/hdb 是目的盘。dd命令执行精确的逐位拷贝,包括 MBR (master boot record,主引导记录):

# dd if=/dev/hda of=/dev/hdb

设置混乱
没记住设置了什么和设置的状态?没问题,通过 /proc 来挽救:

# cat /proc/mounts

这将显示所有已经设置的文件系统、文件系统类型、读写状态以及其他属性。系统中有多少块硬盘?以下其中一个命令将告知您(请记住,SCSI 硬盘是 sd,IDE 硬盘是 hd):

# fdisk -l

# dmesg | grep hd

# dmesg | grep sd

拷贝到 CD
使用 KDE 和 Knoppix 很容易就可以做到。假定系统中有 CD 刻录机,只需右击桌面上包括您的文件的分区图标,您就会看到“Create Data CD with K3b”。执行 File > New Project,拖放您要拷贝的文件,就可以了。K3b 很擅长自动检测和自动配置您的 CD 驱动器;它会为你完成所有的任务。如果某些环节出了问题,请参考 developerWorks 的文章“在 Linux 上烧录 CD”,文章还会教您如何在命令行下烧制 CD。

拷贝到其他媒介
Knoppix 可以自动辨认出来 Zip 驱动器, 软盘以及 USB 存贮设备,并将其图标显示在桌面上。只需要将文件要拷贝到的驱动器设置为可写,然后拖放就可以了。

在网络上拷贝
您可以配置 Knoppix 连接到网络,如任何其他 Linux 一样。Knoppix 有其自己的图形配置工具:在主菜单上找到 Knoppix > Network/Internet。Knoppix 优秀的硬件检测功能再次生效;它甚至可以工作于无线 NIC(假设是 Linux 支持的无线 NID)。只需要回答一系列的问题,您就可以完成了。

用命令行也同样简单。以 root 身份执行:

# netcardconfig

一旦您的网络配置好,会有一些用于传输文件的选项。cp是用来拷贝本地挂载的文件系统的。在不信任的网络上拷贝文件应该使用 scp (secure copy),实际上 Knoppix 不会让您使用任何别的方式。scp 使用 ssh 来传输加密的文件,让您可以不用设置 NFS 或 Samba 就可以移动文件。在网络上接收文件的机器上您还需要有一个 ssh 服务器。下面这个命令是拷贝整个目录:

# scp -rp /mnt/hda5/home/carla 192.168.1.5:/home/carla/tmp

SSH 快速上手
什么?您没有 ssh 服务器?如果您还没有安装 ssh,这里是一个使用 SSH 的快速上手向导。但是在使用它进行远程管理任务之前,您应该先更深入地学习 ssh。还要注意近来有许多重要的安全补丁。

OpenSSH 在所有的主要发行版本中都会附带,所以您应该已经有了。(使用命令 locate sshd 可以找到它。)如果没有,可以下载并安装它。不需要在特别的机器上;任何一个 Linux PC 都可以运行 SSH。像这样启动它:

# /etc/init.d/ssh start

接下来所有您要做的就是在两台机器上设置相同的帐户。用 root 是最简单的,但是有潜在的危险。当然,您可以在 Knoppix 上创建所需要的帐号,使用 useraddpasswd命令。然后像前面的示例那样运行 scp 命令,就可以了。

您第一次连接的时候,将得到一条消息,"The authenticity of host X can't be established...are you sure you want to continue connecting?"回答"yes",它将向你询问 SSH 服务器的 root 口令,然后您就可以任意操作了。以非 root 用户身份移动文件:

# scp -rp /mnt/hda5/home/carla carla@192.168.1.5:/home/carla/tmp

在主机系统上打开一个 root shell
这使您可以操作主机系统,就像您直接登录到它一样。找出主机系统所在的分区,然后打开一个 Knoppix root shell 并设置它:

root@ttyp0[knoppix]# mount /dev/hda1 /mnt/hda1
root@ttyp0[knoppix]# chroot /mnt/hda1
root@Knoppix:/

Knoppix 存在的问题
在 CD 上运行程序可能会导致一些奇怪的问题,尤其是在笔记本电脑上。这通常是因为电源管理打乱了 Knoppix 会话:当您唤醒机器的时候,Knoppix 不再响应任何命令。我所知道的唯一的解决办法是禁用电源管理,或者使用电源开关重新启动。

有时候 Knoppix 在引导过程中挂起,在 KDE (或者其他 X 会话)启动中途停止。切换到第一个虚拟控制台 (Ctrl + Alt + F1),查看系统消息;这样可以知道哪里出了问题。按 Alt + F5 返回到默认的 X 会话。例如,我的一个测试系统在检测 SCSI 的时候挂起了。为什么?谁知道呢。我在 boot 命令中增加了knoppix no scsi 来禁用 SCSI 检测,解决了这个问题。

Knoppix 带来创新
Linux 从来不缺乏有灵感的令人惊异的创造性。Knoppix 已经走了很远,并且 Knoppix 为许多创造性的项目带来了灵感,比如 Inside Security Rescue Toolkit, OpenGroupware Knoppix, Damn Small Linux, 和 Overclockix。参看下面参考资料部分中的链接,您可以得到更多的信息,以及定制您自己的 Knoppix 版本的帮助。

参考资料

阅读更多
上一篇北极投资
下一篇KNOPPIX中文研究站&Windows LIVE CD
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭