Ontwerp en bouw een besturingssysteem/Appendix B/Diskette image maken
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:
- een fysieke diskette, als je een testcomputer gebruikt;
- 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.