Bootloader help ... почему USB-диск загружается даже без загрузочной подписи? - PullRequest
2 голосов
/ 08 апреля 2011

Я читал эту статью о том, как загрузиться с дискеты: http://www.cs.umbc.edu/portal/help/nasm/boot.shtml

Я дам код здесь:

; boot1.asm   stand alone program for floppy boot sector
; Compiled using            nasm -f bin boot1.asm
; Written to floppy with    dd if=boot1 of=/dev/fd0

; Boot record is loaded at 0000:7C00,
    ORG 7C00h
; load message address into SI register:
    LEA SI,[msg]
; screen function:
    MOV AH,0Eh
print:  MOV AL,[SI]         
    CMP AL,0         
    JZ done     ; zero byte at end of string
    INT 10h     ; write character to screen.    
        INC SI         
    JMP print

; wait for 'any key':
done:   MOV AH,0       
        INT 16h     ; waits for key press
            ; AL is ASCII code or zero
            ; AH is keyboard code

; store magic value at 0040h:0072h to reboot:
;       0000h - cold boot.
;       1234h - warm boot.
    MOV  AX,0040h
    MOV  DS,AX
    MOV  word[0072h],0000h   ; cold boot.
    JMP  0FFFFh:0000h    ; reboot!

msg     DB  'Welcome, I have control of the computer.',13,10
    DB  'Press any key to reboot.',13,10
    DB  '(after removing the floppy)',13,10,0
; end boot1

Я собрал его, используя nasm, а затем скопировал его на USB-накопитель, используя dd. Затем я перезапустил систему, и она работала просто отлично. Моя проблема в том, почему это работает, даже если мы не определили 0xaa55 на 511-м байте? Пожалуйста, объясни мне это. А также, что такое холодная перезагрузка и теплая перезагрузка? Пожалуйста, дайте мне хорошую ссылку, где я могу подробно узнать о процессе загрузки ...


Редакция: Спасибо за ваши ответы! но я обнаружил, почему это происходит в этом случае. Это было то, что я сделал этот диск загрузочным некоторое время назад и отформатировал его много раз после этого. Оказывается, формат не влияет на MBR. Итак, когда я распечатал шестнадцатеричный дамп содержимого диска с помощью lde, я обнаружил, что подпись все еще там. Теперь, когда я удалил его, загрузка с диска показывает ошибку «Операционная система не найдена».

1 Ответ

4 голосов
/ 09 апреля 2011

Это зависит от BIOS вашего компьютера.Многие реализации BIOS не требуют подписи AA55 для загрузки гибких дисков, и, поскольку USB-накопитель не является ни гибким диском, ни жестким диском, именно BIOS должен решить, как с ним обращаться.Я предполагаю, что ваш BIOS не требует подписи для дискет и рассматривает USB-накопители как дисководы, что означает, что он также не требует подписи для USB-накопителей.

См. Комментарий Джима о разнице между холоднымии теплый ботинок.

...