要显示创建虚拟软盘映像文件作为超级用户或用户可以运行sudo命令,有很多帖子.基本步骤是:
dd命令创建空的1.44MB图像文件mkfs.msdosumount 虚拟软盘映像文件我的问题是,如果我只是一个无法运行sudo命令的普通用户,我如何按照上述步骤创建虚拟软盘映像并在其中写入内容?
非常感谢.
如何将.bin文件写入软盘/虚拟软盘/软盘映像的第一个扇区?
我正在尝试启动一个简单的512字节引导加载程序.各地的大小都说"512字节",所以我应该已经很好了.
附加信息:
引导程序只显示一个字符串,我正在学习简单的汇编.一些工作是在Windows中完成的,一些是在Ubuntu 14.04(Trusty Tahr)中完成的(如果这很重要).
即使它具有引导加载程序标志,它也无法启动.
在Windows(XP-7)上,是否有一种可靠的方式在C++中以编程方式区分USB软盘驱动器和USB闪存驱动器?
目前,我正在使用WMI Win32_LogicalDisk在检测到新实例时获取更新,然后使用LogicalDisk对象的DriveType属性来确定基本类型.这很好用,除了软盘驱动器和USB闪存驱动器都是DriveType DRIVE_REMOVABLE,所以为了区分它们(软盘和闪存),我正在使用IOCTL_STORAGE_GET_HOTPLUG_INFO界面来确定设备是否可以热插拔,并且正在研究校长认为这是一个闪存驱动器,而不是软盘.再说一遍,我认为在内置软盘驱动器的情况下,这种方法效果很好(如果使用WDK API和WMI来获取信息的效率有点低),但遗憾的是USB软盘驱动器在很多时候也是热插拔的,所以有没有明确的方法来区分闪存和USB软盘驱动器,我可以看到.我知道有些属性可以工作,比如检查它是否映射到保留的驱动器A:或B(编辑:仅当机器肯定有软盘驱动器时才相关 - 请参阅MS-KB:如何更改Windows XP中的驱动器号分配),或者看一下描述,但我真的想要一些更可靠的东西.
很抱歉很长的解释,但只是想明确!谢谢
我一直在阅读BrokenThorn的操作系统开发教程,我正在创建和加载第二阶段引导加载程序.本教程适用于Windows,但我在Linux(Ubuntu 13.04)中这样做.
这就是我所做的:
floppy.img下~/Documents/floppy用mkfs.vfat命令boot.asm使用nasm 编译的文件给我boot.bindd if=boot.bin of=~/Documents/floppy/floppy.img bs=512 count=1因此,我有第一阶段bootloader的软盘映像.在使用qemu开始时,它工作正常.
但是,在我创建第二阶段引导加载程序之后,(如果我是正确的)我将必须floppy.img将第二阶段2安装到已安装的文件系统上.在这种情况下,如何使用qemu启动已安装的软盘?它甚至可能吗?如果没有,我如何使用第二阶段引导加载程序.
请原谅我任何愚蠢的假设/问题,因为我是新手.
继续" 如何编写和编译Amiga应用程序? "问题,需要哪个开发库才能从软盘启动Amiga应用程序?
更新:(2012-04-10)为了解决问题的解决,我编辑了标题和正文,只关注图书馆.仍然缺少从软盘部署工具启动,可以在另一个问题中询问.
我试图检查驱动器A中是否存在任何磁盘:(在我的程序安装之后,我需要确保计算机无法从安装软盘启动).我已经尝试使用_access方法(未定义引用...),FILE*并在软盘内制作目录并在检查后将其删除.不幸的是,DOS显示了关于将磁盘放入驱动器的丑陋文本(销毁我的TUI并让用户认为驱动器中的磁盘很重要).那么如何抑制此消息,或安全检查磁盘是否存在于驱动器中?
有谁知道/记得软盘的实际读/写速度?我想用这个作为一个花絮来争论我们的 Sharepoint 服务器有多慢,但所有提供有关磁盘信息的网站似乎都没有它们的实际工作速度。
我已经在Assembly中完成了一部分操作系统,但是现在我也想为其构建一个自举程序,而不是使用GRUB。当我在Assembly中开发测试操作系统时,我记得我是这样启动的:
org 0x7c00
bits 16
; OS Kernel Here
times 510 - ($-$$) db 0
dw 0xAA55
Run Code Online (Sandbox Code Playgroud)
这我已经知道了。现在,我要使用它并执行“真实”操作系统,它将是一个* .bin文件,写入软盘的第二个扇区。那我想知道一点
我试图通过循环DriveInfo.GetDrives()结果来识别驱动器类型.
但是对于USB和软盘我都得到了相同的DriveType.Removable价值.
我该如何区分它们?
我在写一个内核; 在编写这么复杂的东西之前,我认为它不仅是有用的,而且对于对内核,引导加载程序,寄存器,BIOS等进行理论读取也是不完美的.
这篇文章说(我引用):
The boot sector loader.
This loads the first 512-byte sector from the boot disk into RAM and jumps to it.
Run Code Online (Sandbox Code Playgroud)
然后继续说:
The first sector of a diskette can be loaded at address 0000:7C00.
Run Code Online (Sandbox Code Playgroud)
因此,引导扇区加载器将位于存储器地址0x7C00(如果我是正确的)的磁盘的512字节数据加载到RAM中; 现在,我的问题是:
我有6年的编程经验,但他们都在系统上使用高级语言,这是由内核实现的.
任何帮助表示赞赏.谢谢!:)