![如何格式化磁盘映像以供 MS-DOS 识别?](https://linux22.com/image/1457635/%E5%A6%82%E4%BD%95%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%A3%81%E7%9B%98%E6%98%A0%E5%83%8F%E4%BB%A5%E4%BE%9B%20MS-DOS%20%E8%AF%86%E5%88%AB%EF%BC%9F.png)
我正在尝试使用 bochs 在我的 Android 设备上模拟 Windows。我有以下驱动器:一个用于安装 Windows 的空磁盘映像、一个包含安装文件的虚拟 vvfat 驱动器和一个包含最新版本 DOS 的 cdrom 驱动器。Bochs 可以正确识别所有驱动器。
问题是,当我启动到 DOS 时,无法识别磁盘映像。我使用 vol 命令来识别驱动器。A 被分配给 cdrom,B 出现读取错误,C 被分配给虚拟 vvfat 驱动器,其他驱动器未分配。但是,B 给出的读取错误与映像文件无关。如果我断开除 cdrom 之外的所有驱动器,错误仍然存在。它可能是模拟软盘。
我认为问题出在图像文件中。我在终端中使用 dd 制作了它。我使用了以下配置:
dd if=/dev/zero of=/sdcard/Win.img bs=64k count=8192
并将其格式化为:
mkfs.vfat /sdcard/Win.img
它不起作用。然后我发现旧的 Windows 版本仅支持最大 4 kB 的块或簇大小,所以我做了一个新的:
dd if=/dev/zero of=/sdcard/Win.img bs=4k count=131072
并再次用 mkfs.vfat 对其进行格式化。
由于它仍然不起作用,我开始对文件系统和分区进行实验。我使用 fdisk 对映像进行分区:
fdisk /sdcard/Win.img, n, p, 1, 1, 65
但仍然没有结果。也许我在这里做错了什么,因为当我打印分区表时,它在最后会显示 linux。
我的问题是:有人知道如何用终端格式化磁盘映像以便被 DOS 识别吗?
答案1
mkfs.vfat -F 您可以使用12或者16仅限。(32 与 DOS 不兼容)
mkfs.vfat -F 16 -f 2
您需要避免使用自动方法,因为它要使用的 32 位文件系统与任何 DOS 程序不兼容。
12 位文件系统传统上是为软盘保留的。尽管可以使用,但其最大大小是 FAT16 的 1/4 或 512mb。
在 DOS 中,硬盘通常是 FAT16。这就是为什么我说要使用 16 位和小写字母-f 2表示 2 个副本,这是 DOS 的工作方式。
答案2
您可以使用 简化整个过程mkdosfs
,特别是当您需要与 DOS 严格兼容时。mkdosfs
有一个-C
标志可以让您跳过该dd
步骤。要创建名为 的 1.44MB 软盘映像Win.img
,请输入mkdosfs -C /sdcard/Win.img 1440
。
不过,我怀疑问题磁盘映像是不是软盘类型。即使安装 Windows 3.0 也会占用 6-8MB 的磁盘空间。
答案3
您可以从互联网上下载现成的硬盘,包括空白硬盘。人们将它们用作 CD-ROM 的启动映像。
DOS 的扇区大小为 512 字节,如果 Windows 9x 要与早期的 DOS 进行双重启动,请将分区设置为小于 126 MB。这是一个 fat16 分区,win9x 不会将其转换为 fat32。
当您开始分区时,您必须使用 DOS fdisk 创建分区,并使用 format 格式化分区。您可以从软盘执行此操作。vol 只能看到创建的分区。您必须将主分区设置为“活动”,否则它将无法启动。
格式化后,您就可以sys
驱动器并安装 DOS、Windows......
答案4
默认情况下,fdisk 会创建“Linux”类型的分区。您需要将其更改为“Windows”。返回 fdisk 并输入(在您已经输入的内容之后)“t”、“1”、“b”。保存并退出。