本教程会遵照El-Torito标准生成ISO文件。
编写内核文件
这里我们简单的写一个打印helloworld的汇编即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #define print(x) movb $0x0E, %ah; \ movb $(x), %al; \ int $0x10
.globl start start: .code16 cli cld
print('H') print('e') print('l') print('l') print('o') print(' ') print('W') print('o') print('r') print('l') print('d') print('!')
|
我们编译上述文件
1 2 3
| $ gcc -nostdinc -c -o boot.o boot.S $ ld -N -e start -Ttext 0x7C00 -o boot.out boot.o $ objcopy -S -O binary -j .text boot.out boot.out
|
然后我们将内容放在新的位置
1 2
| $ mkdir -p prepared_for_iso/boot $ cp boot.out prepared_for_iso/boot/loader.sys
|
创建iso文件
1 2 3
| $ xorriso -as mkisofs -R -J -c boot/bootcat \ -b boot/loader.sys -no-emul-boot -boot-load-size 4 \ -o ./bootable.iso ./prepared_for_iso
|
最后我们可以用qemu或者vmware启动
1
| $ qemu-system-i386 -cdrom bootable.iso
|