Het laden van de kernel zonder het handmatig intikken van parameters is makkelijk te doen als we de infopage van grub lezen. Overeenkomstig de paragraaf getiteld "configuration" kunnen alle opdrachten die worden gebruikt voor het booten in een bestand met de naam menu.lst worden opgegeven en geplaatst in de directory /boot/grub.
![]() | Zorg dat je de bestandsnaam menu.lst correct intikt, dus met een kleine letter L na de punt en niet het getal één. |
Voor het automatiseren van de systeemstart hebben we een init daemon nodig. Dit weten we omdat de Bootdisk-HOWTO en From-Powerup-To-BASH-Prompt-HOWTO beiden init benoemen als het eerste te starten programma nadat de kernel is geladen. In de laatste HOWTO wordt tevens in detail ingegaan op het /etc/inittab bestand en de organisatie van de opstartscripts. Dit kan van nut zijn gezien FHS, de blauwdruk die we tot dusverre hebben gebruikt, geen aanbevelingen doet voor initscripts.
We zullen ook op zoek moeten gaan naar de opdracht shutdown om te voldoen aan het tweede doel, de mogelijkheid voor het elegant afsluiten van het systeem.
Het doorzoeken van de Linux Software Map op Ibiblio op het trefwoord "init" geeft een groot aantal resultaten. Uit het lezen van de From-Powerup-To-BASH-Prompt-HOWTO weten we echter dat de meeste Linux systemen gebruik maken van een initdaemon in de stijl van System V. De zoekopdracht verfijnend met het extra trefwoord "System V" geeft veel betere resultaten. Het pakket sysvinit bevat init, shutdown, halt en reboot hetgeen we nodig hebben. De versie in het LSM record lijkt nogal oud, maar er staat een URL in van de primaire site dat waarschijnlijk zal leiden naar de laatste versie.
De manpage voor init noemt een FIFO genaamd /dev/initctl dat vereist is voor init om te communiceren met andere programma's in het pakket sysvinit. We zullen dit bestand aan moeten maken voor een juiste werking van init.
Het gebruiken van een GRUB configuratiebestand is iets complexer dan het handmatig specificeren van de bootloaderopdrachten. Er zijn directives voor features als menu's, standaardselecties en timeouts die moeten worden opgegeven in het configuratiebestand als ook de bekende opdracht voor het laden van de kernel. In de infopage voor GRUB is veel van de benodigde informatie terug te vinden. We kunnen het configuratiebestand van GRUB op het ontwikkelsysteem ook als sjabloon gebruiken. Er bestaat echter enige inconsistentie tussen verkopers betreffende de naam en lokatie van het bestand. Ongeacht wat het pad is op het ontwikkelsysteem, moet het /boot/grub/menu.lst zijn op het Pocket Linux Systeem.
Veel van de populaire GNU/Linux distributies maken gebruik van initscripts in de stijl van System V. Aangezien we gebruik maken van een "sysvinit" daemon, lijkt het zinnig tevens gebruik te maken van scripts in de stijl van System V. De volgende documenten roeren allen initscripts in de stijl van System V op een of andere wijze aan en zullen dienen als referenties bij het bouwen van de scripts voor dit project:
De Debian Policy Manual -- online beschikbaar op http://www.debian.org/doc/debian-policy.
De Linux Standard Base specificatie -- te downloaden in diverse formaten vanaf http://www.linuxbase.org/spec/index.shtml.
Essential System Administration, 3rd Edition geschreven door Aeleen Frisch -- beschikbaar in bibliotheken, boekwinkels of direct van O'Reilly Publishing op http://www.oreilly.com/.
Na een blik te hebben geworpen op één of twee van de bovenstaande referenties, zouden we een tamelijk goed beeld moeten hebben hoe het systeeminitialisatieproces in de stijl van System V werkt. We zouden ook kunnen weten wat er voor nodig is om initscripts in de stijl van System V voor het Pocket Linux project aan te maken. Hieronder een beknopte opsomming van hetgeen er moet gebeuren:
Maak een inittab bestand aan dat een rc script aanroept met een numeriek argument dat het runlevel aanduidt.
Schrijf een rc script dat gebruik maakt van het runlevelargument om de van toepassing zijnde "K" en "S" scripts uit te voeren.
Pas het eerder samengestelde script local_fs aan dat het start en stop argumenten accepteert.
Maak nieuwe scripts aan voor shutdown en reboot.
Zet /etc/rcN.d directory's en links naar scripts op in /etc/init.d.
Zoals altijd zijn de BASH(1) manpage en de Advanced BASH Scripting Guide zeer behulpzaam bij het schrijven en begrijpen van shellscripts.