2017-04-04 97 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等。