The Linux Bootdisk HOWTO 中译版(9) 使用一个 loopback device ,这可以把一个磁碟档案当做是一台设备来使用。使用 loopback device 时,你可以在硬碟上造出一个 3 megabyte 的档案,并於其上建造 filesystem 。 键入 man losetup 找寻指令以使用 loopback devices 。如果你没有 losetup ,你可以从 ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/ 目录中, util-linux 套件 (package) 内相容版本之 mount 与 unmount 的随附物中找到它。 如果在你的系统上没有 loop device 档 (/dev/loop0, /dev/loop1, etc.),那麽你必须用 ``mknod /dev/loop0 b 7 0'' 自己造出一个。一旦安装好这些特别的 mount 与 umount 二进位档,就请在一台容量够大的硬碟上造出一个暂存档 (temporary file)(eg, /tmp/fsfile) 。你可以使用像这样子的指令: dd if=/dev/zero of=/tmp/fsfile bs=1k count=nnn 以造出一个 nnn-block 的档案。 请使用自己的档名取代以下的 DEVICE 。当你下了 mount 指令,你同时要加上 ``-o loop'' 选项以告知 mount 是使用 loopback device 。 举例来说: mount -o loop -t ext2 /tmp/fsfile /mnt 以挂上 loopback device 的方式,把 /tmp/fsfile 挂上 /mnt 这个 mount point 。用 df 指令可让你看到以上的结果。 在你选择其中一种方法後,请准备 DEVICE 以: dd if=/dev/zero of=DEVICE bs=1k count=4096 这行指令送出一堆 0 把DEVICE填满。用 0 填满 device 是关键的一步,因为 filesystem之後将会被压缩,所以所有未使用的部分应被用 0 填满以达到最大的压缩比。无论何时你从你的 root filesystem 删除档案,请记得这个事实。实际上 filesystem 只是释出 (de-allocate) 这些 blocks , 但是并没有再把它们填为 0 。如果你执行过很多次删除与 copy 的动作,你的压缩 filesystem 最後会比必要的大出很多。 下一步就是造出 filesystem 。 Linux kernel 承认两种能让 root disks 自动地被 copy 到 ramdisk 上的 file system 。它们是 minix 与 ext2 ,其中 ext2 是比较受欢迎的。如果使用 ext2 ,你会发现使用 -i 选项指定比预设值更多的 inodes 是有助益的;我们建议用 -i 2000 ,这样你就不会用完 inodes 。如果不用上述选项,你可以移除许多不必要的 /dev 档案以节省 inodes 。 mke2fs 预设会造出 360 个 inodes在一张 1.44Mb 的磁片上。我发现在我目前的救援 root 磁片上, 120 个 inodes 是相当足够了,但是如果你把所有的设备档都放入 /dev 目录中,那麽你很容易会超过 360 个inodes 。使用压缩的 root filesystem 可让你拥有较大的 filesystem ,同时预设会有更多的 inodes ,但是你仍然必须要不就是减少档案数量,要不就是增加 inodes 数目。