Linux 系统管理

作者:Mark Komarinski

Linux 最令人惊叹的功能之一是读取其他操作系统的文件系统。PC 架构最常用的文件系统是 DOS FAT(文件分配表)文件系统。这是 PC-DOS、MS-DOS、DR-DOS 等使用的文件系统。Linux 有两种方法可以读取 FAT 格式的文件。首先,您可以将支持编译到内核中(在 'make config' 中的 DOS 文件系统提示符下),然后使用以下命令挂载驱动器:mount -t msdos /dev/hda3 /mnt。这将把您的第一个驱动器的第三个分区挂载到 /mnt 目录。

如果您有硬盘,这当然很好,但是软盘呢?如果您像我一样,您不会标记您的磁盘,而重要的东西(如下个月的文章)最终会和您未使用的 Windows 3.1 安装软盘(现在已格式化)一起放在柜台上。挂载和卸载(使用 umount)将会很麻烦,因为您现在必须发出三个命令才能获得目录:挂载、目录,然后卸载。当然,您可以将其放在批处理文件中,但是挂载需要一段时间。必须有更好的方法。确实有。

大多数 Linux 发行版都带有一个名为 mtools 的软件包。这个方便的软件包是为 Suns 和其他没有简单 FAT 支持的系统设计的。它与系统无关,因此您无需修改内核或重新编译它。只需安装软件即可。大多数命令的名称都是 DOS 用户熟悉的,例如 del、dir、md、rd 等。不同之处在于 mtools 命令在命令前面加上字母“m”,以指定它是 mtools 命令。因此,“dir”将是“mdir”,“del”将是“mdel”,依此类推。

由于 mtools 不会对您的内核执行任何操作,因此您无需挂载和卸载软盘。需要从软盘快速复制文件吗?只需使用“mcopy”即可。左侧的框列出了可用的 mtools 命令及其各自的 DOS 对应命令。有两个命令没有真正的 DOS 对应命令:mread 和 mwrite。这两个命令被定义为低级读取或写入。Mread 将仅从 FAT 文件系统读取到 Linux 文件,而 mwrite 将仅从 Linux 文件写入到 FAT 文件系统。如果您处于多用户设置中,并且希望某些人只能读取 FAT 文件系统,而另一些人只能写入 FAT 文件系统,则可能需要使用 mread 和 mwrite。请记住,FAT 文件系统没有用户所有权,如果用户可以访问 mtools,则可以修改所有文件。如果您计划拥有多个用户,请务必牢记这一点。

为了正确使用 mtools,您必须设置一个 /etc/mtools 文件。为此,您必须了解 Linux 如何识别您的软盘驱动器。正如我在之前的文章中提到的,您的所有物理设备(如调制解调器、显示器、打印机和声卡)都作为特殊文件列在 /dev 目录中。驱动器也是如此。/dev 目录中有一系列以 fd0 或 fd1 开头的文件,格式如下

/dev/fdXYNNNN其中 X 0 - 第一个软盘驱动器 (A) 1 - 第二个软盘驱动器 (B) Y d - 低密度 5.25" D - 低密度 3.5" h - 高密度 5.25" H - 高密度 3.5" NNNN - 三位或四位数字,列出该驱动器上的 1K 块数。高密度 5.25" 可以有 360、720 或 1200,而高密度 3.5" 可以有 360、720 和 1440。低密度 5.25" 为 360,低密度 3.5" 有 360 和 720。

这意味着 /dev 目录中大约有 18 个文件专门用于软盘驱动器。幸运的是,除了特殊情况外,您无需记住这些组合。

为什么?因为另外两个文件 /dev/fd0 和 /dev/fd1 被设置为自动感应设备。当 Linux 启动时,它会检查您的系统设置 (BIOS) 中您拥有的软盘驱动器。然后 BIOS 会告诉内核您拥有的软盘驱动器、它们的尺寸(5.25" 或 3.5")以及它们是高密度还是低密度。此外,当您在驱动器中插入预格式化的磁盘时,Linux 可以确定您拥有的是高密度还是低密度磁盘。因此,您只需使用 'mount -t msdos /dev/fd1 /mnt' 即可在高密度驱动器中挂载低密度软盘。

好的,现在回到 mtools 和 /etc/mtools。

/etc/mtools 中的条目如下所示

d <device> <fat> <tracks> <heads>
<sectors>

其中

d 您要使用的驱动器盘符。是的,您可以像一直以来想要的那样将第一个软盘驱动器分配给“Q:”。只需确保您的条目中没有“:”。只有驱动器盘符。

device 在大多数情况下,这将是您要使用的 /dev 条目。可以是 /dev/fd0、/dev/hda1 或 /dev/sda1(对于 SCSI 用户)。

fat FAT 表的大小。软盘驱动器和硬盘分区的大小为 12,而大型硬盘分区的大小为 16。如果您不确定您的硬盘设置,请使用 'fdisk -l' 命令,该命令会列出您的所有硬盘(无论是 IDE 还是 SCSI)上的所有分区。DOS 驱动器应显示“DOS 12-bit <32M”或“DOS 16-bit >=32M”。“-bit”之前的内容就是您想要的 <fat>。

如果您有硬盘,或者将 /dev/fd0 或 /dev/fd1 用作条目的设备,您可以将其余部分填写为 0。这告诉 mtools 请求内核找出答案。对于其他条目,您需要指定

tracks 驱动器上的磁道数。高密度有 80 条磁道,而低密度有 40 条。

heads 磁头数。始终为 2,除非您有一个非常老的驱动器。就像那些您必须翻转软盘才能读取第二面的驱动器一样。

sectors 磁盘的扇区数。3.5 英寸磁盘有 18 个扇区,而 5.25 英寸磁盘有 15 个扇区。

您想要使用磁道、磁头或扇区指定驱动器的唯一情况是您想要格式化磁盘时。设置您最想格式化的驱动器。对我来说,这是我的高密度 3.5 英寸驱动器,所以我的条目看起来像这样

e /dev/fd0H1440 12 80 2 18

我将 A 到 D 驱动器设置为我的两个软盘驱动器和两个 DOS 硬盘驱动器。这有助于我在处理驱动器时避免混淆。

设置好 /etc/mtools 文件后,保存它并尝试访问您刚刚设置的驱动器。尝试 'mdir c:' 以查看它是否有效。如果您获得目录,则表示它正在工作。如果您收到“Probable non-DOS disk”或类似的错误消息,则您可能正在查看错误的分区。再次编辑您的 /etc/mtools 文件,并使用 'fdisk -l' 命令找到正确的分区。设置好所有驱动器后,您就可以享受所有 mtools 命令的乐趣了。

现在开始格式化软盘。现在您已经设置了 /etc/mtools,这变得更容易了。如果您有新磁盘,则需要先对软盘进行低级格式化,然后才能在其上放置 DOS FAT 文件系统。这两个步骤都由 DOS format 命令完成,但我们必须分两步完成(除非您编写 shell 脚本)。如果您的所有软盘都是 DOS FAT 格式,则可以跳过下一段,了解如何使用 mtools 进行快速格式化。如果您的磁盘是 tar 格式或已被用作 Linux 启动盘,则您不必对其进行低级格式化,因为 mformat 比 DOS 的 “format /q” 命令更灵活。

首先是低级格式化。这可以使用 fdformat 命令完成。fdformat 命令使用您之前用于定义

/etc/mtools 中的 device 的设备文件作为其选项。例如,您放入驱动器“A”的高密度 3.5 英寸磁盘是 /dev/fd0H1440。因此,格式化该磁盘将是

fdformat /dev/fd0H1440

您应该会看到一条小消息,说明它有 80 个磁道,每磁道 18 个扇区,总共 1440KB。然后您应该看到它正在格式化,然后验证软盘。完成后,您可以放置 DOS FAT 文件系统。

要安装 FAT 文件系统,请使用 mformat 实用程序。它只会接受驱动器盘符,这就是为什么您希望在 /etc/mtools 中设置不同的驱动器类型。由于我已将我的高密度 3.5 英寸驱动器设置为驱动器 E,因此我只需键入

mformat e

并且我的软盘现在将是 DOS FAT 格式。由于这仅仅是放置一个新的 FAT 文件系统和根目录,因此它与 DOS 下的快速格式化程序(如“format /q”)相当。如果您收到错误或磁盘使用 mdir 无法读取,请返回并低级格式化软盘,然后重新格式化。

一旦磁盘上有了 FAT 文件系统,它就与 mtools、原生 DOS 兼容,并且可以从 Linux 内核挂载。就好像您在 DOS 下格式化它一样。

您还可以将任何受支持的 Linux 文件系统(如 ext2fs、xiafs 和 extfs)放在软盘上。只需将 mformat 命令替换为用于创建该特定文件系统的命令,例如 mke2fs。您也可以拥有自己的扩展文件系统软盘库,每个软盘大小为 1.4MB。

使用 mtools 将帮助您保留一些 DOS 兼容性,并且易于设置和使用。

获取 mtools

如果您的发行版未附带 mtools,或者您想为其他机器获取 mtools,则可以使用匿名 ftp 连接到 prep.ai.mit.edu 或某些镜像站点(gnu.announce 中的帖子几乎总是包含很长的镜像站点列表),设置二进制模式,cd 到 /pub/gnu,并获取 mtools-2.0.7.tar.gz。它应该可以在 Linux 下编译,没有问题。MTools 和 DOS 命令表

加载 Disqus 评论