1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
|
<!--
The FreeBSD Dutch Documentation Project
$FreeBSD$
$FreeBSDnl: nl_NL.ISO8859-1/books/handbook/boot/chapter.sgml,v 1.22 2005/01/22 13:12:14 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ïnstalleerde besturingssystemen op dezelfde computer of
zelfs verschillende versies van hetzelfde besturingssysteem of
geï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ü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 éé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.</para>
<para>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.</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 Eé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ï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>device</replaceable></userinput></screen>
<para>Waar <replaceable>device</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ï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 Eé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ï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ë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>>> &os;/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:</screen>
</example>
<para>Als ooit eens de geï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>diskslice</replaceable></userinput></screen>
<para>In het voorbeeld hierboven is
<replaceable>diskslice</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> …</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ï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 CDROM.</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; 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 éé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ï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; 5.X. Voor &os; 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:
-->
|