【问题标题】:How Do I Put My Bootloader And Kernel On A USB如何将引导加载程序和内核放在 USB 上
【发布时间】:2019-09-17 22:01:54
【问题描述】:

我在学习 2 阶段引导加载程序时编写了一个引导加载程序和基本内核作为一个有趣的项目,我想在 USB 的第 1 扇区(或 MBR)加载我的引导加载程序,在第 2 扇区加载内核。我已经使用 NASM 将它们编译到 Bootloader.bin 和 Kernel.bin 中。我只需要一点帮助就可以将它们实际写入 USB。我可以访问 Windows 和 Linux,所以任何答案都值得赞赏。

Bootloader.asm

[BITS 16]
[ORG 0x7C00]

ResetDisk:
XOR AH, AH
INT 0x13
JC ResetDisk

ReadDisk:
MOV BX, 0x8000
MOV ES, BX
MOV BX, 0x0000

MOV AH, 0x02
MOV AL, 1
MOV CH, 0x00
MOV CL, 0x02
MOV DH, 0x00
INT 0x13
JC ResetDisk
JMP 0x8000:0x0000

TIMES 510-($-$$) DB 0
DW 0xAA55

内核.asm

[BITS 16]
[ORG 0x8000]

MOV SI, HelloString
CALL PrintString
JMP $

PrintChar:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x0F
RET

PrintString:
MOV AL, [SI]
INC SI
OR AL, AL
JZ Exit
CALL PrintChar
JMP PrintString
Exit:
RET

HelloString DB 'Hello World!',0

TIMES 512-($-$$) DB 0

【问题讨论】:

标签: x86 usb nasm bootloader osdev


【解决方案1】:

找出哪个设备代表/dev中的USB密钥(密钥本身,而不是上面的分区),然后您可以简单地使用dd或类似的工具来复制您的数据。

例如,/dev/xxx 是您的 USB 密钥:

cat Bootloader.bin Kernel.bin > image.bin
sudo dd if=image.bin of=/dev/xxx bs=4k

请注意,您可能必须先umount 任何来自 USB 密钥的已挂载分区。另请注意,这不言而喻,首先确保 USB 密钥上没有任何重要内容

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2012-07-03
    • 2011-02-01
    • 1970-01-01
    • 2021-02-28
    • 2012-03-02
    • 2020-09-10
    • 1970-01-01
    • 2013-11-13
    相关资源
    最近更新 更多