User-Mode Linux (UML) 是一个 Linux 虚拟机,可以让你在 Linux 上引导一台“软件”机器。他们可以方便的创建和毁灭,在一台物理的机器上可以做任何想做的事情。因此, UML 具有广泛的用途。
UML 虚拟机和物理的机器表现十分相似,而且可以更加方便的配置和引导,可以作为系统管理员培训和练习之用。在灾难恢复的练习中特别有用。本文通过一个毁灭性的灾难的创建来介绍 UML 的原理。
在开始之前,你必须下载 UML ,并安装。下载地点:
http://user-mode-linux.sourceforge.net/dl-sf.html
下载对应的软件后,还要下载要引导的文件系统的映象。下面的例子将采用 Debian 根文件系统作为例子。如果你的网络速度不够快,可以下载 tomsrtbt 文件系统。
启动 UML:
% linux ubd0=cow,root_fs
这个命令从 root_fs 文件引导,把 cow 文件作为 coopy-on-write (COW) 层。 文件名 cow 可以随意给定并自动产生。这里的 root_fs 是你从网站上下载的文件系统的名字,原来的文件名可能是 root_fs_debian2.2_small 或者 root_fs_tomrtbt_1.7.205,你可以把他们改为 root_fs。
引导时,记下控制台上跳出来的一句话:
mconsole initialized on /tmp/uml/d4oIw6/mconsole
引导完毕后,将出现 login 提示,用 root 登陆(口令为 "root"),然后:
usermode:~# cd /
usermode:/# rm -rf /
经过一段恐怖的等待之后,得到的结果是:
rm: cannot remove directory '//dev/pty': Directory not empty
rm: WARNING: Circular directory structure.
This almost certainly means that you have a corrupted file system.
NOTIFY YOUR SYSTEM MANAGER.
The following two directories have the same inode number:
//dev
//dev/pts
系统已经毁坏,需要关机。 halt 已经不能使用,最好的办法是采用 uml_mconsole 来关机。记住使用前面提到的控制台上提示的那个目录名作为参数:
% uml_mconsole d4oIw6
(d4oIw6) halt
OK
现在你可以知道为什么使用 COW 文件,整个毁坏的文件系统包含在 COW 文件中,root_fs 文件根本就没有被改动,现在可以扔掉 COW 文件:
% rm cow
重新引导 UML:
% linux ubd0=cow,root_fs
可以看到原先的文件依然存在。
我们可以通过这项技术来创建灾难环境而不必去实际毁坏一个文件系统。