Ontwerp en bouw een besturingssysteem/Hallo wereld/De eerste test: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Virtlink (overleg | bijdragen)
Geen bewerkingssamenvatting
 
Regel 2:
 
== Linkbestand ==
Ons kernelbestand heeft drie secties ('.text', '.data' en '.bss'), en begint in het geheugen op de 1 MiB grens (<code>.text 0x00100000 :0</code>). Het bestand begint bij het label <ttcode>start</ttcode> (<code>ENTRY(start)</code>). De drie secties zijn uitgelijnd op een 4 KiB grens (<code>. = ALIGN(4096)</code>).
 
{{Code|Titel='''link.ld'''|Code=<pre>
Regel 32:
 
== Assembleren en linken ==
Om <ttcode>start.asm</ttcode> te assembleren, moeten we <ttcode>nasm</ttcode> aanroepen. We willen dat het uitvoerformaat 'elf' wordt (<code>-f elf</code>), want GRUB, de bootloader die we gaan gebruiken, kan daar goed mee overweg. Het te maken objectbestand is <ttcode>start.o</ttcode> (<code>-o start.o</code>) en het enige te assembleren bestand is nu <ttcode>start.asm</ttcode>. Als je fouten tegenkomt, verhelp die dan voordat je verder gaat.
<pre>
nasm -f elf -o start.o start.asm
Regel 38:
<!-- Mogelijke fout(en): Op een 64-bit computer proberen te compileren? -->
 
Als we dit gedaan hebben, hebben we een <ttcode>start.o</ttcode> bestand er bij. Dit moet nog gelinkt worden; dan worden alle onbekende symbolen opgelost en komt er een uitvoerbaar bestand uit. Het linkbestand is <ttcode>link.ld</ttcode> (<code>-T link.ld</code>) en de te maken binary is <ttcode>kernel.bin</ttcode> (<code>-o kernel.bin</code>). Het enige objectbestand is <ttcode>start.o</ttcode>. Ook hier kunnen fouten ontstaan. Verhelp die eerst voordat je verder gaat.
<pre>
ld -T link.ld -o kernel.bin start.o
Regel 45:
{{Bericht
|titel=Foutmelding?
|bericht=Als je één van de volgende meldingen krijgt, kijk dan eens in het hoofdstuk [[../../Werkomgeving en hulpmiddelen/Toolchain|Toolchain]] voor informatie over hoe je een ''cross-platform toolchain'' maakt, en gebruik dan de <ttcode>ld</ttcode> uit de toolchain (bijv. <ttcode>i586-elf-ld</ttcode>).
<pre>
ld: i386 architecture of input file 'start.o' is incompatible with xxx output
Regel 54:
|type=info}}
 
Nu hebben we een <ttcode>kernel.bin</ttcode> bestand, maar we kunnen het nog niet starten. In het volgende hoofdstuk staat hoe <ttcode>kernel.bin</ttcode> op een CD image kan worden gezet. Als het goed is verschijnt het menu van GRUB dan op je scherm. Als het besturingssysteem dan start, verschijnt er eventueel nog wat GRUB uitvoer, en daarna een knipperende cursor.
 
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.