Ontwerp en bouw een besturingssysteem/Appendix B/Diskette image maken

Uit Wikibooks

Diskettes zijn niet zomaar opstartbaar. Omdat we in dit boek gebruik maken van de gratis open-source bootloader GRUB Legacy, kan deze ervoor zorgen dat de diskette wel opstartbaar wordt.

Je hebt twee mogelijkheden:

  1. een fysieke diskette, als je een testcomputer gebruikt;
  2. een diskette image, als je een emulator gebruikt.

De keus is aan jou. Voordelen van de fysieke diskette zijn dat je niks extra hoeft te installeren en het op elke computer met een diskettestation kan gebruiken. Voordeel van een diskette image in combinatie met een emulator is dat het testen veel makkelijker en sneller gaat. En je kan altijd nog die image alsnog op een fysieke diskette zetten.

Fysieke diskette[bewerken]

Neem een fysieke diskette en maak hem klaar voor gebruik:

  • formatteer de diskette;
  • controleer op fouten.
mount /dev/fd0 /mnt/floppy

Diskette image[bewerken]

Linux[bewerken]

Om een image te maken onder Linux kan je gebruik maken van de volgende commando's:

dd if=/dev/zero of=floppy.img bs=1024 count=1440
losetup /dev/loop0 floppy.img
mkfs -t msdos /dev/loop0
mount -o loop /dev/loop0 /mnt/floppy

Het mounten van de diskette image gaat net zo:

losetup /dev/loop0 floppy.img
mount -o loop /dev/loop0 /mnt/floppy
...

Als je klaar bent, unmount je de image weer:

...
umount /mnt/
losetup -d /dev/loop0

Windows[bewerken]

Voor diverse versies van Windows (officieel tot en met Windows XP, maar Vista werkt ook) is er de handige simpele tool genaamd VFS, welke hier gedownload kan worden. Hiermee kan je een virtueel diskettestation maken en gebruiken.

GRUB Legacy installeren[bewerken]

Het handigst is om een reeds gemaakte floppy image te zoeken met FAT12 (DOS) bestandssysteem die GRUB (Legacy) opstartbaar is.

Maar om zelf GRUB Legacy op de diskette (image) te installeren heb je twee diskettes nodig. Op de eerste diskette kopieer je de stage1 en stage2 delen van GRUB Legacy naar de eerste twee sectoren van de diskette.

Onder linux kan dit bijvoorbeeld met de volgende commando's, vanuit de directory met de stage1 en stage2 bestanden:

dd if=stage1 of=/dev/fd0 bs=512 count=1
dd if=stage2 of=/dev/fd0 bs=512 seek=1

De tweede diskette formatteer je in het FAT12 (DOS) bestandssysteem, en je maakt er de map /boot/grub op aan. In die map /boot/grub plaats je GRUB's stage1 en stage2 bestanden.

Nu start je de (virtuele) PC op met de eerste diskette, zodat GRUB Legacy geladen wordt. Doe nu de tweede diskette in de computer. Bij de prompt voer je het volgende commando uit:

setup (fd0)

GRUB Legacy installeert zich nu op de tweede diskette, en maakt die opstartbaar.

Belangrijk is nu dat het stage2 bestand op de diskette nooit meer van fysieke plek op de diskette verandert. Maak hem daarom alleen-lezen (en het liefst ook een systeembestand). Vanuit de /boot/grub directory kan dat onder Linux met het volgende commando:

chmod a-w stage2

Onder DOS (of Command Prompt cmd.exe) met het volgende commando:

attrib +r +s stage2

Ten slotte moet je in de map /boot/grub nog een menu.lst bestand maken, waarin het menu van GRUB Legacy komt te staan:

menu.lst

default=0
timeout=10

title Besturingssysteem
    root (fd0)
    kernel /kernel.bin

title Besturingssysteem (2)
    root (fd0)
    kernel /kernel.bin

Het menu.lst bestand bevat twee items, zodat het menu weergegeven wordt. Op die manier hebben we nog even 10 seconden voordat onze kernel de computer overhoop haalt. Later kan je hier items voor bijvoorbeeld kernels met verschillende RAM-disks toevoegen.

De diskette is nu klaar voor gebruik.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.