Operativ system uden floppy disk

Tags:    programmering

Hej allesammen.
Sådan som jeg har forstået det, så vil din computer (i grove træk) når du trykker på power-knappen udføre koden der ligger i din boot sector (0x7c00) og det er her din bootloader ligger.
Hvis man så skal have sin Assembly bootloader til at udføre noget C kode skal C koden vel loades ind i din anden sector (0x500) og så skal din bootloader vel jmp'e til offset 0 på hukommelses adressen 0x500..?
Jeg har læst en tutorial om det på Google, men her var det vist som AS86 kode og her blev der booted fra en floppy disk.
Er der en der kan vise mig noget NASM-kode der kan gøre dette? Men husk det skal blive bygget om til en BIN fil som kan blive lavet om til en ISO fil som så bliver kørt af Microsoft Virtual PC - og IKKE af en floppy disk.

Håber der er nogen der kan hjælpe :).
-Benjamin.



6 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej allesammen.
Sådan som jeg har forstået det, så vil din computer (i grove træk) når du trykker på power-knappen udføre koden der ligger i din boot sector (0x7c00) og det er her din bootloader ligger.
Hvis man så skal have sin Assembly bootloader til at udføre noget C kode skal C koden vel loades ind i din anden sector (0x500) og så skal din bootloader vel jmp'e til offset 0 på hukommelses adressen 0x500..?
Jeg har læst en tutorial om det på Google, men her var det vist som AS86 kode og her blev der booted fra en floppy disk.
Er der en der kan vise mig noget NASM-kode der kan gøre dette? Men husk det skal blive bygget om til en BIN fil som kan blive lavet om til en ISO fil som så bliver kørt af Microsoft Virtual PC - og IKKE af en floppy disk.

Håber der er nogen der kan hjælpe :).
-Benjamin.


Det er godt nok op af bakke at du vil starte ud med en bootbar CD (iso). Det er så meget mere kompliceret, så start hellere ud med floppyen...det MÅ Virtual PC kunne finde ud af, og når du så kan se, at din kode virker, så kan du gå videre og lave en CD...det er en hel del mere kompleks.



Hej allesammen.
Sådan som jeg har forstået det, så vil din computer (i grove træk) når du trykker på power-knappen udføre koden der ligger i din boot sector (0x7c00) og det er her din bootloader ligger.
Hvis man så skal have sin Assembly bootloader til at udføre noget C kode skal C koden vel loades ind i din anden sector (0x500) og så skal din bootloader vel jmp'e til offset 0 på hukommelses adressen 0x500..?
Jeg har læst en tutorial om det på Google, men her var det vist som AS86 kode og her blev der booted fra en floppy disk.
Er der en der kan vise mig noget NASM-kode der kan gøre dette? Men husk det skal blive bygget om til en BIN fil som kan blive lavet om til en ISO fil som så bliver kørt af Microsoft Virtual PC - og IKKE af en floppy disk.

Håber der er nogen der kan hjælpe :).
-Benjamin.


Det er godt nok op af bakke at du vil starte ud med en bootbar CD (iso). Det er så meget mere kompliceret, så start hellere ud med floppyen...det MÅ Virtual PC kunne finde ud af, og når du så kan se, at din kode virker, så kan du gå videre og lave en CD...det er en hel del mere kompleks.

Okay.. jeg har også ombestemt mig, så min far tager nogle floppy'er med hjem fra arbejde i dag, og så kan jeg komme i gang :).
Men hvis jeg booter fra en floppy, behøver jeg vel ikke engang
Fold kodeboks ind/udKode 
i toppen af min NASM kode, for så kan jeg vel bare lave en 512 bytes stor fil med NASM og så skrive dèt ind i de 512 første bytes af min floppy, og så boot'e fra den.. eller hvad?



Indlæg senest redigeret d. 01.03.2010 14:18 af Bruger #15718
Tjoo, men hvorfor en fysisk diskette ? Virtual PC kan vel opfatte en almindelig fil som om det var en diskette...eller hvad ?
Det kan alle andre virtuelle maskiner, jeg kender til.

Smid følgende i bunden af din Nasm bootkode:
Fold kodeboks ind/udKode 


Det sørger for, at bootfilen bliver 512 bytes stor og at de sidste to bytes er 0xaa55, som er bootsektorens signatur.



Tjoo, men hvorfor en fysisk diskette ? Virtual PC kan vel opfatte en almindelig fil som om det var en diskette...eller hvad ?
Det kan alle andre virtuelle maskiner, jeg kender til.

Smid følgende i bunden af din Nasm bootkode:
Fold kodeboks ind/udKode 


Det sørger for, at bootfilen bliver 512 bytes stor og at de sidste to bytes er 0xaa55, som er bootsektorens signatur.

Jeg vil hellere bruge en fysisk diskette :). Men skal jeg bare lave en O eller en BIN fil ud af mit NASM kode og så gå ind I "Computer>A:" og så Ctrl+V eller hvad?




Jeg vil hellere bruge en fysisk diskette :). Men skal jeg bare lave en O eller en BIN fil ud af mit NASM kode og så gå ind I "Computer>A:" og så Ctrl+V eller hvad?


Bios'en kender ikke til de forskellige linkable formater, så det skal være en "ren" fil. Dvs. nasm uden '-f'.

Du kan bruge RawWrite til at skrive til bootsektoren på disketten. By the way så skal du nok regne med at miste filsystemet på disketten, så whatever der ligger på den forsvinder.




Jeg vil hellere bruge en fysisk diskette :). Men skal jeg bare lave en O eller en BIN fil ud af mit NASM kode og så gå ind I "Computer>A:" og så Ctrl+V eller hvad?


Bios'en kender ikke til de forskellige linkable formater, så det skal være en "ren" fil. Dvs. nasm uden '-f'.

Du kan bruge RawWrite til at skrive til bootsektoren på disketten. By the way så skal du nok regne med at miste filsystemet på disketten, så whatever der ligger på den forsvinder.

Super.. mange tak for ideen til RawWrite det virker nu :).



Indlæg senest redigeret d. 02.03.2010 13:41 af Bruger #15718
t