2. 步骤

步骤概要

此外,请确保您已阅读 第 1 节第 1.2 节

2.1. 创建 ISO 镜像

选择(或创建)具有最大可用磁盘空间的文件系统。请记住,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 的实用程序,例如 readcdsdd

有关制作 CD 1:1 副本的更多信息,请参见 [CD-Writing-HOWTO],请参见 第 1.3 节

感谢 Giblhauser Carl Michael 提供关于运行块的信息。

2.2. 挂载 ISO 镜像

下一步是挂载 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 镜像文件中,这就是您当前正在查看的内容!)

2.3. 在系统重新启动时挂载镜像

现在我们已经手动挂载了镜像,并确保它工作正常,需要在/etc/fstab文件中创建一个条目,以便在下次系统启动时重新挂载该镜像。重要的是在父文件系统的条目之后添加条目,例如/home(我使用 vim,但 emacs, joe, picojed 同样有效)

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

2.4. 使用 Samba 在 Windows 网络上共享它

您需要安装并运行 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 计算机上的网上邻居浏览共享。

2.5. 使用 NFS 在 Unix 网络上共享镜像

确保您的 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目录包含在导出列表中。