3

我在这里玩操作系统开发教程。但是,由于它基于 Windows 作为开发平台,我想知道是否有等效的软件(或某种方式)来拥有虚拟软盘驱动器。

4

2 回答 2

3

有一个非常普遍的误解,即简单地安装映像会神奇地模拟硬件。在 Linux 中使用 mount 命令挂载文件系统映像只会将该映像中的文件显示在您挂载到的目录中。没有软盘驱动器的仿真。我不知道有任何适用于 Linux 的软盘模拟器。请阅读此线程,尤其是我的帖子,目前位于线程的末尾,简单解释安装与仿真: http: //forum.osdev.org/viewtopic.php ?f=1&t=21589 。

请注意,QEMU、Bochs 和 VirtualBox 确实将软盘驱动器模拟到虚拟机。那是硬件的管理程序级仿真。我不知道任何用于 Linux 的软盘驱动器的内核级仿真。

但是您有可能使用 dd、wxHex、mount 命令和一些虚拟化和/或机器仿真软件(例如 QEMU、Bochs 或 VirtualBox)来完成您想做的事情。

映像软盘示例(某些命令可能需要 root 权限,前置“sudo”或通过“su”放入 root shell 以获得 root 权限):

dd if=/dev/floppy0 of=$HOME/images/my_floppy_image

然后做:

openssl md5 $HOME/images/my_floppy_image

获取图像的 md5 哈希,然后再次图像到第二个文件:

dd if=/dev/floppy0 of=$HOME/images/my_floppy_image2

散列第二张图像,并确保它们匹配。

您可以使用 wxHex 打开图像进行十六进制编辑。如果您以 root 身份运行 wxHex,它甚至可以通过硬件抽象文件打开和编辑,直接进入软盘(打开 /dev/floppy0 或其他)。

通过回送设备挂载镜像:

sudo mount -o loop $HOME/images/my_floppy_image /media/floppy

软盘或映像的第一个扇区(前 512 个字节)是 VBR(卷引导记录),应该包括引导加载程序。由于这在技术上是文件系统的一部分,因此您可以从仅挂载文件系统的环回设备访问它。如果您改为通过环回设备挂载硬盘映像中的分区,并且引导加载程序位于 MBR(已挂载分区的文件系统之外),则无法从环回设备访问引导加载程序,这又是, 只挂载一个文件系统。

仅获取 VBR:

dd if=/dev/floopy0 of=$HOME/images/my_floppy_VBR bs=512 count=1

当然,您可以颠倒任何 dd 事情以从映像转到软盘或其他映像。

将图像吹到软盘上:

dd if=$HOME/images/my_floppy_image of=/dev/floppy0

仅将 VBR 吹到软盘上:

dd if=$HOME/images/my_floppy_VBR of=/dev/floppy0 bs=512 count=1

或者,如果上面的内容把你不想被吹倒的东西吹倒了,也许是这样的:

dd if=$HOME/images/my_floppy_VBR of=/dev/floppy0 bs=440 count=1

只要做你必须做的事。

从图像中获取 VBR:

dd if=$HOME/images/my_floppy_image of=$HOME/images/my_floppy_VBR bs=512 count=1

从图像中获取前 440 个字节:

dd if=$HOME/images/my_floppy_image of=$HOME/images/my_floppy_first_440 bs=440 count=1

从上面的示例中,您应该能够弄清楚如何将 VBR 或仅来自给定源(软盘或图像)的前 440 个字节吹到图像上,编辑图像。“if”代表“输入文件”,“of”代表“输出文件”。请记住,即使是真正的软盘(与映像相反)也由文件(如 /dev/floppy0)引用。是的,/dev/floppy0 实际上是一个您可以在文件浏览器中导航并查看的文件。它是一个由内核创建的抽象文件,用于与实际的软盘驱动器通信。

于 2012-05-22T07:25:56.407 回答
1

虚拟软盘驱动器似乎只在该教程中用于创建 Bochs 可以启动的虚拟磁盘。Linux 在这方面实际上更加灵活。您需要使用的是循环设备。我不知道如何将它与 Bochs 一起使用 - 你需要阅读文档:)

于 2012-04-15T03:33:40.387 回答