Oon tehny sellasen pienen bootloaderin ja kokeillu sitä virtualboxilla. Nyt haluisin kokeilla boottaa sen biosin bootmenusta, mut en löydä sitä sieltä. Kirjotin sen muistitikulle imageUSB ohjelmalla. Pitäis kai tehä siihen joku bootsektori tai jotain, mutta miten?
VOiko tällästä ees boottaa???
tossa sen bootloaderin koodi:
[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
Ja toi on siis koodattu assemblyllä....
En tunne asiaa syvällisemmin mutta henkilökohtainen tapani touhata noissa asioissa liittyy järjestelmien asennuksiin.
Käytän linuxia ja kubuntun mukana on softa:"käynnistuslevyn luonti".
Ohjelmalla voi tehdä boottaavan CD:n DVD:n ja USB-tikun.
Jos koneesi ei tue USB-tikulta käynnistystä, et suoranaisesti voi asialle mitään omalla koodillasi. Kuitenkin voit asentaa esimerkiksi GRUB-käynnistyslataajan, jonka chainload-toiminnolla voit käynnistää tuollaisen yhden sektorin jutun.
Oman käyttöjärjestelmän tekemisessä pääsee helpommin alkuun, kun tekee binäärin sellaisessa muodossa, että esimerkiksi GRUB pystyy lataamaan sen kokonaan. Asiasta on joskus puhuttu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.