【问题标题】:OS Development. Creating bootable iso from files.操作系统开发。从文件创建可引导的 iso。
【发布时间】:2019-04-20 21:20:52
【问题描述】:

我正在研究 OS 开发,我使用了 brokenthorn 资源,但使用了一些不同的工具,即我使用 CentOS、NASM 和 Qemu 作为测试/开发环境。在使用辅助加载器创建可引导的 img 文件时,我遇到了一些问题。

我有两个文件: 1. bootloader.bin 是第一阶段的加载器。 2. stage2.bin 是二级加载器。

为了创建可启动的 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。 谢谢!

【问题讨论】:

  • mount 将查看引导扇区(前 512 个字节)以确定磁盘几何结构以及文件系统 (FAT12) 的类型和大小。包含此数据的引导扇区开头的部分称为BIOS Parameter Block(BPB)。
  • 非常感谢,我已将 BPB 添加到我的 bin 文件中,现在我可以挂载到我的文件系统中了。但是有什么办法只使用 linux 工具吗?

标签: operating-system boot mount osdev floppy


【解决方案1】:

我曾经偶然发现过类似的问题,this answer 可能对你有帮助。

但是,我强烈建议您切换到像 Grub 这样的引导加载程序,并花时间和精力开发您的实际操作系统。为此,我推荐grub resque,因为它使用简单,可以快速创建可以刻录或馈送到虚拟机的 ISO。否则,您可能会淹没在所有这些小事中,例如启用保护模式、加载阶段等等。

【讨论】:

  • 我强烈建议您自己构建引导加载程序,因为知识、能力和其他优势远远超过时间。
  • @vigilante_stark 我相信很明显这个问题可能会引起激烈的讨论。我同意这将不可避免地有助于积累知识,但如果主要目标是开发操作系统,明智的做法是直接使用现有且运行良好的构建块作为 grub 或任何其他通用引导加载程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2023-04-08
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
相关资源
最近更新 更多