diff --git a/nl_NL.ISO8859-1/books/handbook/boot/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/boot/chapter.sgml index 9c2a4d825b..a9ab392ab7 100644 --- a/nl_NL.ISO8859-1/books/handbook/boot/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/boot/chapter.sgml @@ -1,860 +1,872 @@ + + + + Erik + Radder + Vertaald door + + + + Het &os; Opstartproces - Samenvatting + Overzicht booting bootstrap Het proces van het starten van de computer en het laden van het besturingssysteem wordt het bootstrapproces of simpelweg booten genoemd. Het &os; opstartproces levert een grote mate van flexibiliteit doordat gewijzigd kan worden wat er gebeurt als het systeem start en geeft de mogelijkheid om te kiezen uit verschillende geïnstalleerde besturingssystemen op dezelfde computer of zelfs verschillende versies van hetzelfde besturingssysteem of geïnstalleerde kernel. Dit hoofdstuk geeft gedetailleerde informatie over instellingen die gebruikt kunnen worden en hoe het &os; opstartproces veranderd kan worden. Dit omvat alles wat er gebeurt totdat de &os; kernel wordt geladen, gezocht heeft naar apparaten en &man.init.8; start. Dit vindt plaats als tijdens het booten de tekstkleur verandert van helder wit naar grijs. Na het lezen van dit hoofdstuk weet de lezer: Wat de onderdelen zijn van het &os; bootstrap-systeem en hoe zij onderling communiceren; De opties die meegegeven kunnen worden aan de componenten in de bootstrap om het proces te sturen; Meer over &man.device.hints.5;; Alleen voor x86 Dit hoofdstuk beschrijft alleen het opstartproces van &os; dat draait op een Intel x86 systeem. Het Bootprobleem Het aanzetten van een computer en het starten van het besturingssysteem zorgt voor een interessant dilemma. Vast staat dat een computer niet weet wat hij moet doen totdat het besturingssysteem gestart is. Daar valt ook het starten van programma's op schijf onder. Dus als een computer geen programma van schijf kan starten zonder besturingssysteem en het besturingssysteem staat op schijf, hoe wordt het besturingssysteem dan gestart? Dit is een gelijksoortig probleem als dat in het boek De avonturen van Baron von Münchausen. Iemand is in een put gevallen en heeft zichzelf eruit gehaald door zijn laarsriempjes (bootstraps) vast te pakken en zich op te trekken. In het begin van het computertijdperk is de term bootstrap gegeven aan het mechanisme dat het besturingssysteem laadt. Later werd dit afgekort tot booten. Op x86 machines is het Basis Input/Output Systeem (BIOS) verantwoordelijk voor het laden van het besturingssysteem. Om dit te doen zoekt het BIOS op de harde schijf naar het Master Boot Record (MBR), dat op een vaste plek op de schijf staat. Het BIOS heeft voldoende kennis om het MBR te starten en gaat er vanuit dat de MBR de rest van de taken uitvoert die nodig zijn om het besturingssysteem te kunnen laden. + BIOS + - BIOS + Basis Input/Output Systeem - Basis Input/Output System + BIOS Als er maar één besturingssysteem en een schijf geïnstalleerd is, voldoet de standaard MBR. Dit MBR zoekt naar de eerste opstartbare slice op schijf en start de code op deze slice om de rest van het besturingssysteem te laden. Indien er meerdere besturingssystemen op schijven staan, kan er een ander MBR geïnstalleerd worden. ëën dat een die lijst toont met verschillende besturingssystemen en de mogelijkheid geeft om er één te kiezen dat opgestart moet worden. &os; wordt met zo'n MBR geleverd dat geïnstalleerd kan worden. Andere leveranciers van besturingssystemen hebben een alternatieve MBR. Het resterende deel van het &os; bootstrap-systeem is verdeeld in drie fases. De eerste fase wordt gestart door het MBR, dat net voldoende informatie heeft om de computer in een bepaalde toestand te zetten en de tweede fase te starten. De tweede fase kan net iets meer doen voordat hij de derde fase start. De derde fase voltooit het laden van het besturingssysteem. Dit proces is verdeeld in drie fases omdat de PC-standaarden grenzen stellen aan de grootte van programma's die gedraaid kunnen worden in de eerste twee fases van dit proces. Door deze taken aan elkaar te koppelen krijgt &os; een flexibeler laadgedeelte. kernel init Daarna wordt de kernel gestart en begint met het zoeken naar en initialiseren van apparaten. Zodra het kernel-opstartproces klaar is, geeft de kernel de controle over aan het gebruikerproces &man.init.8;, dat controleert of de schijven een bruikbare status hebben. Dan start &man.init.8; de instellingen op gebruikersniveau die de bestandssystemen mount, de netwerkkaarten instelt voor communicatie met het netwerk en in het algemeen worden de processen gestart die moeten draaien op een &os; systeem bij het opstarten. Het MBR en de Bootfases Eén, Twee en Drie MBR, <filename>/boot/boot0</filename> Master Boot Record (MBR) Het &os; MBR bevind zich in /boot/boot0. Dit is een kopie van het MBR, omdat het echte MBR op een speciale plek op de schijf, los van de plek van &os;, moet staan. boot0 is erg simpel, omdat het programma in het MBR uit slechts 512 bytes mag bestaan. Als &os; MBR is geïnstalleerd en er staan andere besturingssystemen op een harde schijf, dan is bij het opstarten een scherm zien dat er ongeveer zo uitziet: <filename>boot0</filename> Schermafbeelding F1 DOS F2 &os; F3 Linux F4 ?? F5 Drive 1 Default: F2 - Andere besturingssystemen, hoofdzakelijk &windows; 95, + Andere besturingssystemen, &windows; in het bijzonder, staan er om bekend dat zij bestaande MBRs overschrijven met die van zichzelf. Als dit is gebeurd of als het bestaande MBR vervangen moet worden door het &os; MBR: &prompt.root; fdisk -B -b /boot/boot0 device Waar device het apparaat is waar de computer van boot, zoals ad0 voor de eerste IDE-schijf ad2 voor de eerste IDE-schijf op de tweede IDE-controller, da0 voor de eerste SCSI-schijf, enzovoort. Voor &linux; gebruikers die de voorkeur aan LILO geven om het opstartproces te beheren, moet /etc/lilo.conf gewijzigd worden voor &os; of gekozen worden tijdens het &os; installatieproces. Als de &os; boot manager is geïnstalleerd, dan &linux; weer opgestarten worden en aan het LILO instellingenbestand /etc/lilo.conf de volgende opties toegevoegd worden: other=/dev/hdXY table=/dev/hdb loader=/boot/chain.b label=&os; Deze zorgen er voor dat zowel &os; als &linux; via LILO kunnen opstarten. In dit voorbeeld wordt XY gebruikt om drive-nummer en partitie te bepalen. Als er een SCSI drive gebruikt wordt, dan moet /dev/hdXY gewijzigd worden om iets te kunnen lezen als /dev/sdXY, die dan ook de XY schrijfwijze gebruikt. De kan weggelaten worden als beide besturingssystemen op dezelfde drive staan. Nu kan /sbin/lilo -v gestart worden om de net gemaakte wijzigingen door te voeren in het systeem. Dit is te controleren aan de hand van de schermmeldingen. Fase Eén <filename>/boot/boot1</filename> en Fase Twee <filename>/boot/boot2</filename> Conceptueel zijn de eerste en tweede fase onderdeel van hetzelfde programma op hetzelfde stukje schijf. Door ruimtebeperkingen zijn ze in twee stukken gesplitst. Ze worden echter altijd samen geïnstalleerd. Deze staan in de opstart-sector van de opstart-slice, daar waar boot0 en ieder ander programma in het MBR programma's verwacht om het opstartproces te voltooien. De bestanden in de map /boot zijn kopieën van de echte bestanden die opgeslagen zijn buiten het &os; bestandssysteem. boot1 is erg simpel omdat ook deze slechts 512 bytes groot kan zijn en net genoeg weet over het &os; disklabel, dat informatie bevat over de slice om boot2 te vinden en te starten. boot2 is iets verfijnder en begrijpt het &os; bestandssysteem genoeg om er bestanden op te vinden en geeft een simpele interface om de kernel of loader te kiezen die gestart moet worden. boot2 start meestal de loader, doordat deze veel slimmer is en gebruikersvriendelijke opstartinstellingen heeft. Voorheen was het zijn taak direct de kernel te starten. <filename>boot2</filename> Schermafbeelding >> &os;/i386 BOOT Default: 0:ad(0,a)/kernel boot: Als ooit eens de geïnstalleerde boot1 en boot2 vervangen moeten worden kan dat met &man.disklabel.8;: &prompt.root; disklabel -B diskslice In het voorbeeld hierboven is diskslice de schijf en slice waarvan opgestart wordt, zoals ad0s1 voor de eerste slice op de eerste IDE-schijf. Gevaarlijk Toegewijde Modus Als alleen een schijfnaam als ad0 gebruikt wordt in &man.disklabel.8; wordt er een een gevaarlijk toegewijde schijf zonder slices gemaakt. Dit is niet aan te raden en daarom wordt aangeraden voor het uivoeren van &man.disklabel.8; de commandoregel nog een keer te controleren voordat er op Return wordt gedrukt. Fase Drie, <filename>/boot/loader</filename> boot-loader De loader is de laatse fase van de drietraps-bootstrap en deze bevindt zich op het bestandssysteem, meestal als /boot/loader. De loader is bedoeld als een gebruikersvriendelijke manier voor de instelling, door gebruik te maken van een makkelijke commandoverzameling, gesteund door een krachtige vertaler met een wat complexere commandoverzameling. Loader Programmaverloop Tijdens de start zoekt de loader naar een console en schijven en kijkt van welke schijf er opgestart wordt. Variabelen worden hiernaar gezet en er wordt een vertaler gestart zodat gebruikercommando's interactief of via een script kunnen worden doorgegeven. loader loader-configuration Dan leest de loader /boot/loader.rc, die dan standaard /boot/defaults/loader.conf leest. Deze plaatst redelijke standaarden in variabelen en leest /boot/loader.conf voor lokale wijzigingen op deze variabelen. loader.rc reageert op deze variabelen door de geselecteerde modules en kernel te laden. Als laatste wordt standaard door de loader 10 seconden gewacht op toetsinvoer en als dit niet wordt onderbroken laadt loader de kernel. Als het wel wordt onderbroken krijgt de gebruiker een prompt aangeboden die een eenvoudige commandoverzameling begrijpt. Hier kan de gebruiker variabelen wijzigen, alle modules stoppen en/of starten en uiteindelijk opstarten of herstarten. Ingebouwde Loadercommando's Hieronder worden de meest gebruikte loadercommando's besproken. Een volledige omschrijving van alle beschikbare commando's staat in &man.loader.8;. autoboot seconden Gaat door met het opstarten van de kernel als deze niet wordt onderbroken binnen de opgegeven tijd in seconden. Er wordt een aftelproces getoond dat standaard op 10 seconden staat. boot -opties kernelnaam Start direct de kernel op met de opgegeven opties en naam, indien meegegeven. boot-conf Doorloopt hetzelfde automatische instellen van modules gebaseerd op variabelen zoals ook gebeurt bij het opstarten. Dit is alleen zinnig als eerst unload is gebruikt en enkele variabelen zijn gewijzigd, meestal kernel. help onderwerp Toont documentatie uit /boot/loader.help. Als het opgegeven onderwerp index is, wordt een lijst met beschikbare onderwerpen getoond. include bestandsnaam Verwerkt het bestand met de opgegeven naam. Het bestand wordt ingelezen en regel voor regel vertaald. Iedere foutmelding stopt direct het include-commando. load type bestandsnaam Laadt de kernel, kernel-module of bestand van opgegeven type en naam. Ieder argument achter de bestandsnaam wordt doorgegeven aan het bestand. ls padnaam Toont de lijst bestanden in het opgegeven pad of van de rootmap als geen pad wordt opgegeven. Als wordt meegegeven wordt ook de bestandsgrootte weergegeven. lsdev Toont de lijst met alle apparaten waarvan het mogelijk is om modules te kunnen laden. Als wordt meegegeven worden meer details getoond. lsmod Toont geladen modules. Als wordt meegegeven worden meer details getoont. more bestandsnaam Toont de inhoud van het opgegeven bestand met een pauze na iedere LINES regels. reboot Herstart het systeem onmiddelijk. set variabele set variabele=waarde Vult de omgevingsvariabele van de loader. unload Verwijdert alle geladen modules. Loader Voorbeelden Hier zijn wat practische voorbeelden van het gebruik van loader: single-user modus De kernel opstarten in single-user modus: boot -s De gebruikelijke kernel en modules ontladen om daarna de oude (of een andere) kernel te laden: kernel.old unload load kernel.old kernel.GENERIC kan gebruikt worden als de algemene kernel die meegeleverd is bij de installatieschijf of kernel.old om de vorige geïnstalleerde kernel te gebruiken (als bijvoorbeeld de kernel is vervangen). Zo worden de bekende modules geladen met een andere kernel: unload set kernel="kernel.old" boot-conf Voor het laden van een kernelinstellingenscript (een script dat dingen doet die anders met de hand ingegeven zouden worden): load -t userconfig_script /boot/kernel.conf Interactie met de Kernel Tijdens Opstarten kernel interactie opstarten Zodra de kernel is geladen door de loader (zoals gewoonlijk) of door boot2 (zonder de loader), wordt er als ze er zijn gekeken naar de opstartvlaggen en wordt het gedrag zo nodig aangepast. kernel opstartvlaggen Opstartvlaggen Kernel De meest voorkomende opstartvlaggen: Vraag tijdens de opstart van de kernel om het apparaat dat gemount moet worden als root bestandssysteem. Boot van CDROM. Start UserConfig om instellingen te maken voor de kernel tijdens het opstarten. Start naar single-user modus. Geef meer tekst en uitleg tijdens het opstarten van de kernel. In &man.boot.8; staan alle bootvlaggen beschreven. Tom Rhodes Bijgedragen door device.hints Device Hints Dit onderwerp is alleen van toepassing op &os; 5.0 en later. Tijdens het opstarten van het systeem leest de boot &man.loader.8; het bestand &man.device.hints.5;. Dit bestand slaat opstartinformatie voor de kernel op in variabelen, ook wel device hints. Deze device hints worden door stuurprogramma's gebruikt voor instelling van apparaten. Device hints kunnen ook bij het Fase Drie, /boot/loader prompt ingevoerd worden. Variabelen kunnen toegevoegd worden met behulp van set, verwijderd worden met unset en bekeken worden met show. Variabelen uit /boot/device.hints kunnen hier ook herroepen worden. Device hints die ingevoerd zijn bij de boot loader zijn niet permanent en zijn bij de volgende boot niet meer aanwezig. Zodra het systeem opgestart is, kan &man.kenv.1; gebruikt worden om alle variabelen te bekijken. De schrijfwijze voor /boot/device.hints is één variabele per regel. Het standaard hekje # wordtd gebruikt voor commentaar. Regels worden als volgt opgebouwd: hint.driver.unit.keyword="waarde" De syntaxis voor de Fase 3 boot loader is: set hint.driver.unit.keyword=waarde driver is de naam van het apparaatstuurprogramma, unit is het apparaatnummer van het stuurprogramma en keyword is het hint-sleutelwoord. Dit sleutelwoord kan uit de volgende opties bestaan: at: beschrijft de bus waarop het apparaat is aangesloten. port: beschrijft het startadres van de I/O die gebruikt wordt. irq: beschrijft het interrupt request nummer dat gebruikt wordt. drq: beschrijft het DMA kanaalnummer. maddr: beschrijft het fysieke geheugenadres dat gebruikt wordt door het apparaat. flags: zet verschillende vlagbits voor het apparaat. disabled: is 1 als het apparaat is uitgezet. Apparaatstuurprogramma's kunnen hints die hier niet genoemd zijn accepteren (of eisen). Zie hiervoor de betreffende handleiding: &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5; en &man.loader.8;. init Init: Start van Procesbesturing Als de kernel klaar is met opstarten geeft die de besturing over aan het gebruikerproces &man.init.8;, te vinden in /sbin/init of de padnaam die staat is in de variabele init_path in loader. Automatische Herstart De automatische herstart (Automatic Reboot Sequence) controleert of de beschikbare bestandssystemen betrouwbaar zijn. Als dat niet zo is en &man.fsck.8; kan de fouten niet repareren, dan brengt &man.init.8; het systeem terug naar Single-user Modus voor de systeembeheerder, die het probleem dan directer kan aanpakken. Single-user Modus single-user modus console Deze modus kan bereikt worden vanuit de Automatische Herstart of door de gebruiker die opstart met de optie of door de variabele boot_single aan te zetten in de loader. Het kan ook door &man.shutdown.8; te starten zonder de optie reboot () of halt (), vanuit Multi-user Modus. Als het systeem console op insecure staat in /etc/ttys, dan vraagt het systeem om het root wachtwoord voordat de single-user modus wordt gestart. Onveilige Console in <filename>/etc/ttys</filename> # name getty type status comments # # Als de console op "insecure" staat vraagt init om het root wachtwoord # voor het naar single-user modus gaan. console none unknown off insecure Met een insecure console wordt bedoeld dat de fysieke beveiliging van het console niet goed is en dat dat alleen personen die het root wachtwoord kennen naar single-user modus mogen gaan. Het betekent niet dat het console onveilig wordt ingesteld. Als het veilig moet, wordt er dus voor insecure gekozen en niet voor secure. Multi-user Modus multi-user modus Als &man.init.8; vindt dat het bestandssysteem in orde is of zodra de gebruiker klaar is in Single-user Modus, gaat het systeem over naar multi-user modus, waarin het de resource configuration (broninstellingen) van het systeem start. rc-bestanden Bronconfiguratie (rc) Het broninstellingensysteem leest de standaard instellingen in vanuit /etc/defaults/rc.conf en specifieke systeemdetails uit /etc/rc.conf en gaat daarna door met het mounten van de bestandssystemen voor het systeem die genoemd worden in /etc/fstab, start netwerkdiensten, start andere systeemdaemons en start als laatste de opstartscripts van lokaal geïnstalleerde packages. &man.rc.8; is een goede referentie voor het broninstellingensysteem. Dat zijn de scripts zelf natuurlijk ook. Shutdownvolgorde shutdown Bij een gecontroleerde shutdown met &man.shutdown.8; probeert &man.init.8; om het script /etc/rc.shutdown te starten en daarna aan alle processen het TERM signaal te sturen en eventueel het KILL signaal aan alle processen die niet op tijd zijn gestopt. Om een &os; machine uit te zetten die energiebeheer ondersteund, kan het commando shutdown -p now gegeven worden om gelijk de stroom af te schakelen. Als er herstart moet worden dan kan shutdown -r now gebruikt worden. De gebruiker die dit uitvoert moet wel root zijn of lid van de operator groep om &man.shutdown.8; te mogen gebruiken. &man.halt.8; en &man.reboot.8; kunnen ook gebruikt worden. Meer informatie is in de betreffende handleidingpagina's te vinden. Voor energiebeheer is &man.acpi.4; ondersteuning in de kernel nodig. Deze kan ook als module geladen worden voor &os; 5.X. Voor &os; 4.X is dit &man.apm.4;.