The Linux Bootdisk HOWTO 中译版(3)
2008-02-23 07:22:42来源:互联网 阅读 ()
在其 filesystem 上包含运作 Linux 系统必备档案的一张磁片。这张磁片不一定有 kernel 或 boot loader 。
一旦 kernel 被启动後, root disk 就可以独立於其它磁片来运作系统。通常 root disk 的内容会被自动地 copy 到 RAM 而成为 ramdisk 。这使得 root disk 的存取变得更为快速,而且可释放一台软碟机给工具程式磁片 (utility disk)。
boot/root
一张同时包含 kernel 与 root filesystem 的磁片。换句话说,这张磁片包含不用硬碟而能启动与运作 Linux 系统之所有必备项目。这种磁片的优点在於简单轻便 -- 每一项必备的东西都放在同一张磁片上。然而,随著档案 size 的逐渐增加,让所有东西都存在同一张磁片上就越显困难,甚至利用压缩也一样。
utility
一张包含 filesystem 的磁片,但是并不是要挂上做为 root file system 来使用。这张磁片可视为额外的资料片 (data disk) 。你可以利用这种磁片把原本过多而不能放在 root disk 上的工具程式放在其上。
一般而言,当我们提及 ``建造一张 bootdisk'' 时,是指造出 boot ( kernel ) 与 root (files) 这两个部分。这两个部分不是放在一起 (一张单张的boot/root disk) ,就是两张分开的磁片 (boot root disks) 。对救援磁片而言最具弹性之做法,可能是使用两张分开的 boot 与 root 磁片,再加上一张或多张的 utility diskettes 以处理多出来的东西。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 建立一个root filesystem -- Building a root filesystem
造出 root filesystem 涉及选择能让系统正常运作所必备的档案。在这一节中,我们将叙述如何建造一个 压缩的 root filesystem 。在磁片上建造一个直接挂上做为根目录 (root) 之未经压缩的 filesystem 是较不普遍的观念;这个替代方案叙述在 Non-ramdisk Root Filesystem 这一节中。
4.1 概观 -- Overview
root filesystem 必须包含支援完整 Linux 系统运作所需的每一个项目。为了能够达成这个目的,这张磁片必须包括能让 Linux 系统运作最起码 (minimum) 的需求:
基本的档案系统架构,
最起码的目录: /dev, /proc, /bin, /etc, /lib, /usr, /tmp,
基本的工具程式: sh, ls, cp, mv, etc.,
最起码的组态设定档: rc, inittab, fstab, etc.,
设备档: /dev/hd*, /dev/tty*, /dev/fd0, etc.,
Runtime 函式库以提供工具程式所使用之基本功能 (functions) 。
当然,任何系统只有在你能於其上执行某些东西时才会显得有用,而一张 root 磁片通常只有在你能做到以下事情时才会显得有用:
检查另一台磁碟机的 file system ,举例来说,检查你硬碟上的 root file system ,你必须能够从另一台磁碟机启动 Linux ,例如你可以用一张 root 磁片办到这件事。然後你可以在你原本的 root 磁碟机未被挂上时,对其执行 fsck 。
使用档案 (archive) 与压缩工具程式,诸如 cpio, tar, gzip 与 ftape ,从备份 (backup) 恢复储存所有或部分你原本 root 磁碟机的资料。
我们将叙述如何建造一个 压缩的 filesystem ,就是平时被压缩在磁片上,只有当开机时,才会解压缩後存入ramdisk 。 用压缩 filesystem 的方式,你可以在一张标准的 1440K 磁片上放入很多档案 (大约 6 megabytes) 。因为 filesystem 比磁片大很多,我们不能直接把它建在磁片上。我们必须在其它地方建立它,压缩它,然後再把它 copy 到磁片上。
4.2 制作 filesystem -- Creating the filesystem
为了建造如此的一个 filesystem ,你需要一个多出而够大的设备,能够让你在压缩之前存放所有的档案。你将需要一个能够存放大约 4 megabytes档案的设备。有以下几种选择:
使用 ramdisk (DEVICE = /dev/ram0)。在这种情况下,记忆体被模拟成一台磁碟机。 Ramdisk 必须大到能够存放一个适当大小的 filesystem 。如果你使用 LILO ,请检查你的组态设定档 (/etc/lilo.conf) ,找到一行像
RAMDISK = nnn
这行决定可以分配给 ramdisk 的 RAM 之极大值。预设值是 4096K ,这应该是足够了。你应该不可能尝试在一台少於 8MB RAM 的电脑上使用如此的 ramdisk 。 请检查以确认你有一个设备档像是 /dev/ram0, /dev/ram 或是 /dev/ramdisk 。如果没有,请自己以 mknod (major number 1, minor 0)造出 /dev/ram0 。
如果你有一个未使用且够大的硬碟 partition (差不多几megabytes大就可以了),就使用它吧。
使用一个 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 最後会比必要的大出很多。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
