De code in de MBR of bootmanager wordt soms ook wel stage zero van het opstartproces genoemd. In dit onderdeel worden twee eerder genoemde bootmanagers beschreven: boot0 en LILO.
De boot0 bootmanager: De MBR die standaard door de FreeBSD installer of
boot0cfg(8) wordt geïnstalleerd is gebaseerd op
/boot/boot0
. Het programma
boot0 is erg eenvoudig, omdat
MBR maar 446 bytes lang mag zijn vanwege de
slicetabel en de 0x55AA
identificatie aan
het einde van de MBR. Als de FreeBSD 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:
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 FreeBSD MBR:
#
fdisk -B -b /boot/boot0 apparaat
Waar apparaat
het apparaat is
waar de computer van boot, zoals ad0
voor de eerste IDE-schijf ad2
voor de
eerste IDE-schijf op de tweede IDE-controller,
da0
voor de eerste SCSI-schijf,
enzovoort. Als het wenselijk is een aangepaste instelling te
gebruiken voor de MBR, dan kan boot0cfg(8) gebruikt
worden.
De LILO bootmanager: Start, om deze bootmanager te installeren zodat er ook
FreeBSD mee gestart kan worden, eerst Linux® en voeg het
volgende toe aan het bestaande instellingenbestand
/etc/lilo.conf
:
other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD
Geef in de bovenstaande regels de primaire partitie en
schijf van FreeBSD op met Linux® instellingen, waarbij
X
vervangen wordt door de Linux®
schijfletter en Y
door het primaire
partitienummer van Linux®. Wijzig bij gebruik van een
SCSI-schijf
/dev/hd
in iets als
/dev/sd
. De regel
loader=/boot/chain.b
kan achterwege blijven
als de besturingssystemen op dezelfde schijf staan. Voer
daarna /sbin/lilo -v
uit om de
wijzigingen vast te leggen. Controleer het vastleggen door
controle van de schermberichten.
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
/boot/boot
door het installatieprogramma
of bsdlabel (zie
verderop).
Ze staan buiten bestandssystemen in de eerste track van de
opstartslice, beginnend bij de eerste sector. Dit is waar
boot0 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
/boot/boot
.
boot1
is erg simpel omdat dit slechts
512 bytes groot kan zijn en net genoeg weet over het FreeBSD
bsdlabel, dat informatie bevat over de
slice om boot2
te vinden en te
starten.
boot2
is iets verfijnder en begrijpt
het FreeBSD bestandssysteem genoeg om er bestanden op te vinden
en geeft een simpele interface om de kernel of loader te kiezen
die gestart moet worden.
boot2
start meestal de loader, doordat deze veel
slimmer is en gebruikersvriendelijke opstartinstellingen heeft.
Voorheen was het zijn taak direct de kernel te starten.
Als ooit eens de geïnstalleerde
boot1
en boot2
vervangen moeten worden kan dat met bsdlabel(8):
#
bsdlabel -B schijfslice
In het voorbeeld hierboven is
schijfslice
de schijf en slice
waarvan opgestart wordt, zoals ad0s1
voor de eerste slice op de eerste IDE-schijf.
Als alleen een schijfnaam als
ad0
gebruikt wordt in
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
bsdlabel(8) de commandoregel nog een keer te
controleren voordat er op Return wordt
gedrukt.
De loader is de laatse fase van de drietraps-bootstrap en
deze bevindt zich op het bestandssysteem, meestal als
/boot/loader
.
De loader is bedoeld als een gebruikersvriendelijke manier voor de instelling, door gebruik te maken van een makkelijke commandoverzameling, gesteund door een krachtige vertaler met een wat complexere commandoverzameling.
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.
Dan leest de loader /boot/loader.rc
,
die dan standaard
/boot/defaults/loader.conf
leest. Deze
plaatst redelijke standaarden in variabelen en leest
/boot/loader.conf
voor lokale
wijzigingen op deze variabelen.
loader.rc
reageert op deze variabelen
door de geselecteerde modules en kernel te laden.
Als laatste wordt standaard door de loader 10 seconden gewacht op toetsinvoer en als dit niet wordt onderbroken laadt loader de kernel. Als het wel wordt onderbroken krijgt de gebruiker een prompt aangeboden die een eenvoudige commandoverzameling begrijpt. Hier kan de gebruiker variabelen wijzigen, alle modules stoppen en/of starten en uiteindelijk opstarten of herstarten.
Hieronder worden de meest gebruikte loadercommando's besproken. Een volledige omschrijving van alle beschikbare commando's staat in loader(8).
seconden
Gaat door met het opstarten van de kernel als deze niet wordt onderbroken binnen de opgegeven tijd in seconden. Er wordt een aftelproces getoond dat standaard op 10 seconden staat.
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 unload-commando is gegeven, anders wordt de kernel die hiervoor was geladen gebruikt.
Doorloopt hetzelfde automatische instellen van
modules gebaseerd op variabelen zoals ook gebeurt bij
het opstarten. Dit is alleen zinnig als eerst
unload
is gebruikt en enkele
variabelen zijn gewijzigd, meestal
kernel
.
Toont documentatie uit
/boot/loader.help
. Als het
opgegeven onderwerp index
is, wordt
een lijst met beschikbare onderwerpen getoond.
bestandsnaam
…Verwerkt het bestand met de opgegeven naam. Het bestand wordt ingelezen en regel voor regel vertaald. Iedere foutmelding stopt direct het include-commando.
bestandsnaam
Laadt de kernel, kernel-module of bestand van opgegeven type en naam. Ieder argument achter de bestandsnaam wordt doorgegeven aan het bestand.
Toont de lijst bestanden in het opgegeven pad of
van de rootmap als geen pad wordt opgegeven. Als
-l
wordt meegegeven wordt ook de
bestandsgrootte weergegeven.
Toont de lijst met alle apparaten waarvan het
mogelijk is om modules te kunnen laden. Als
-v
wordt meegegeven worden meer
details getoond.
Toont geladen modules. Als -v
wordt meegegeven worden meer details getoont.
bestandsnaam
Toont de inhoud van het opgegeven bestand met een
pauze na iedere LINES
regels.
Herstart het systeem onmiddelijk.
variabele
, set
variabele
=waarde
Vult de omgevingsvariabele van de loader.
Verwijdert alle geladen modules.
Hier zijn wat practische voorbeelden van het gebruik van loader:
De kernel opstarten in single-user modus:
boot -s
De gebruikelijke kernel en modules ontladen om daarna de oude (of een andere) kernel te laden:
unload
load kernel.old
kernel.GENERIC
kan gebruikt
worden als de algemene kernel die meegeleverd is bij de
installatieschijf of kernel.old
om
de vorige geïnstalleerde kernel te gebruiken (als
bijvoorbeeld de kernel is vervangen).
Zo worden de bekende modules geladen met een andere kernel:
unload
set kernel="kernel.old"
boot-conf
Voor het laden van een kernelinstellingenscript (een script dat dingen doet die anders met de hand ingegeven zouden worden):
load -t userconfig_script /boot/kernel.conf
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.
Er zijn twee basisomgevingen beschikbaar in FreeBSD. 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 X11 en één van de
grafische bureaubladomgevingen,
zoals GNOME,
KDE, of
XFce zijn geïnstalleerd, kan
het X11-bureaublad worden gestart door
startx
te gebruiken.
Sommige gebruikers verkiezen het grafische aanmeldscherm van X11 boven de traditionele op tekst gebaseerde aanmeldprompt. Schermbeheerders zoals XDM voor Xorg, gdm voor GNOME, en kdm voor KDE (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.
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 (Microsoft® Windows® of niet-Unix-systeem) zou ervaren.
De splash-schermfunctie ondersteunt 256-kleuren-bitmaps (
.bmp
), ZSoft PCX (
.pcx
) en TheDraw (.bin
)
bestanden. Verder moeten de splash-afbeeldingsbestanden een
resolutie van 320 bij 200 pixels of minder hebben om op de
standaard VGA-adapters te werken.
Activeer de VESA-ondersteuning die in
FreeBSD zit om grotere afbeeldingen, tot de maximale resolutie
van 1024 bij 768 pixels, te gebruiken. Dit kan worden
aangezet door de VESA-module tijdens het
opstarten van het systeem te laden, of door de
kernelconfiguratieoptie VESA
toe te
voegen en een eigen kernel te bouwen (zie Hoofdstuk 9, De FreeBSD-kernel instellen). De ondersteuning voor
VESA geeft gebruikers de mogelijkheid om
een splash-schermafbeelding af te beelden dat het hele
scherm vult.
Zolang het splash-scherm wordt afgebeeld tijdens het opstartproces, kan het ten alle tijden worden uitgezet door op een toetsenbordtoets te drukken.
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 saver=
toe te voegen aan
/etc/rc.conf
. De optie
saver=
heeft verschillende ingebouwde
schermbeveiligingen om uit te kiezen, de volledige lijst
staat in de handleidingpagina splash(4). De standaard
schermbeveiliging heet “warp”. Merk op dat de
optie saver=
die in
/etc/rc.conf
is gespecificeerd alleen
betrekking heeft op virtuele consoles. Het heeft geen
effect op X11-schermbeheerders.
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.
Voorbeelden van splash-schermen kunnen gedownload worden van de galerij op http://artwork.freebsdgr.org/. Door de port sysutils/bsd-splash-changer te installeren, kunnen de splash-afbeeldingen willekeurig elke keer dat er wordt opgestart uit een verzameling worden gekozen.
Het splash-schermbestand (.bmp
,
.pcx
of .bin
) moet op de
rootpartitie staan, bijvoorbeeld in de map /boot
.
Bewerk voor de standaardresolutie van het opstartscherm
(256 kleuren, 320 bij 200 pixels, of minder)
/boot/loader.conf
zodat het volgende
erin staat:
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp
"
Bewerk /boot/loader.conf
voor grotere
videoresoluties (tot maximaal 1024 bij 768 pixels) zodat
dit bestand het volgende bevat:
vesa_load="YES"
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp
"
Het bovenstaande neemt aan dat
/boot/splash.bmp
voor het splash-scherm wordt gebruikt. Wanneer een
PCX-bestand gewenst is, dienen de
volgende opdrachten gebruikt te worden, en afhankelijk van
de resolutie de regel vesa_load="YES"
.
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx
"
In versie 8.3 is een andere mogelijkheid het gebruik van ASCII-kunst in TheDraw formaat.
splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bin
"
De bestandsnaam is niet beperkt tot “splash” zoals
in het bovenstaande voorbeeld. Het kan van alles zijn zolang het
een van de bovenstaande types is, zoals
splash_640x400.bmp
of
bluewave.pcx
.
Enkele andere interessante opties voor
loader.conf
:
beastie_disable="YES"
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.
loader_logo="beastie"
Dit zal de standaardwoorden “FreeBSD”, welke rechts van het menu met opstartopties worden afgebeeld vervangen door het gekleurde beastie-logo zoals vroegere uitgaven die hadden.
Raadpleeg voor meer informatie de handleidingpagina's splash(4), loader.conf(5), en vga(4).
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.