步骤概要
创建一个大的分区来存放 CD 镜像文件。
使用 dd 命令将 CD 复制到镜像文件。
将 CD 镜像文件挂载到目录树中。
使用 Samba, NFS 等等在网络上共享该目录。
选择(或创建)具有最大可用磁盘空间的文件系统。请记住,CD-ROM 可以容纳大约 640MB 的数据,因此如果您想在网络上共享 8 个完整的 CD,您将需要 5.1GB 的可用空间。
以 root 用户身份登录或 "su" 到 root 用户。
bash# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda5 1.4G 82M 1.3G 6% / /dev/hda1 15M 827k 14M 6% /boot /dev/hda7 2.4G 1008M 1.3G 43% /usr /dev/hda8 23.6G 11.7G 11.7G 50% /home |
在这里/home文件系统拥有最大的可用空间,因此它是用于转储 CD 镜像的最合适的文件系统。
bash# cd /home bash# mkdir image bash# cd image |
现在,将 CD 复制到 ISO 镜像。您必须知道 CD-ROM 驱动器的设备名称(通常是/dev/cdrom,也可能是/dev/scd0对于 SCSI CD-ROM)。我将使用 Mandrake 发行版 CD-ROM 作为示例。
bash# dd if=/dev/cdrom of=mndrk81.iso |
"if=" 是输入文件,"of=" 是输出文件。您应该看到一条消息,说明输入记录数和输出记录数。
如果您看到 i/o 错误,它们很可能是由于 CD 上的导入和导出运行块引起的。如果输入记录数和输出记录数不匹配,您可能会遇到问题,否则镜像很可能没问题,但您永远无法知道错误是否发生在读取 CD 的 ISO 部分时(由于 CD 上的灰尘或划痕)。
还存在其他读取 CD 的实用程序,例如 readcd 或 sdd。
有关制作 CD 1:1 副本的更多信息,请参见 [CD-Writing-HOWTO],请参见 第 1.3 节。
感谢 Giblhauser Carl Michael 提供关于运行块的信息。
下一步是挂载 ISO 镜像文件。让我们在/mnt下创建一个目录来放置挂载的文件。
bash# cd /mnt bash# mkdir iso bash# cd iso bash# mkdir mndrk81 |
现在将 ISO 镜像文件挂载到这个新创建的目录
bash# mount -o loop,unhide -t iso9660 -r /home/image/mndrk81.iso /mnt/iso/mndrk81 |
"-o loop" 表示使用将文件作为块设备挂载的选项。 unhide 选项显示隐藏文件。"-t iso9660" 表示该文件采用 iso9660 CD-ROM 格式。"-r" 表示以只读方式挂载。
感谢 Amar Chaouche 指出 mount 命令的 unhide 选项。
现在你可以
bash# cd mndrk81 bash# ls -al |
您应该看到实际 CD 上的文件和目录的列表(ls)(只是现在它们位于 ISO 镜像文件中,这就是您当前正在查看的内容!)
现在我们已经手动挂载了镜像,并确保它工作正常,需要在/etc/fstab文件中创建一个条目,以便在下次系统启动时重新挂载该镜像。重要的是在父文件系统的条目之后添加条目,例如/home(我使用 vim,但 emacs, joe, pico 或 jed 同样有效)
bash# vim /etc/fstab |
在如下所示的行之后(或者您放置镜像的任何文件系统)
/dev/hda8 /home ext2 defaults 1 2 |
使用您的文本编辑器插入以下行
/home/image/mndrk81.iso /mnt/iso/mndrk81 iso9660 ro,loop,auto,unhide 0 0 |
您需要安装并运行 Samba 才能执行后续步骤(这不在本说明的范围内,请参见 第 1.3 节)。如果尚未安装,请查阅您的 Linux 发行版的说明以安装 Samba 软件包。或者您可以访问 Samba 网站 http://us1.samba.org/samba/samba.html 获取安装说明、二进制文件和/或源代码。
要在 Windows 网络上共享您挂载的 CD,只需在/etc/smb.conf文件中创建一个类似于以下内容的节
[cdimages] comment = All Shared CD Images path = /mnt/iso public = yes writable = no |
这将共享/mnt/iso目录下所有子目录。要将共享挂载到本地驱动器(在本例中为 I: 驱动器),请在 Windows 计算机上调出一个 MS-DOS 提示符并键入以下内容
C:\> net use I: \\yourlinuxmachine\cdimages |
现在,每个 CD 镜像都将显示为 Windows 计算机的 I: 驱动器上的一个子目录。
要仅将 Mandrake CD 镜像挂载到驱动器盘符(我们将使用 M:, 其根驱动器将完全对应于 CD,就像将其插入 CD-ROM 驱动器一样),请在/etc/smb.conf文件中创建以下节。
[mndrk81] comment = Mandrake Linux 8.1 path = /mnt/iso/mndrk81 public = yes writable = no |
然后,在您的 MS-DOS 提示符下,使用以下命令挂载它
C:\> net use m: \\yourlinuxmachine\mndrk81 |
此处提供的 Samba smb.conf 文件节已简化且不安全。 Samba 共享存在更多选项,这些选项限制了谁可以挂载共享,控制用户身份验证的执行方式,以及是否可以通过 Windows 计算机上的网上邻居浏览共享。
确保您的 Linux 机器上 NFS 正在运行并已正确配置,然后将以下内容添加到/etc/exports文件中,使用您自己喜欢的选项
# sample /etc/exports file /mnt/iso (ro,insecure,nohide,all_squash) |
nohide 选项允许您挂载父目录,而无需显式挂载其下的所有导出的子目录。
现在尝试运行
bash# exportfs -r |
这应该重新导出您/etc/exports文件中创建以下节。
现在,当键入 "showmount -e 您的linux机器" 时,您应该看到/mnt/iso目录包含在导出列表中。