Linux中的虚拟软盘驱动器

3

我正在研究一份操作系统开发教程,链接在这里。然而,由于它是基于Windows作为开发平台的,我想知道是否有一个类似的软件(或某种方法)可以拥有虚拟软盘驱动器。


呵呵,我知道。但是,我找不到新的教程。它仍然使用16位和32位。:( 如果您知道好的资源,请指引我一下。 - Ankit
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实际上是一个文件,您可以导航到并在文件浏览器中看到。它是由内核创建的抽象文件,用于与实际软盘驱动程序通信。

你应该使用格式化选项。例如,缩进4个空格的格式类似于<pre>。阅读手册以了解其他格式化选项。 - nalply

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接