<!--
     The FreeBSD Dutch Documentation Project

     $FreeBSD$
     $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/boot/chapter.sgml,v 1.25 2005/03/06 00:42:13 siebrand Exp $
     Gebaseerd op: 1.59
-->

<chapter id="boot">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Erik</firstname>
	<surname>Radder</surname>
	<contrib>Vertaald door </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Het &os; opstartproces</title>

  <sect1 id="boot-synopsis">
    <title>Overzicht</title>

    <indexterm><primary>booting</primary></indexterm>

    <indexterm><primary>bootstrap</primary></indexterm>

    <para>Het proces van het starten van de computer en het laden van
      het besturingssysteem wordt het <quote>bootstrapproces</quote>
      of simpelweg <quote>booten</quote> 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&iuml;nstalleerde besturingssystemen op dezelfde computer of
      zelfs verschillende versies van hetzelfde besturingssysteem of
      ge&iuml;nstalleerde kernel.</para>

    <para>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.</para>

    <para>Na het lezen van dit hoofdstuk weet de lezer:</para>

    <itemizedlist>
      <listitem>
	<para>Wat de onderdelen zijn van het &os; bootstrap-systeem en
	  hoe zij onderling communiceren;</para>
      </listitem>

      <listitem>
	<para>De opties die meegegeven kunnen worden aan de componenten
	  in de bootstrap om het proces te sturen;</para>
      </listitem>

      <listitem>
	<para>Meer over &man.device.hints.5;;</para>
      </listitem>
    </itemizedlist>

    <note>
      <title>Alleen voor x86</title>

      <para>Dit hoofdstuk beschrijft alleen het opstartproces van &os;
	dat draait op een Intel x86 systeem.</para>
    </note>
  </sect1>

  <sect1 id="boot-introduction">
    <title>Het bootprobleem</title>

    <para>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?</para>

    <para>Dit is een gelijksoortig probleem als dat in het boek
      <citetitle>De avonturen van Baron von
	M&uuml;nchausen</citetitle>.  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 <firstterm>bootstrap</firstterm>
      gegeven aan het mechanisme dat het besturingssysteem laadt.
      Later werd dit afgekort tot <quote>booten</quote>.</para>

    <para>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.</para>

    <indexterm><primary>BIOS</primary></indexterm>

    <indexterm>
      <primary>Basis Input/Output Systeem</primary>

      <see>BIOS</see>
    </indexterm>

    <para>Als er maar &eacute;&eacute;n besturingssysteem en een schijf
      ge&iuml;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.</para>

    <para>Indien er meerdere besturingssystemen op schijven staan, kan
      er een ander MBR ge&iuml;nstalleerd worden.  &euml;&euml;n dat
      een die lijst toont met verschillende besturingssystemen en de
      mogelijkheid geeft om er &eacute;&eacute;n te kiezen dat
      opgestart moet worden.  &os; wordt met zo'n MBR geleverd dat
      ge&iuml;nstalleerd kan worden.  Andere leveranciers van
      besturingssystemen hebben een alternatieve MBR.</para>

    <para>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.</para>

    <indexterm><primary>kernel</primary></indexterm>

    <indexterm><primary><command>init</command></primary></indexterm>

    <para>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.</para>
  </sect1>

  <sect1 id="boot-blocks">
    <title>Het MBR en de bootfases &eacute;&eacute;n, twee en
      drie</title>

    <sect2 id="boot-boot0">
      <title>MBR, <filename>/boot/boot0</filename></title>

      <indexterm>
	<primary>Master Boot Record (MBR)</primary>
      </indexterm>

      <para>Het &os; MBR bevind zich in
	<filename>/boot/boot0</filename>.  Dit is een
	<emphasis>kopie</emphasis> van het MBR, omdat het echte MBR
	op een speciale plek op de schijf, los van de plek van &os;,
	moet staan.</para>

      <para><filename>boot0</filename> is erg simpel, omdat het
	programma in het <abbrev>MBR</abbrev> uit slechts 512 bytes mag
	bestaan.  Als &os; MBR is ge&iuml;nstalleerd en er staan andere
	besturingssystemen op een harde schijf, dan is bij het
	opstarten een scherm zien dat er ongeveer zo uitziet:</para>

      <example id="boot-boot0-example">
	<title><filename>boot0</filename> schermafbeelding</title>

      <screen>F1 DOS
F2 &os;
F3 Linux
F4 ??
F5 Drive 1

Default: F2</screen>
      </example>

      <para>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:</para>

      <screen>&prompt.root; <userinput>fdisk -B -b /boot/boot0 <replaceable>apparaat</replaceable></userinput></screen>

      <para>Waar <replaceable>apparaat</replaceable> het apparaat is
	waar de computer van boot, zoals <devicename>ad0</devicename>
	voor de eerste IDE-schijf <devicename>ad2</devicename> voor de
	eerste IDE-schijf op de tweede IDE-controller,
	<devicename>da0</devicename> voor de eerste SCSI-schijf,
	enzovoort.</para>

      <para>Voor &linux; gebruikers die de voorkeur aan
	<application>LILO</application> geven om het opstartproces te
	beheren, moet <filename>/etc/lilo.conf</filename> gewijzigd
	worden voor &os; of <option>Leave The Master Boot Record
	  Untouched</option> gekozen worden tijdens het &os;
	installatieproces.  Als de &os; boot manager is
	ge&iuml;nstalleerd, dan &linux; weer opgestarten worden en aan
	het <application>LILO</application> instellingenbestand
	<filename>/etc/lilo.conf</filename> de volgende opties
	toegevoegd worden:</para>

      <programlisting>other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=&os;</programlisting>

      <para>Deze zorgen er voor dat zowel &os; als &linux; via
	<application>LILO</application> kunnen opstarten.  In dit
	voorbeeld wordt <replaceable>XY</replaceable> gebruikt om
	drive-nummer en partitie te bepalen.  Als er een
	<acronym>SCSI</acronym> drive gebruikt wordt, dan moet
	<replaceable>/dev/hdXY</replaceable> gewijzigd worden om iets
	te kunnen lezen als <replaceable>/dev/sdXY</replaceable>, die
	dan ook de <replaceable>XY</replaceable> schrijfwijze gebruikt.
	De <option>loader=/boot/chain.b</option> kan weggelaten worden
	als beide besturingssystemen op dezelfde drive staan.  Nu kan
	<command>/sbin/lilo -v</command> gestart worden om de net
	gemaakte wijzigingen door te voeren in het systeem.  Dit is te
	controleren aan de hand van de schermmeldingen.</para>
    </sect2>

    <sect2 id="boot-boot1">
      <title>Fase &eacute;eacute;n <filename>/boot/boot1</filename> en
	fase twee <filename>/boot/boot2</filename></title>

      <para>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&iuml;nstalleerd.</para>

      <para>Deze staan in de opstart-sector van de opstart-slice, daar
	waar <link linkend="boot-boot0">boot0</link> en ieder ander
	programma in het <abbrev>MBR</abbrev> programma's verwacht om
	het opstartproces te voltooien.  De bestanden in de map
	<filename>/boot</filename> zijn kopie&euml;n van de echte
	bestanden die opgeslagen zijn buiten het &os;
	bestandssysteem.</para>

      <para><filename>boot1</filename> is erg simpel omdat ook deze
	slechts 512 bytes groot kan zijn en net genoeg weet over het
	&os; <firstterm>disklabel</firstterm>, dat informatie bevat
	over de slice om <filename>boot2</filename> te vinden en te
	starten.</para>

      <para><filename>boot2</filename> 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.</para>

      <para><filename>boot2</filename> start meestal de <link
	  linkend="boot-loader">loader</link>, doordat deze veel
	slimmer is en gebruikersvriendelijke opstartinstellingen heeft.
	Voorheen was het zijn taak direct de kernel te starten.</para>

      <example id="boot-boot2-example">
	<title><filename>boot2</filename> schermafbeelding</title>

	<screen>&gt;&gt; &os;/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:</screen>
      </example>

      <para>Als ooit eens de ge&iuml;nstalleerde
	<filename>boot1</filename> en <filename>boot2</filename>
	vervangen moeten worden kan dat met &man.disklabel.8;:</para>

      <screen>&prompt.root; <userinput>disklabel -B <replaceable>schijfslice</replaceable></userinput></screen>

      <para>In het voorbeeld hierboven is
	<replaceable>schijfslice</replaceable> de schijf en slice
	waarvan opgestart wordt, zoals <devicename>ad0s1</devicename>
	voor de eerste slice op de eerste IDE-schijf.</para>

      <warning>
	<title>Gevaarlijk toegewijde modus</title>

	<para>Als alleen een schijfnaam als
	  <devicename>ad0</devicename> 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 <keycap>Return</keycap> wordt
	  gedrukt.</para>
      </warning>
    </sect2>

    <sect2 id="boot-loader">
      <title>Fase drie, <filename>/boot/loader</filename></title>

      <indexterm><primary>boot-loader</primary></indexterm>

      <para>De loader is de laatse fase van de drietraps-bootstrap en
	deze bevindt zich op het bestandssysteem, meestal als
	<filename>/boot/loader</filename>.</para>

      <para>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.</para>

      <sect3 id="boot-loader-flow">
	<title>Loader programmaverloop</title>

	<para>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.</para>

	<indexterm><primary>loader</primary></indexterm>

	<indexterm><primary>loader-configuration</primary></indexterm>

	<para>Dan leest de loader <filename>/boot/loader.rc</filename>,
	  die dan standaard
	  <filename>/boot/defaults/loader.conf</filename> leest.  Deze
	  plaatst redelijke standaarden in variabelen en leest
	  <filename>/boot/loader.conf</filename> voor lokale
	  wijzigingen op deze variabelen.
	  <filename>loader.rc</filename> reageert op deze variabelen
	  door de geselecteerde modules en kernel te laden.</para>

	<para>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.</para>
      </sect3>

      <sect3 id="boot-loader-commands">
	<title>Ingebouwde loadercommando's</title>

	<para>Hieronder worden de meest gebruikte loadercommando's
	  besproken.  Een volledige omschrijving van alle beschikbare
	  commando's staat in &man.loader.8;.</para>

	<variablelist>
	  <varlistentry>
	    <term>autoboot <replaceable>seconden</replaceable></term>

	    <listitem>
	      <para>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.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>boot
	      <optional><replaceable>-opties</replaceable></optional>
	      <optional><replaceable>kernelnaam</replaceable></optional></term>

	    <listitem>
	      <para>Start direct de kernel op met de opgegeven opties
		en naam, indien meegegeven.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>boot-conf</term>

	    <listitem>
	      <para>Doorloopt hetzelfde automatische instellen van
		modules gebaseerd op variabelen zoals ook gebeurt bij
		het opstarten.  Dit is alleen zinnig als eerst
		<command>unload</command> is gebruikt en enkele
		variabelen zijn gewijzigd, meestal
		<envar>kernel</envar>.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>help <optional><replaceable>onderwerp</replaceable></optional></term>

	    <listitem>
	      <para>Toont documentatie uit
		<filename>/boot/loader.help</filename>.  Als het
		opgegeven onderwerp <literal>index</literal> is, wordt
		een lijst met beschikbare onderwerpen getoond.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>include <replaceable>bestandsnaam</replaceable> &hellip;</term>

	    <listitem>
	      <para>Verwerkt het bestand met de opgegeven naam.  Het
		bestand wordt ingelezen en regel voor regel
		vertaald.  Iedere foutmelding stopt direct het
		include-commando.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>load <optional><option>-t</option>
	      <replaceable>type</replaceable></optional>
	      <replaceable>bestandsnaam</replaceable></term>

	    <listitem>
	      <para>Laadt de kernel, kernel-module of bestand van
		opgegeven type en naam.  Ieder argument achter de
		bestandsnaam wordt doorgegeven aan het bestand.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>ls <optional><option>-l</option></optional>
	      <optional><replaceable>padnaam</replaceable></optional></term>

	    <listitem>
	      <para>Toont de lijst bestanden in het opgegeven pad of
		van de rootmap als geen pad wordt opgegeven.  Als
		<option>-l</option> wordt meegegeven wordt ook de
		bestandsgrootte weergegeven.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>lsdev <optional><option>-v</option></optional></term>

	    <listitem>
	      <para>Toont de lijst met alle apparaten waarvan het
		mogelijk is om modules te kunnen laden.  Als
		<option>-v</option> wordt meegegeven worden meer
		details getoond.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>lsmod <optional><option>-v</option></optional></term>

	    <listitem>
	      <para>Toont geladen modules.  Als <option>-v</option>
		wordt meegegeven worden meer details getoont.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>more <replaceable>bestandsnaam</replaceable></term>

	    <listitem>
	      <para>Toont de inhoud van het opgegeven bestand met een
		pauze na iedere <varname>LINES</varname> regels.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>reboot</term>

	    <listitem>
	      <para>Herstart het systeem onmiddelijk.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>set <replaceable>variabele</replaceable></term>

	    <term>set
	      <replaceable>variabele</replaceable>=<replaceable>waarde</replaceable>
	    </term>

	    <listitem>
	      <para>Vult de omgevingsvariabele van de loader.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>unload</term>

	    <listitem>
	      <para>Verwijdert alle geladen modules.</para>
	    </listitem>
	  </varlistentry>
	</variablelist>
      </sect3>

      <sect3 id="boot-loader-examples">
	<title>Loader voorbeelden</title>

	<para>Hier zijn wat practische voorbeelden van het gebruik van
	  loader:</para>

	<itemizedlist>
	  <indexterm><primary>single-user modus</primary></indexterm>

	  <listitem>
	    <para>De kernel opstarten in single-user modus:</para>

	    <screen><userinput>boot -s</userinput></screen>
	  </listitem>

	  <listitem>
	    <para>De gebruikelijke kernel en modules ontladen om daarna
	      de oude (of een andere) kernel te laden:</para>

	    <indexterm>
	      <primary><filename>kernel.old</filename></primary>
	    </indexterm>

	    <screen><userinput>unload</userinput>
<userinput>load <replaceable>kernel.old</replaceable></userinput></screen>

	    <para><filename>kernel.GENERIC</filename> kan gebruikt
	      worden als de algemene kernel die meegeleverd is bij de
	      installatieschijf of <filename>kernel.old</filename> om
	      de vorige ge&iuml;nstalleerde kernel te gebruiken (als
	      bijvoorbeeld de kernel is vervangen).</para>

	    <note>
	      <para>Zo worden de bekende modules geladen met een andere
		kernel:</para>

	      <screen><userinput>unload</userinput>
<userinput>set kernel="<replaceable>kernel.old</replaceable>"</userinput>
<userinput>boot-conf</userinput></screen>
	    </note>
	  </listitem>

	  <listitem>
	    <para>Voor het laden van een kernelinstellingenscript (een
	      script dat dingen doet die anders met de hand ingegeven
	      zouden worden):</para>

	    <screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen>
	  </listitem>
	</itemizedlist>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="boot-kernel">
    <title>Interactie met de kernel tijdens opstarten</title>

    <indexterm>
      <primary>kernel</primary>

      <secondary>interactie opstarten</secondary>
    </indexterm>

    <para>Zodra de kernel is geladen door de <link
	linkend="boot-loader">loader</link> (zoals gewoonlijk)
      of door <link linkend="boot-boot1">boot2</link> (zonder de
      loader), wordt er als ze er zijn gekeken naar de
      opstartvlaggen en wordt het gedrag zo nodig aangepast.</para>

    <sect2 id="boot-kernel-bootflags">
      <indexterm>
	<primary>kernel</primary>

	<secondary>opstartvlaggen</secondary>
      </indexterm>

      <title>Opstartvlaggen kernel</title>

      <para>De meest voorkomende opstartvlaggen:</para>

      <variablelist id="boot-kernel-bootflags-list">
	<varlistentry>
	  <term><option>-a</option></term>

	  <listitem>
	    <para>Vraag tijdens de opstart van de kernel om het
	      apparaat dat gemount moet worden als root
	      bestandssysteem.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-C</option></term>

	  <listitem>
	    <para>Boot van cd-rom.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-c</option></term>

	  <listitem>
	    <para>Start UserConfig om instellingen te maken voor de
	      kernel tijdens het opstarten.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-s</option></term>

	  <listitem>
	    <para>Start naar single-user modus.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-v</option></term>

	  <listitem>
	    <para>Geef meer tekst en uitleg tijdens het opstarten van
	      de kernel.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <note>
	<para>In &man.boot.8; staan alle bootvlaggen beschreven.</para>
      </note>
    </sect2>
  </sect1>

  <sect1 id="device-hints">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Bijgedragen door </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <indexterm>
      <primary>device.hints</primary>
    </indexterm>

    <title>Device hints</title>

    <note>
      <para>Dit onderwerp is alleen van toepassing op &os;&nbsp;5.0 en
	later.</para>
    </note>

    <para>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
      <quote>device hints</quote>.  Deze <quote>device hints</quote>
      worden door stuurprogramma's gebruikt voor instelling van
      apparaten.</para>

    <para>Device hints kunnen ook bij het <link linkend="boot-loader">
      Fase drie, <filename>/boot/loader</filename></link> prompt
      ingevoerd worden.  Variabelen kunnen toegevoegd worden met behulp
      van <command>set</command>, verwijderd worden met
      <command>unset</command> en bekeken worden met
      <command>show</command>.  Variabelen uit
      <filename>/boot/device.hints</filename> 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.</para>

    <para>Zodra het systeem opgestart is, kan &man.kenv.1; gebruikt
      worden om alle variabelen te bekijken.</para>

    <para>De schrijfwijze voor <filename>/boot/device.hints</filename>
      is &eacute;&eacute;n variabele per regel.  Het standaard hekje
      <quote>#</quote> wordtd gebruikt voor commentaar.  Regels worden
      als volgt opgebouwd:</para>

    <screen><userinput>hint.driver.unit.keyword="<replaceable>waarde</replaceable>"</userinput></screen>

    <para>De syntaxis voor de Fase 3 boot loader is:</para>

    <screen><userinput>set hint.driver.unit.keyword=<replaceable>waarde</replaceable></userinput></screen>

    <para><literal>driver</literal> is de naam van het
      apparaatstuurprogramma, <literal>unit</literal> is het
      apparaatnummer van het stuurprogramma en
      <literal>keyword</literal> is het hint-sleutelwoord.  Dit
      sleutelwoord kan uit de volgende opties bestaan:</para>

    <itemizedlist>
      <listitem>
	<para><literal>at</literal>: beschrijft de bus waarop het
	  apparaat is aangesloten.</para>
      </listitem>

      <listitem>
	<para><literal>port</literal>: beschrijft het startadres van
	  de <acronym>I/O</acronym> die gebruikt wordt.</para>
      </listitem>

      <listitem>
	<para><literal>irq</literal>: beschrijft het interrupt request
	  nummer dat gebruikt wordt.</para>
      </listitem>

      <listitem>
	<para><literal>drq</literal>: beschrijft het DMA
	  kanaalnummer.</para>
      </listitem>

      <listitem>
	<para><literal>maddr</literal>: beschrijft het fysieke
	  geheugenadres dat gebruikt wordt door het apparaat.</para>
      </listitem>

      <listitem>
	<para><literal>flags</literal>: zet verschillende vlagbits voor
	  het apparaat.</para>
      </listitem>

      <listitem>
	<para><literal>disabled</literal>: is <literal>1</literal>
	  als het apparaat is uitgezet.</para>
      </listitem>
    </itemizedlist>

    <para>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;.</para>
  </sect1>

  <sect1 id="boot-init">
    <indexterm>
      <primary><command>init</command></primary>
    </indexterm>

    <title>Init: start van procesbesturing</title>

    <para>Als de kernel klaar is met opstarten geeft die de besturing
      over aan het gebruikerproces &man.init.8;, te vinden in
      <filename>/sbin/init</filename> of de padnaam die staat
      is in de variabele <envar>init_path</envar> in
      <command>loader</command>.</para>

    <sect2 id="boot-autoreboot">
      <title>Automatische herstart</title>

      <para>De automatische herstart (<quote>Automatic Reboot
	  Sequence</quote>) 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 <link
	  linkend="boot-singleuser">Single-user modus</link> voor de
	systeembeheerder, die het probleem dan directer kan
	aanpakken.</para>
    </sect2>

    <sect2 id="boot-singleuser">
      <title>Single-user modus</title>

      <indexterm><primary>single-user modus</primary></indexterm>

      <indexterm><primary>console</primary></indexterm>

      <para>Deze modus kan bereikt worden vanuit de <link
	  linkend="boot-autoreboot">Automatische herstart</link> of
	door de gebruiker die opstart met de optie <option>-s</option>
	of door de variabele <envar>boot_single</envar> aan te zetten
	in de <command>loader</command>.</para>

      <para>Het kan ook door &man.shutdown.8; te starten zonder
	de optie reboot (<option>-r</option>) of halt
	(<option>-h</option>), vanuit <link
	  linkend="boot-multiuser">Multi-user modus</link>.</para>

      <para>Als het systeem <literal>console</literal> op
	<literal>insecure</literal> staat in
	<filename>/etc/ttys</filename>, dan vraagt het systeem om het
	<username>root</username> wachtwoord voordat de single-user
	modus wordt gestart.</para>

      <example id="boot-insecure-console">
	<title>Onveilige console in
	  <filename>/etc/ttys</filename></title>

	<programlisting># 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</programlisting>
      </example>

      <note>
	<para>Met een <literal>insecure</literal> console wordt bedoeld
	  dat de fysieke beveiliging van het console niet goed is en
	  dat dat alleen personen die het <username>root</username>
	  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
	  <literal>insecure</literal> gekozen en niet voor
	  <literal>secure</literal>.</para>
      </note>
    </sect2>

    <sect2 id="boot-multiuser">
      <title>Multi-user modus</title>

      <indexterm><primary>multi-user modus</primary></indexterm>

      <para>Als &man.init.8; vindt dat het bestandssysteem
	in orde is of zodra de gebruiker klaar is in <link
	  linkend="boot-singleuser">Single-user modus</link>, gaat het
	systeem over naar multi-user modus, waarin het de resource
	configuration (broninstellingen) van het systeem start.</para>

      <sect3 id="boot-rc">
	<indexterm><primary>rc-bestanden</primary></indexterm>

	<title>Bronconfiguratie (rc)</title>

	  <para>Het broninstellingensysteem leest de
	    standaard instellingen in vanuit
	    <filename>/etc/defaults/rc.conf</filename> en
	    specifieke systeemdetails uit
	    <filename>/etc/rc.conf</filename> en gaat daarna door
	    met het mounten van de bestandssystemen voor het systeem
	    die genoemd worden in <filename>/etc/fstab</filename>,
	    start netwerkdiensten, start andere systeemdaemons en start
	    als laatste de opstartscripts van lokaal
	    ge&iuml;nstalleerde packages.</para>

	  <para>&man.rc.8; is een goede referentie voor het
	    broninstellingensysteem.  Dat zijn de scripts zelf
	    natuurlijk ook.</para>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="boot-shutdown">
    <title>Shutdownvolgorde</title>

    <indexterm>
      <primary><command>shutdown</command></primary>
    </indexterm>

    <para>Bij een gecontroleerde shutdown met &man.shutdown.8; probeert
      &man.init.8; om het script <filename>/etc/rc.shutdown</filename>
      te starten en daarna aan alle processen het
      <literal>TERM</literal> signaal te sturen en eventueel het
      <literal>KILL</literal> signaal aan alle processen die niet op
      tijd zijn gestopt.</para>

    <para>Om een &os; machine uit te zetten die energiebeheer
      ondersteund, kan het commando <command>shutdown -p now</command>
      gegeven worden om gelijk de stroom af te schakelen.  Als er
      herstart moet worden dan kan <command>shutdown -r now</command>
      gebruikt worden.  De gebruiker die dit uitvoert moet wel
      <username>root</username> zijn of lid van de
      <groupname>operator</groupname> 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.</para>

    <note>
      <para>Voor energiebeheer is &man.acpi.4; ondersteuning in de
	kernel nodig.  Deze kan ook als module geladen worden voor
	&os;&nbsp;5.X.  Voor &os;&nbsp;4.X is dit &man.apm.4;.</para>
    </note>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
