是否可以使用 usb 设备启动软盘驱动的操作系统

是否可以使用 usb 设备启动软盘驱动的操作系统

我对操作系统非常感兴趣,并且正在学习相关课程。因此,我被分配了一个项目,去实现一个简单的操作系统。

他们为我提供了简单的操作系统实现乔什

我可以按照给出的所有说明,使用 NASM 汇编器编译引导扇区和基本内核部分。我还添加了自己的代码来显示机器的其他信息。

总结,乔什是一款设计为从软盘驱动器启动的操作系统。但我没有任何可以使用软盘驱动器的设备。

JOSH 设计者规定dd if=boot.bin bs=512 count=1 of=/dev/fd0将 boot.bin 文件放入软盘。

我需要知道是否可以在 USB 驱动器上创建虚拟软盘部分,以及我是否可以从该驱动器启动该操作系统。

因为我使用 ubuntu,所以如果有人能向我解释如何在我的 USB 上创建这个虚拟软盘以及如何将 boot.bin 和 kernel.bin 文件放入该虚拟驱动器中,我将不胜感激。

据我了解,我们应该为这个 boot.bin 文件设置某种 512 字节的扇区。

如果有人能帮助我,我将非常感激。

答案1

你应该调查PXE 启动

我并不是说您必须使用 PXE 而不是软盘(尽管您最终可能会这样做)。

但是 PXE 启动技术使用虚拟软盘来引导最终操作系统的加载。并且有各种相关工具可以与虚拟软盘配合使用(填充它们,将它们存储为文件)以及通过网络发送虚拟软盘以供目标机器启动。因此,您很可能在 PXE 世界中发现所需的东西。

我以前用 Tftpd32 来做这个。我本来要发布一个链接,但 Chrome 现在警告该网站有恶意软件,所以要小心。我相信 Windows 现在也包含这种东西(在 Windows Server 的 WDS 下)。

答案2

没关系,找到了解决办法。

乔什是一个单任务中断驱动的操作系统。我们从网站获取了具有有效启动签名的 512 字节启动文件和一个简单的内核文件(实际上是操作系统)。

现在这个引导扇区只识别FAT12文件系统,所以我们必须使用软盘驱动器来运行它。

我所做的是创建一个虚拟软盘并将启动文件刻录到该磁盘的 MBR 中,并将内核文件复制到其中,然后在虚拟机中运行它。

我发现这里我们可以使用以下命令创建软盘映像。

~$ cd /media    // open the terminal in your home directory and head to /media

/media$ sudo mkdir floppy     // create a directory in media


// go back to home directory again


~$ mkfs.msdos -C myfloppy.img 1440      // create a floppy disk image of size 1.44 MB

~ $ sudo mount -o loop myfloppy.img /media/floppy/    // mount the image with the floppy directory.

// now open another terminal where your boot.bin file and kernel.bin file is and enter the following

/os$ lsblk    // get the name of the mounted floppy image, you can identify it from the list with a disk that has 1.5 MB size

/os$ sudo dd if=./boot.bin of=/dev/loop0    // now burn the boot file to the MBR

/os$ sudo cp kernel.bin /media/floppy/     // copy the kernel file to the disk image

之后,您可以使用虚拟机从该软盘映像启动。

答案3

我有一个带有软盘模拟功能的旧 USB 棒:您可以在其上写入软盘映像,然后该棒将被检测为 USB 软盘驱动器。

相关内容