【问题标题】:custom boot sector virtual CD自定义引导扇区虚拟 CD
【发布时间】:2012-05-29 09:03:51
【问题描述】:

遵循大量“如何构建自己的操作系统”教程,
我应该通过

将自定义加载程序写入软盘引导扇区
#include <sys/types.h> /* unistd.h needs this */
#include <unistd.h>    /* contains read/write */
#include <fcntl.h>

int main()
{
    char boot_buf[512];
    int floppy_desc, file_desc;

    file_desc = open("./boot", O_RDONLY);
    read(file_desc, boot_buf, 510);
    close(file_desc);

    boot_buf[510] = 0x55;
    boot_buf[511] = 0xaa;

    floppy_desc = open("/dev/fd0", O_RDWR);
    lseek(floppy_desc, 0, SEEK_CUR);
    write(floppy_desc, boot_buf, 512);
    close(floppy_desc);
}

我没有带软驱的 PC,我更喜欢通过 VirtualBox 在虚拟机上尝试整个项目。

那么如何将自定义引导扇区写入将由我的虚拟机调用的虚拟 CD 映像? :)
如果您有任何替代方法,请提出建议:)

【问题讨论】:

    标签: operating-system virtual-machine bootloader bootstrapping


    【解决方案1】:

    (注意:这里假设您使用的是 linux)

    您可以写入一些可用于启动 VirtualBox 的磁盘映像,而不是写入需要真正的软盘驱动器的 /dev/fd0。但是,您需要将文件填充到 1.44MiB,因为这是典型的软盘。

    更好的方法是首先创建引导扇区二进制文件(使用 0xAA55 '魔术代码'),然后执行类似dd if=MyBootsectorBin of=Floppy.flp bs=512 count=2880 的操作来创建输出文件 Floppy.flp。然后可以通过 VirtualBox(或者我的偏好,QEMU,通过qemu -fda Floppy.flp)启动它。

    我不确定虚拟 CD,但您可以轻松创建 ISO 以写入磁盘。所需的程序是 mkisofs,更多信息可以从here 阅读。

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 2012-03-29
      • 2013-07-16
      • 1970-01-01
      相关资源
      最近更新 更多