Linux中的虚拟软盘驱动器

时间:2012-04-15 02:27:08

标签: operating-system virtual floppy

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

2 个答案:

答案 0 :(得分:2)

有一种太常见的误解,即简单地安装图像会神奇地模仿硬件。在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”或drop to root权限通过“su”获得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实际上是一个可以导航到文件浏览器并在文件浏览器中查看的文件。 它是由内核创建的抽象文件,用于与实际的软盘驱动器进行通信。

答案 1 :(得分:1)

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