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
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Dutch Documentation Project
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/boot/chapter.sgml
%SRCID% 39544
-->
<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>
<indexterm><primary>BIOS</primary></indexterm>
<indexterm>
<primary>Basis Input/Output Systeem</primary>
<see>BIOS</see>
</indexterm>
<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, mogelijk met hulp van het
BIOS.</para>
<indexterm><primary>Master Boot Record (MBR)</primary></indexterm>
<indexterm><primary>Boot Manager</primary></indexterm>
<indexterm><primary>Boot Loader</primary></indexterm>
<para>Aan de code binnen de MBR wordt meestal gerefereerd als een
<emphasis>bootmanager</emphasis>, in het bijzonder als die
interactie heeft met een gebruiker. In dit geval heeft de
bootmanager meestal meer code in de eerste
<emphasis>track</emphasis> van een schijf binnen het
bestandssysteem van een besturingssysteem. Een bootmanager wordt
soms ook <emphasis>boot loader</emphasis> genoemd, maar &os;
gebruikt die term voor een later stadium van het starten.
Populaire bootmanagers zijn onder andere
<application>boot0</application> (ook bekend als
<application>Boot Easy</application>, de standaard &os;
bootmanager), <application>Grub</application>,
<application>GAG</application> en
<application>LILO</application> (alleen
<application>boot0</application> past binnen de MBR.)</para>
<para>Als er maar één besturingssysteem en een schijf
geïnstalleerd is, voldoet een standaard PC MBR. Dit MBR
zoekt naar de eerste opstartbare (alias actieve) slice op schijf
en start de code op deze slice om de rest van het
besturingssysteem te laden. De MBR die standaard door
&man.fdisk.8; wordt geïnstalleerd is zo'n MBR. Die is
gebaseerd op <filename>/boot/mbr</filename>.</para>
<para>Indien er meerdere besturingssystemen op schijven staan, kan
er een andere bootmanager geïnstalleerd worden, een die een
lijst toont met verschillende besturingssystemen en de
mogelijkheid geeft om er één te kiezen dat
opgestart moet worden. In de volgende paragrafen worden er twee
beschreven.</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>De bootmanager en opstartstadia</title>
<indexterm><primary>Boot Manager</primary></indexterm>
<sect2 id="boot-boot0">
<title>De bootmanager</title>
<indexterm><primary>Master Boot Record (MBR)</primary></indexterm>
<para>De code in de MBR of bootmanager wordt soms ook wel
<emphasis>stage zero</emphasis> van het opstartproces genoemd.
In dit onderdeel worden twee eerder genoemde bootmanagers
beschreven: <application>boot0</application> en
<application>LILO</application>.</para>
<formalpara>
<title>De <application>boot0</application> bootmanager:</title>
<para>De MBR die standaard door de &os; installer of
&man.boot0cfg.8; wordt geïnstalleerd is gebaseerd op
<filename>/boot/boot0</filename>. Het programma
<application>boot0</application> is erg eenvoudig, omdat
<abbrev>MBR</abbrev> maar 446 bytes lang mag zijn vanwege de
slicetabel en de <literal>0x55AA</literal> identificatie aan
het einde van de MBR. Als de &os; MBR is geïnstalleerd
en er staan andere besturingssystemen op een harde schijf, dan
is bij het opstarten een scherm te zien dat er ongeveer zo
uitziet:</para>
</formalpara>
<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. Als het wenselijk is een aangepaste instelling te
gebruiken voor de MBR, dan kan &man.boot0cfg.8; gebruikt
worden.</para>
<formalpara>
<title>De LILO bootmanager:</title>
<para>Start, om deze bootmanager te installeren zodat er ook
&os; mee gestart kan worden, eerst &linux; en voeg het
volgende toe aan het bestaande instellingenbestand
<filename>/etc/lilo.conf</filename>:</para>
</formalpara>
<programlisting>other=/dev/hdXY
table=/dev/hdX
loader=/boot/chain.b
label=&os;</programlisting>
<para>Geef in de bovenstaande regels de primaire partitie en
schijf van &os; op met &linux; instellingen, waarbij
<replaceable>X</replaceable> vervangen wordt door de &linux;
schijfletter en <replaceable>Y</replaceable> door het primaire
partitienummer van &linux;. Wijzig bij gebruik van een
<acronym>SCSI</acronym>-schijf
<replaceable>/dev/hd</replaceable> in iets als
<replaceable>/dev/sd</replaceable>. De regel
<option>loader=/boot/chain.b</option> kan achterwege blijven
als de besturingssystemen op dezelfde schijf staan. Voer
daarna <command>/sbin/lilo -v</command> uit om de
wijzigingen vast te leggen. Controleer het vastleggen door
controle van de schermberichten.</para>
</sect2>
<sect2 id="boot-boot1">
<title>Fase éé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. Ze worden
gekopieerd uit het gecombineerde bestand
<filename>/boot/boot</filename> door het installatieprogramma
of <application>bsdlabel</application> (zie
verderop).</para>
<para>Ze staan buiten bestandssystemen in de eerste track van de
opstartslice, beginnend bij de eerste sector. Dit is waar
<link linkend="boot-boot0">boot0</link> en iedere andere
bootmanager een programma verwacht om door te gaan met het
opstartproces. Het aantal gebruikte sectoren kan eenvoudig
bepaald worden uit de grootte van
<filename>/boot/boot</filename>.</para>
<para><filename>boot1</filename> is erg simpel omdat dit slechts
512 bytes groot kan zijn en net genoeg weet over het &os;
<firstterm>bsdlabel</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)/boot/loader
boot:</screen>
</example>
<para>Als ooit eens de geïnstalleerde
<filename>boot1</filename> en <filename>boot2</filename>
vervangen moeten worden kan dat met &man.bsdlabel.8;:</para>
<screen>&prompt.root; <userinput>bsdlabel -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.bsdlabel.8; wordt er een gevaarlijk toegewijde
schijf zonder slices gemaakt. Dit is niet aan te raden en
daarom wordt aangeraden voor het uivoeren van
&man.bsdlabel.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. Het opgeven van een
kernelnaam op de opdrachtregel is alleen van toepassing
nadat een <emphasis>unload</emphasis>-commando is
gegeven, anders wordt de kernel die hiervoor was geladen
gebruikt.</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>
<listitem>
<indexterm><primary>single-user modus</primary></indexterm>
<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>
<sect3 id="boot-splash">
<sect3info>
<authorgroup>
<author>
<firstname>Joseph J.</firstname>
<surname>Barbish</surname>
<contrib>Bijgedragen door </contrib>
</author>
</authorgroup>
</sect3info>
<title>Splash-schermen tijdens het opstarten</title>
<para>Het splash-scherm creëert een visueel aantrekkelijker
scherm in vergelijking met de originele opstartberichten. Dit
scherm zal worden afgebeeld totdat een aanmeldprompt op de
console verschijnt of een X-schermbeheerder een aanmeldprompt
aanbiedt.</para>
<para>Er zijn twee basisomgevingen beschikbaar in &os;. De
eerste is de verouderde standaardomgeving met de opdrachtregel
op de virtuële console. Nadat het systeem klaar is met
opstarten, wordt er een aanmeldprompt op de console
gepresenteerd. De tweede omgeving is de grafische omgeving
van het X11 Bureaublad. Nadat <link
linkend="x-install">X11</link> en één van de
grafische <link linkend="x11-wm">bureaubladomgevingen</link>,
zoals <application>GNOME</application>,
<application>KDE</application>, of
<application>XFce</application> zijn geïnstalleerd, kan
het X11-bureaublad worden gestart door het commando
<command>startx</command> te gebruiken.</para>
<para>Sommige gebruikers verkiezen het grafische aanmeldscherm
van X11 boven de traditionele op tekst gebaseerde
aanmeldprompt. Schermbeheerders zoals
<application>XDM</application> voor &xorg;,
<application>gdm</application> voor
<application>GNOME</application>, en
<application>kdm</application> voor
<application>KDE</application> (en anderen van de
Portscollectie) bieden een grafisch aanmeldscherm
in plaats van de aanmeldprompt op het console. Na succesvol
aanmelden bieden ze de gebruiker een grafisch
bureaublad.</para>
<para>In de opdrachtregelomgeving zou het splash-scherm alle
berichten over aftasten tijdens het opstarten en het starten
van taken verbergen voordat het de aanmeldprompt laat zien.
In een X11-omgeving zouden gebruikers een visueel
overzichtelijkere opstartervaring krijgen dat meer lijkt op
wat een gebruiker van een (µsoft; &windows; of
niet-Unix-systeem) zou ervaren.</para>
<sect4 id="boot-splash-function">
<title>Splash-schermfuncties</title>
<para>De splash-schermfunctie ondersteunt 256-kleuren-bitmaps (
<filename>.bmp</filename>), ZSoft <acronym>PCX</acronym> (
<filename>.pcx</filename>) en TheDraw (<filename>.bin</filename>)
bestanden. Verder moeten de splash-afbeeldingsbestanden een
resolutie van 320 bij 200 pixels of minder hebben om op de
standaard VGA-adapters te werken.</para>
<para>Activeer de <acronym>VESA</acronym>-ondersteuning die in
&os; zit om grotere afbeeldingen, tot de maximale resolutie
van 1024 bij 768 pixels, te gebruiken. Dit kan worden
aangezet door de <acronym>VESA</acronym>-module tijdens het
opstarten van het systeem te laden, of door de
kernelconfiguratieoptie <literal>VESA</literal> toe te
voegen en een eigen kernel te bouwen (zie <xref
linkend="kernelconfig"/>). De ondersteuning voor
<acronym>VESA</acronym> geeft gebruikers de mogelijkheid om
een splash-schermafbeelding af te beelden dat het hele
scherm vult.</para>
<para>Zolang het splash-scherm wordt afgebeeld tijdens het
opstartproces, kan het ten alle tijden worden uitgezet door
op een toetsenbordtoets te drukken.</para>
<para>Het splash-scherm is standaard ook een schermbeveiliging
buiten X11. Na een periode van inactiviteit zal het scherm
in het splash-scherm veranderen en herhaald door stappen van
het veranderen van de intensiteit van de afbeelding lopen,
van helder tot zeer donker. Dit standaardgedrag van het
splash-scherm (schermbeveiliging) kan overruled worden door
een regel met <literal>saver=</literal> toe te voegen aan
<filename>/etc/rc.conf</filename>. De optie
<literal>saver=</literal> heeft verschillende ingebouwde
schermbeveiligingen om uit te kiezen, de volledige lijst
staat in de handleidingpagina &man.splash.4;. De standaard
schermbeveiliging heet <quote>warp</quote>. Merk op dat de
optie <literal>saver=</literal> die in
<filename>/etc/rc.conf</filename> is gespecificeerd alleen
betrekking heeft op virtuele consoles. Het heeft geen
effect op X11-schermbeheerders.</para>
<para>Enkele meldingen van de bootloader, inclusief de opties
van het opstartmenu en een getimede wachtende aftelprompt
worden afgebeeld tijdens het opstarten, zelfs als het
splash-scherm aanstaat.</para>
<para>Voorbeelden van splash-schermen kunnen gedownload worden
van de galerij op <ulink
url="http://artwork.freebsdgr.org/node/3/">http://artwork.freebsdgr.org/</ulink>.
Door de port <filename
role="package">sysutils/bsd-splash-changer</filename> te
installeren, kunnen de splash-afbeeldingen willekeurig elke
keer dat er wordt opgestart uit een verzameling worden
gekozen.</para>
</sect4>
<sect4 id="boot-splash-enable">
<title>De splash-schermfunctie aanzetten</title>
<para>Het splash-schermbestand (<filename>.bmp</filename>,
<filename>.pcx</filename> of <filename>.bin</filename>) moet op de
rootpartitie staan, bijvoorbeeld in de map <filename
class="directory">/boot</filename>.</para>
<para>Bewerk voor de standaardresolutie van het opstartscherm
(256 kleuren, 320 bij 200 pixels, of minder)
<filename>/boot/loader.conf</filename> zodat het volgende
erin staat:</para>
<programlisting>splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.bmp</replaceable>"</programlisting>
<para>Bewerk <filename>/boot/loader.conf</filename> voor grotere
videoresoluties (tot maximaal 1024 bij 768 pixels) zodat
dit bestand het volgende bevat:</para>
<programlisting>vesa_load="YES"
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.bmp</replaceable>"</programlisting>
<para>Het bovenstaande neemt aan dat
<filename><replaceable>/boot/splash.bmp</replaceable></filename>
voor het splash-scherm wordt gebruikt. Wanneer een
<acronym>PCX</acronym>-bestand gewenst is, dienen de
volgende opdrachten gebruikt te worden, en afhankelijk van
de resolutie de regel <literal>vesa_load="YES"</literal>.</para>
<programlisting>splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.pcx</replaceable>"</programlisting>
<para>In versie 8.3 is een andere mogelijkheid het gebruik van
ASCII-kunst in <ulink
url="https://en.wikipedia.org/wiki/TheDraw">TheDraw</ulink>
formaat.</para>
<programlisting>splash_txt="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<para>De bestandsnaam is niet beperkt tot <quote>splash</quote> zoals
in het bovenstaande voorbeeld. Het kan van alles zijn zolang het
een van de bovenstaande types is, zoals
<filename><replaceable>splash_640x400</replaceable>.bmp</filename>
of
<filename><replaceable>bluewave</replaceable>.pcx</filename>.</para>
<para>Enkele andere interessante opties voor
<filename>loader.conf</filename>:</para>
<variablelist>
<varlistentry>
<term><literal>beastie_disable="YES"</literal></term>
<listitem>
<para>Dit zal het menu met opstartopties niet weergeven,
maar de getimede wachtende aftelprompt zal nog steeds
aanwezig zijn. Zelfs zonder dat het menu met
opstartopties wordt afgebeeld, zal het invoeren van
een optie in de getimede wachtende aftelprompt de
actie van de overeenkomstige opstartoptie
uitvoeren.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>loader_logo="beastie"</literal></term>
<listitem>
<para>Dit zal de standaardwoorden <quote>&os;</quote>,
welke rechts van het menu met opstartopties worden
afgebeeld vervangen door het gekleurde beastie-logo
zoals vroegere uitgaven die hadden.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Raadpleeg voor meer informatie de handleidingpagina's
&man.splash.4;, &man.loader.conf.5;, en &man.vga.4;.</para>
</sect4>
</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">
<title>Opstartvlaggen kernel</title>
<indexterm>
<primary>kernel</primary>
<secondary>opstartvlaggen</secondary>
</indexterm>
<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>
<title>Device hints</title>
<indexterm>
<primary>device.hints</primary>
</indexterm>
<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 bootloader 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">
<title>Init: start van procesbesturing</title>
<indexterm>
<primary><command>init</command></primary>
</indexterm>
<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 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">
<title>Bronconfiguratie (rc)</title>
<indexterm><primary>rc-bestanden</primary></indexterm>
<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>Afsluitvolgorde</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 of via een module die ingeladen moet worden.</para>
</note>
</sect1>
</chapter>
|