如何将操作系统的引导加载程序写入 U 盘?
How can I write a bootloader of my operating system to a USB stick?
我试图为我自己的操作系统制作一个引导加载程序。我试图用 imageusb 程序将它写入 USB 记忆棒(来自格式:img、iso 和 bin,没有任何效果)。然后我尝试启动它,但我没有在 BIOS 启动菜单中找到它。我用汇编编码。如何使用我自己的引导加载程序引导操作系统?
这是我的部分代码:
[BITS 16]
[ORG 0x7C00]
JMP Main
Main:
MOV SI, Text
CALL PrintString
CALL NextLine
MOV SI, PressKeyForBoot
CALL PrintString
CALL Boot
JMP $
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
NextLine:
MOV AL, 0
stosb
mov AH, 0x0E
MOV AL, 0x0D
INT 0x10
MOV AL, 0x0A
INT 0x10
ret
Boot:
CALL RebootKey
db 0x0ea
dw 0x0000
dw 0xffff
RebootKey:
mov ah, 0
int 0x16
cmp ah, 01h
jne RebootKey
PrintString:
next_character:
MOV AL, [SI]
INC SI
OR AL, AL
JZ exit_function
CALL PrintCharacter
JMP next_character
exit_function:
RET
Text db 'Loading...', 0
PressKeyForBoot db 'Press ESC key to reboot.', 0
TIMES 510 - ($ - $$) db 0
DW 0xAA55
要将引导加载程序代码写入 U 盘的第一个扇区,您可以在 Windows 上使用 dmde。打开 dmde 程序并选择正确的物理设备。在下一个屏幕上按 f2
显示扇区的原始二进制数据。您必须将引导加载程序写入 USB 记忆棒的前 512 个字节。引导加载程序签名 0xAA55
应该是第一个扇区的最后两个字节(即第 510、511)。要写入数据使用 ctrl+e
,要保存更改使用 ctrl+w
。有关详细信息,请查看 dmde window 顶部的菜单栏。
执行此操作后,请确保您的 USB 记忆棒在 BIOS 引导顺序设置中的优先级高于任何其他具有有效加载程序的磁盘。
此外,@RossRidge 关于将任何分区标记为活动分区的无用性是正确的,而块设备在第一个扇区中有引导加载程序。
P.S. 这是我的 article(仅限俄语)关于为 USB 记忆棒制作自己的引导程序。
我试图为我自己的操作系统制作一个引导加载程序。我试图用 imageusb 程序将它写入 USB 记忆棒(来自格式:img、iso 和 bin,没有任何效果)。然后我尝试启动它,但我没有在 BIOS 启动菜单中找到它。我用汇编编码。如何使用我自己的引导加载程序引导操作系统?
这是我的部分代码:
[BITS 16]
[ORG 0x7C00]
JMP Main
Main:
MOV SI, Text
CALL PrintString
CALL NextLine
MOV SI, PressKeyForBoot
CALL PrintString
CALL Boot
JMP $
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
NextLine:
MOV AL, 0
stosb
mov AH, 0x0E
MOV AL, 0x0D
INT 0x10
MOV AL, 0x0A
INT 0x10
ret
Boot:
CALL RebootKey
db 0x0ea
dw 0x0000
dw 0xffff
RebootKey:
mov ah, 0
int 0x16
cmp ah, 01h
jne RebootKey
PrintString:
next_character:
MOV AL, [SI]
INC SI
OR AL, AL
JZ exit_function
CALL PrintCharacter
JMP next_character
exit_function:
RET
Text db 'Loading...', 0
PressKeyForBoot db 'Press ESC key to reboot.', 0
TIMES 510 - ($ - $$) db 0
DW 0xAA55
要将引导加载程序代码写入 U 盘的第一个扇区,您可以在 Windows 上使用 dmde。打开 dmde 程序并选择正确的物理设备。在下一个屏幕上按 f2
显示扇区的原始二进制数据。您必须将引导加载程序写入 USB 记忆棒的前 512 个字节。引导加载程序签名 0xAA55
应该是第一个扇区的最后两个字节(即第 510、511)。要写入数据使用 ctrl+e
,要保存更改使用 ctrl+w
。有关详细信息,请查看 dmde window 顶部的菜单栏。
执行此操作后,请确保您的 USB 记忆棒在 BIOS 引导顺序设置中的优先级高于任何其他具有有效加载程序的磁盘。
此外,@RossRidge 关于将任何分区标记为活动分区的无用性是正确的,而块设备在第一个扇区中有引导加载程序。
P.S. 这是我的 article(仅限俄语)关于为 USB 记忆棒制作自己的引导程序。