我正在尝试编写一个引导加载程序(你好世界排序)。我正在使用 Bochs 进行模拟(平台 Linux-Ubuntu)。但我无法为我的二进制文件制作可启动的 iso。虽然在教程中使用了 VFD(虚拟软盘),但它适用于 windows 平台。这是我的引导加载程序代码(仅用于测试)
;*********************************************
; Boot1.asm
; - A Simple Bootloader for testing if cd is booting or not
;
; Operating Systems Development Tutorial
;*********************************************
[BITS 16] ;tell the assembler that its a 16 bit code
[ORG 0x7C00] ;Origin, tell the assembler that where the code will
Start:
cli ; Clear all Interrupts
hlt ; halt the system
times 510 - ($-$$) db 0 ; We have to be 512 bytes. Clear the rest of the bytes with 0
dw 0xAA55 ; Boot Signature
我在 Ubuntu 上尝试了主 ISO。它将二进制文件转换为 ISO,但不转换为可引导的 ISO。Bochs 显示错误“cd is not eltorito”,我在谷歌上搜索并发现它是可启动 ISO 的标准。我必须添加哪些其他内容才能使其可启动。我最后已经添加了引导签名。谁能推荐一个可靠的应用程序来在 Ubuntu 上制作可启动的 ISO?由于这个原因,我的工作被卡住了......或者我很确定很多人必须参与 Linux 平台上的操作系统开发。你们是如何测试的?
我用 Unetbootin 和我的引导加载程序的 iso 制作了一个可引导的闪存驱动器。切换到Virtual-box并稍微扭曲以从pendrive启动,但仍然显示它无法启动。我认为有人说得对,你在操作系统开发中需要很大的耐心。
:phew 终于我的引导加载程序运行了...
我使用虚拟软盘映像在 Virtual box 上启动我的程序。以下是万一有人遇到困难的步骤。
1.创建具有引导加载程序的 boot.asm。
2.用nasm编译。nasm -f bin boot.asm -o boot.bin。
3.sudo mkfs.msdos -C /home/用户名/floppy.img 1440
4.sudo chown用户名./floppy.img。 链接文本
5.用dd复制。dd if=./boot.bin of=./floppy.img。
6.运行 VirtualBox 并选择 floppy.img 作为新虚拟机的启动设备。
PS:您也可以将 floppy.img 附加到设备“循环”并像真正的软盘一样安装它。