我在这里玩了一个操作系统开发教程。但是,由于它基于Windows作为开发平台,我想知道是否有等效的软件(或某种方式)来拥有虚拟软盘驱动器。
有一种太常见的误解,认为简单地安装映像会神奇地模拟硬件。在 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"获得根权限的根外壳):
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 实际上是一个文件,您可以在文件浏览器中导航到并查看该文件。它是一个由内核创建的抽象文件,用于与实际的软盘驱动器通信。
虚拟软盘驱动器似乎只在本教程中使用,以创建Bochs可以启动的虚拟磁盘。Linux在这方面实际上更加灵活。您需要使用的是一个循环设备。我不知道如何将其与 Bochs 一起使用 - 您需要阅读文档:)