首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义引导扇区虚拟CD

自定义引导扇区虚拟CD
EN

Stack Overflow用户
提问于 2012-05-23 04:06:48
回答 1查看 763关注 0票数 0

在大量的“如何构建自己的操作系统”教程之后,

我应该写自定义加载器到软盘引导扇区通过

代码语言:javascript
复制
#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映像?:)

如果您有任何替代方法,请推荐:)

EN

回答 1

Stack Overflow用户

发布于 2012-06-25 17:45:04

(注意:这里假设您使用的是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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10709377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档