首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux中的虚拟软盘驱动器

Linux中的虚拟软盘驱动器
EN

Stack Overflow用户
提问于 2012-04-15 10:27:08
回答 2查看 6.3K关注 0票数 3

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-15 11:33:40

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

票数 1
EN

Stack Overflow用户

发布于 2012-05-22 15:25:56

有一种太普遍的误解,认为简单地挂载一个映像就可以神奇地模拟硬件。在Linux中,使用mount命令挂载文件系统映像只会将该映像中的文件显示在挂载它的目录中。未模拟软盘驱动器。我不知道Linux上有什么软盘模拟器。请阅读这篇帖子,特别是我的帖子,目前在帖子的末尾,解释了简单的挂载与仿真:http://forum.osdev.org/viewtopic.php?f=1&t=21589

请注意,QEMU、Bochs和VirtualBox确实为虚拟机模拟了一个软盘驱动器。这是管理程序级别的硬件仿真。我不知道在Linux上有任何内核级的软盘驱动器仿真。

但是,使用dd、wxHex、挂载命令和一些虚拟化和/或机器仿真软件(比如QEMU、Bochs或VirtualBox )也可以完成您想要完成的任务。

镜像软盘示例(一些命令可能需要root权限,在命令前加上"sudo“,或者通过root权限的"su”删除到root shell ):

代码语言:javascript
复制
dd if=/dev/floppy0 of=$HOME/images/my_floppy_image

然后执行以下操作:

代码语言:javascript
复制
openssl md5 $HOME/images/my_floppy_image

要获取图像的md5散列,然后再次将图像映射到第二个文件:

代码语言:javascript
复制
dd if=/dev/floppy0 of=$HOME/images/my_floppy_image2

对第二个图像进行散列,并确保它们匹配。

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

通过环回设备挂载镜像:

代码语言:javascript
复制
sudo mount -o loop $HOME/images/my_floppy_image /media/floppy

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

仅获取VBR:

代码语言:javascript
复制
dd if=/dev/floopy0 of=$HOME/images/my_floppy_VBR bs=512 count=1

当然,您可以将任何dd内容从镜像反转到软盘或其他镜像。

将图像放到软盘上:

代码语言:javascript
复制
dd if=$HOME/images/my_floppy_image of=/dev/floppy0

仅将VBR放入软盘:

代码语言:javascript
复制
dd if=$HOME/images/my_floppy_VBR of=/dev/floppy0 bs=512 count=1

或者,如果上面的事情影响了你不想要的事情,可能是这样的:

代码语言:javascript
复制
dd if=$HOME/images/my_floppy_VBR of=/dev/floppy0 bs=440 count=1

做你必须做的事。

从镜像中获取VBR:

代码语言:javascript
复制
dd if=$HOME/images/my_floppy_image of=$HOME/images/my_floppy_VBR bs=512 count=1

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

代码语言:javascript
复制
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实际上是一个您可以导航到并在文件浏览器中查看的文件。它是一个由内核创建的抽象文件,用于与实际的软盘驱动器通信。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10159058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档