2017-04-04 44 views
0

我希望MINIX首先執行我的代碼,然後繼續執行默認的引導加載程序。如何添加代碼到MINIX bootloader?

我至今是:

org 0x7c00 
jmp 0:start 
start: 
    mov ax, cs  
    mov ds, ax  
    mov es, ax  
    mov ss, ax  
    mov sp, 0x8000 

    ; ... my code ... ; 

    ; that is supposed to mark code as bootloader: 
    times 510-$+$$ db 0 
    dw 0xaa55 

我的整個代碼是here。我通過執行命令來運行它:

pkgin -y in nasm 
nasm -f bin my_bootloader.asm -o my_bootloader 
dd bs=512 count=1 if=my_bootloader of=/dev/c0d0 
reboot 

重新啓動後,我的程序啓動,但當然系統不會在之後加載。我能做些什麼來將原始引導程序「附加」到我的代碼中?

回答

0

通常的解決方案是執行所有MBR引導加載程序的操作:將它們移出標準位置(00600是通常的目標位置),然後從磁盤的另一個扇區加載「常規」引導加載程序到07C00並跳到它。

你可以找到的彙編代碼這樣做,與意見,無論是在MINIX(GAS彙編),在previous releases of MINIX(ACK語法,接近但不完全一樣NASM),在SYSLINUX如果你堅持使用NASM,on the web等。