我对操作系统非常感兴趣,并且正在学习相关课程。因此,我被分配了一个项目,去实现一个简单的操作系统。
他们为我提供了简单的操作系统实现乔什。
我可以按照给出的所有说明,使用 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 软盘驱动器。