我用汇编语言创建了一个非常小的引导加载程序,并希望在我的物理硬件上对其进行测试,因此我使用 USB 驱动器来执行此操作。我已将汇编转换为机器代码和 .bin 文件,然后对 bin 文件运行文件命令,得到:
DOS/MBR 引导扇区
所以我知道它是可启动的,并且我也能够在模拟器中正常运行它。
我已经在谷歌上搜索这个问题超过 4 个小时了,我找不到任何有用的方法,很多人说要使用 Rufus,但我没有看到 Rufus 3.3 中任何将 bin 文件刷入 USB 驱动器的设置。
我有一台 Unix 和 Windows 机器,所以任何方法都可以。
我一直没能弄清楚如何将 .bin 引导加载程序刻录到 USB 并从中启动,如果有人知道该怎么做,那就太好了。
作为参考,以下是代码:
BITS 16
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, helloText
call printStr
jmp $
helloText db "Hello, World!", 0
printStr:
mov ah, 0Eh
.repeat:
lodsb
cmp al, 0
je .done
int 10h
jmp .repeat
.done:
ret
TIMES 510 - ($ - $$) db 0
dw 0xAA55
我使用以下 NASM 命令汇编代码:
nasm -f bin -o bootLoad.bin bootLoad.asm
从这里我需要将 bin 刻录到 USB 驱动器并从中启动。有人有任何工具或有关如何实际执行此操作的信息吗?
先感谢您!
答案1
在 Linux 下,通常使用 dd 将图像“刻录”到驱动器。尝试:
sudo dd if=/path/to/bootloader.bin of=/path/to/drive bs=1M
“if” 是输入文件的缩写,“of” 是输出文件的缩写,通常指向 /dev/sda。如果您不知道驱动器的名称,请先输入“sudo fdisk -l”。
答案2
@murderbaer 给出了正确答案。
sudo dd if=/path/to/bootloader.bin of=/path/to/drive bs=1M
if 是输入文件的缩写,而 'of' 是输出文件的缩写,通常指向 /dev/sda。如果您不知道驱动器的名称,请先输入 'sudo fdisk -l'。
唯一的问题是现代计算机/启动菜单不支持没有分区的驱动程序,但如果您在 BIOS 中启用了旧版支持,则代码将运行并且可以启动。