我正在研究操作系统开发,我使用brokenthorn资源,但使用了一个稍微不同的工具,即我使用CentOS、NASM和Qemu作为测试/开发环境。在使用辅助加载程序创建可引导img文件时,我遇到了一些问题。
我有两个文件:1.bootloader.bin,它是第一阶段加载程序。2.阶段2b,其中为二次装载机。
为了创建可引导的img文件,我做了以下操作:
- dd if=/dev/zero of=floppy.iso bs=1024 count=1440--创建空文件
- mkfs.vfat-F 12 floppy.iso--在文件中创建文件系统
- dd if=/bin/bootloader.bin of=floppy.iso bs=512 count=1 conv=notrunc--将第一个加载程序写入引导扇区
- sudo mount-o loop floppy.iso/mnt/floppy/--尝试使用以前创建的FAT-12文件系统装载文件系统以写入辅助加载程序
在最后一步中,我得到了以下错误:
mount: /dev/loop0 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
你能帮我理解我做错了什么吗?还有什么其他方法可以用来创建带有文件系统的可引导img。谢谢
我曾经偶然发现过类似的问题,这个答案可能会对你有所帮助。
然而,我强烈建议您改用Grub这样的引导程序,并花费时间和精力开发您的实际操作系统。为此,我推荐grub resque
,因为它使用简单,可以快速创建ISO,您可以将其刻录或馈送到虚拟机。否则,你可能会淹没在所有这些小事中,比如启用保护模式,加载你的阶段等等