De &os;-kernel instellenJimMockBijgewerkt en opnieuw gestructureerd door JakeHambyOorspronkelijk bijgedragen door RenéLadanVertaald door Samenvattingkerneleen aangepaste kernel bouwenDe kernel is de kern van het &os;-besturingssysteem en is
verantwoordelijk voor het geheugenbeheer, het opleggen van
beveiligingsregels, het aansturen van het netwerk, de toegang tot
schijven en nog veel meer. Hoewel steeds meer in &os; dynamisch
instelbaar wordt, is het af en toe nodig om de kernel opnieuw in
te stellen en te compileren.Na het lezen van dit hoofdstuk weet de lezer:Waarom het nodig is om een aangepaste kernel te bouwen;Hoe een nieuw kernelinstellingenbestand te schrijven of
een bestaand kernelinstellingenbestand aan te passen;Hoe het kernelinstellingenbestand te gebruiken om een
nieuwe kernel aan te maken en te bouwen;Hoe een nieuwe kernel te installeren;Hoe problemen op te lossen als er iets verkeerd gaat.Alle opdrachten die in dit hoofdstuk als voorbeeld zijn
gegeven moeten als root uitgevoerd worden om
te slagen.Redenen om een aangepaste kernel te bouwenTraditioneel heeft &os; zoals dat heet een
monolitische kernel gehad. Dit betekent dat de
kernel één groot programma was, een vaste lijst
van apparaten ondersteunde en als het gewenst was om het gedrag
van de kernel te veranderen, moest er een nieuwe kernel
gecompileerd worden en moest daarna de computer opnieuw gestart
worden met de nieuwe kernel.Vandaag de dag beweegt &os; zich snel naar een model waar
veel van de functionaliteit van de kernel in modules zit die
dynamisch in en uit de kernel kunnen worden geladen, naargelang
dat noodzakelijk is. Dit stelt de kernel in staat om zich aan
nieuwe hardware aan te passen die plotseling beschikbaar komt
(zoals PCMCIA-kaarten in een laptop) of om nieuwe functionaliteit
in zich op te nemen die niet noodzakelijk was toen de kernel
oorspronkelijk werd gecompileerd. Dit staat bekend als een
modulaire kernel.Desondanks is het nog steeds nodig om enkele dingen van de
kernel statisch in te stellen. In sommige gevallen komt dit
doordat de functionaliteit zo diep geworteld zit in de kernel dat
het niet dynamisch laadbaar gemaakt kan worden. In andere
gevallen kan het simpelweg komen doordat nog niemand de tijd
heeft genomen om een dynamisch laadbare kernelmodule voor die
functionaliteit te schrijven.Het bouwen van een aangepaste kernel is een van de meest
belangrijke beproevingen die geavanceerde BSD-gebruikers moet
doorstaan. Hoewel dit proces veel tijd in beslag neemt, levert
het veel voordelen op voor een &os; systeem. In tegenstelling
tot de GENERIC-kernel, die vele typen
hardware moet ondersteunen, ondersteunt een aangepaste kernel
alleen de hardware van de computer waar hij voor gemaakt is. Dit
biedt een aantal voordelen, zoals:Een snellere opstarttijd. Aangezien de kernel alleen de
hardware zoekt die zich in het systeem bevindt, kan de tijd
die het systeem nodig heeft om op te starten aanzienlijk
korter worden;Minder geheugengebruik. Een aangepaste kernel gebruikt
vaak minder geheugen dan de
GENERIC-kernel door ongebruikte mogelijkheden
en apparaatstuurprogramma's weg te laten. Dit is van belang
aangezien de kernelcode altijd in het fysieke geheugen aanwezig
blijft, waardoor dit geheugen niet door applicaties gebruikt kan
worden. Om deze reden is een aangepaste kernel geknipt
voor een systeem met een kleine hoeveelheid RAM;Aanvullende hardware-ondersteuning. Een aangepaste
kernel kan ingebouwde ondersteuning bieden voor apparaten die
zich niet in de GENERIC-kernel bevinden,
zoals geluidskaarten.De systeemhardware vindenTomRhodesGeschreven door Alvorens in de kernelconfiguratie te duiken, zou het
verstandig zijn om een inventarisatie van de hardware van de
machine te maken. In het geval dat &os; niet het primaire
besturingssysteem is, kan de inventarisatielijst eenvoudig worden
gemaakt door de configuratie van het huidige besturingssysteem te
bekijken. De Device Manager van
µsoft; bijvoorbeeld bevat normaliter belangrijke informatie
over geïnstalleerde apparaten. De Device
Manager bevindt zich in het controlepaneel.Sommige versies van µsoft.windows; hebben een icoon
System dat een scherm weer zal geven
waarmee Device Manager kan worden
benaderd.Als er geen ander besturingssysteem op de machine staat, moet
de beheerder deze informatie handmatig vinden. Eén manier
is om de gereedschappen &man.dmesg.8; en &man.man.1; te gebruiken.
De meeste apparaatstuurprogramma's van &os; hebben een
handleiding, die de ondersteunde hardware noemen, en tijdens het
opstarten wordt gevonden hardware getoond. De volgende regels
geven bijvoorbeeld aan dat het stuurprogramma voor
psm een muis heeft gevonden:psm: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0Dit stuurprogramma zal in het eigen kernelinstellingenbestand
opgenomen moeten worden of worden geladen met &man.loader.conf.5;.Soms geven de gegevens van dmesg alleen de
systeemboodschappen weer in plaats van de uitvoer van de
opstartonderzoeken. In deze gevallen kan de uitvoer worden
verkregen door het bestand
/var/run/dmesg.boot te bekijken.Een andere methode om hardware te vinden is door
&man.pciconf.8; te gebruiken welke meer gedetailleerde uitvoer
geeft. Bijvoorbeeld:ath0@pci0:3:0:0: class=0x20000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernetDit beetje uitvoer, verkregen met
pciconf -lv geeft aan dat het
stuurprogramma ath een draadloos
Ethernetapparaat heeft gevonden. Het gebruik van
man ath zal de
handleiding voor &man.ath.4; teruggeven.Wanneer de vlag aan &man.man.1; wordt
gegeven kan deze nuttige informatie geven. Met het bovenstaande
kan dit gedaan worden:&prompt.root; man -k Atherosom een lijst handleidingen te krijgen die dat ene woord
bevatten:ath(4) - Atheros IEEE 802.11 wireless network driver
ath_hal(4) - Atheros Hardware Access Layer (HAL)Gewapend met een inventarisatielijst van de hardware zou het
proces van het bouwen van een eigen kernel minder angstaanjagend
moeten lijken.Kernel stuurprogramma's, subsystemen, en moduleskernelstuurprogramma's / modules / subsystemenBekijk, voordat er een eigen kernel gebouwd wordt, de redenen
om dit te doen. Als er de noodzaak is voor specifieke
hardwareondersteuning, kan dit reeds beschikbaar zijn als een
module.Kernelmodules staan in de map /boot/kernel en kunnen dynamisch in
de draaiende kernel worden geladen met &man.kldload.8;. De
meeste, als niet alle, kernelstuurprogramma's hebben een
specifieke module en een handleiding. De laatste sectie merkte
bijvoorbeeld het draadloze Ethernetstuurprogramma
ath op. Van dit stuurprogramma staat de
volgende informatie in de handleiding:Plaats de volgende regel in &man.loader.conf.5; om
het stuurprogramma tijdens het opstarten als een module te laden:
if_ath_load="YES"Zoals aangegeven, zal het toevoegen van de regel
if_ath_load="YES" aan
/boot/loader.conf deze module dynamisch
laden tijdens het opstarten.In sommige gevallen is er geen geassocieerde module. Dit
geldt het vaakst voor bepaalde subsystemen en zeer belangrijke
stuurprogramma's, het fast file system (FFS)
bijvoorbeeld is een verplichte optie in de kernel, net zoals
netwerkondersteuning (INET). Helaas is de enige manier om te zien
of een stuurprogramma nodig is naar de module zelf zoeken.Het is eenvoudig om ondersteuning voor een
apparaat of optie te verwijderen en met een kapotte kernel
opgezadeld te zitten. Als bijvoorbeeld het stuurprogramma
&man.ata.4; uit het kernelinstellingenbestand gehaald wordt,
zal een systeem dat ATA
schijfstuurprogramma's gebruikt niet opstarten zonder de module
aan loader.conf toe te voegen. Kijk bij
twijfel of de module aanwezig is en laat ondersteuning dan
gewoon in de kernel.Bouwen en installeren van een aangepaste kernelkernelbouwen / installerenHet is noodzakelijk om de volledige broncode van &os;
geïnstalleerd te hebben om de kernel te bouwen.Eerst wordt er een overzicht gegeven van de mappen waarin de
kernel gebouwd wordt. Alle genoemde mappen staan onder de map
/usr/src/sys, die ook toegankelijk is via
de padnaam /sys. Er zijn hier een aantal
mappen aanwezig die de verschillende delen van de kernel
representeren, maar de meest belangrijke hiervan zijn
arch/conf, waarin
de kernelinstellingen bewerkt worden en
compile, waarin de aangepaste kernel gebouwd
wordt. arch representeert hier
één van i386,
amd64,
ia64, powerpc,
sparc64 of pc98 (een
alternatieve ontwikkelingstak van PC-hardware die populair is in
Japan). Alles binnen de map van een bepaalde architectuur is er
alleen voor die architectuur. De rest van de code is
machine-onafhankelijk en hetzelfde op alle platformen waarnaar
&os; eventueel overgezet kan worden. De indeling van de
mapstructuur is logisch: alle ondersteunde apparaten,
bestandssystemen en opties staan in een eigen submap.Dit voorbeelden in dit hoofdstuk veronderstellen dat de
i386-architectuur gebruikt wordt. Als dit voor de lezer anders is,
moeten de bijhorende aanpassingen aan de padnamen worden gemaakt.Als de map /usr/src/niet aanwezig is op een systeem (of als het leeg
is), dan is de broncode niet geïnstalleerd. De eenvoudigste
manier om de volledige broncode te installeren is &man.csup.1; te
gebruiken zoals beschreven in . U dient
tevens een symbolische link naar /usr/src/sys/
aan te maken:&prompt.root; ln -s /usr/src/sys /sysDaarna kan vanuit de map
arch/conf het
instellingenbestand GENERIC naar de naam
voor de aangepaste kernel gekopieerd worden. Bijvoorbeeld:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MIJNKERNELTraditioneel bestaat deze naam geheel uit hoofdletters en als
er meerdere &os;-machines worden beheerd met verschillende
hardware is het een goed idee om het te vernoemen naar de
hostnaam van de machine. Omwille van dit voorbeeld wordt het
MIJNKERNEL
genoemd.Het kernelinstellingenbestand direct onder
/usr/src opslaan kan een slecht idee zijn.
In geval van problemen kan het verleidelijk zijn om
/usr/src te verwijderen en opnieuw te
beginnen. Nadat dit gedaan is kost het vaak maar enkele
seconden om te realiseren dat het instellingenbestand voor de
aangepaste kernel verwijderd is. Ook moet
GENERIC niet gewijzigd worden, omdat het
tijdens de volgende keer dat de broncodeboom bijgewerkt
wordt, overschreven kan worden waarbij de wijzigingen
in de kernelinstellingen verloren gaan.Het kan gewenst zijn om het kernelinstellingenbestand
ergens anders op te slaan en een symbolische link naar het
bestand in de map
i386 aan te
maken:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; mkdir /root/kernels
&prompt.root; cp GENERIC /root/kernels/MIJNKERNEL
&prompt.root; ln -s /root/kernels/MIJNKERNELNu moet
MIJNKERNEL met de
favoriete tekstverwerker bewerkt worden. Voor beginners is
waarschijnlijk alleen de tekstverwerker
vi beschikbaar, die te ingewikkeld is
om hier te beschrijven, maar goed is beschreven in vele boeken in
de bibliografie. &os; biedt
ook de eenvoudigere tekstverwerker ee,
die voor een beginner de keuze bij uitstek is. De
commentaarregels in het begin kunnen gewijzigd worden om de
persoonlijke instellingen of de veranderingen die gemaakt zijn ten
opzichte van GENERIC weer te geven.&sunos;Voor degenen die een kernel op &sunos; of een andere BSD
hebben gebouwd zal veel van dit bestand bekend voorkomen.
Echter, voor degenen die van een ander besturingssysteem zoals
DOS komen, kan het instellingenbestand
GENERIC overdonderend overkomen, dus moeten
de beschrijvingen in de sectie Het Instellingenbestand
zorgvuldig opgevolgd worden.Als de broncodeboom
gesynchroniseerd is met de nieuwste broncode van het
&os;-project, moet altijd
/usr/src/UPDATING gelezen worden voordat
enige bijwerkstappen worden genomen. Dit bestand beschrijft
alle belangrijke zaken en gebieden binnen de broncodestructuur
die speciale aandacht nodig hebben.
/usr/src/UPDATING komt altijd overeen met
de lokale versie van de &os;-broncode en is daarom meer
bijgewerkt met nieuwe informatie dan dit handboek.Nu moet de broncode voor de kernel gecompileerd worden.Een kernel bouwenHet is noodzakelijk om de volledige broncode van &os;
geïnstalleerd te hebben om te kernel te bouwen.Ga naar de map /usr/src:&prompt.root; cd /usr/srcCompileer de kernel:&prompt.root; make buildkernel KERNCONF=MIJNKERNELInstalleer de nieuwe kernel:&prompt.user; make installkernel KERNCONF=MIJNKERNELBij het bouwen van een aangepaste kernel worden standaard
alle kernelmodules ook herbouwd. Om de
kernel sneller bij te werken en alleen de aangepaste modules
te bouwen kan /etc/make.conf aangepast
worden voordat de kernel wordt gebouwd:MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsMet deze variabele wordt een lijst van te bouwen modules
ingesteld die gebouwd moeten worden in plaats van allen.WITHOUT_MODULES = linux acpi sound ntfsDeze variabele stelt een lijst in van modules op het topniveau
die moeten worden uitgesloten van het bouwproces. Andere variabelen
die mogelijk ook nuttig zijn in het proces van het bouwen van een
kernel staan beschreven in de handleiding voor
&man.make.conf.5;./boot/kernel.oldDe nieuwe kernel wordt naar de map /boot/kernel gekopieerd als
/boot/kernel/kernel en de oude kernel wordt
verplaatst naar /boot/kernel.old/kernel. Nu
moet het systeem afgesloten worden en opnieuw worden opgestart om
gebruik te maken van de nieuwe kernel. Er zijn wat instructies
voor problemen
oplossen aan het einde van dit hoofdstuk, die erg nuttig
kunnen zijn als er iets misgaat. Vergeet niet om het gedeelte te
lezen waarin staat uitgelegd hoe te herstellen als de nieuwe
kernel niet
opstart.Andere bestanden die te maken hebben met het opstartproces,
zoals de boot &man.loader.8; en instellingen worden opgeslagen
in /boot. Modules van derde partijen of
eigen modules kunnen in /boot/kernel opgeslagen worden,
alhoewel gebruikers erop bedacht moeten zijn dat het erg
belangrijk is dat de modules synchroon worden gehouden met de
gecompileerde kernel. Modules die niet bedoeld zijn om met de
gecompileerde kernel te draaien kunnen voor instabiliteit of
onjuistheden zorgen.Het instellingenbestandJoelDahlBijgewerkt door kernelNOTESNOTESkernelinstellingenbestandHet algemene formaat van een instellingenbestand is vrij
eenvoudig. Elke regel bevat een sleutelwoord en
één of meer argumenten. Omwille van de eenvoud
bevatten de meeste regels maar één argument. Alles
wat na een # komt, wordt als commentaar
beschouwd en genegeerd. De volgende gedeelten beschrijven elk
sleutelwoord, in het algemeen in dezelfde volgorde als
GENERIC, alhoewel sommige samenhangende
sleutelwoorden gegroepeerd zijn in een enkel gedeelte (zoals
Netwerken) zelfs al staan ze verspreid in het bestand
GENERIC.
Een uitputtende lijst van architectuurafhankelijke opties en
apparaten staat in het bestand NOTES, dat in
dezelfde map staat als het bestand GENERIC.
Architectuuronafhankelijke opties staan in
/usr/src/sys/conf/NOTES.Een nieuwe directief include is beschikbaar
om te gebruiken in
instellingenbestanden. Hiermee kan een ander instellingenbestand logisch
in het huidige worden opgenomen, waardoor het eenvoudig wordt om kleine
veranderingen relatief aan een bestaand bestand te onderhouden. Als u
bijvoorbeeld een GENERIC kernel nodig heeft met
slechts een klein aantal aanvullende opties of stuurprogramma's, hoeft u
hiermee slechts een delta ten opzichte van GENERIC te onderhouden:include GENERIC
ident MIJNKERNEL
options IPFIREWALL
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERTVeel beheerders zullen aanzienlijke voordelen in dit model zien
vergeleken met de vroegere gewoonte om instellingenbestanden vanuit het
niets te schrijven: het lokale instellingenbestand zal alleen lokale
verschillen uitdrukken ten opzichte van een GENERIC
kernel en wanneer upgrades worden uitgevoerd zullen nieuwe mogelijkheden
die aan GENERIC zijn toegevoegd ook aan de lokale
kernel worden toegevoegd tenzij dit expliciet verhinderd wordt met
nooptions of nodevice. De rest van
dit hoofdstuk behandelt de inhoud van een typisch instellingenbestand en
de verschillende rollen die opties en apparaten spelen.Draai het volgende commando als root om
een bestand te bouwen dat alle beschikbare opties bevat, wat
normaliter voor testdoeleinden gedaan wordt:&prompt.root; cd /usr/src/sys/i386/conf && make LINTkernelinstellingenbestandHet volgende is een voorbeeld van het
kernelinstellingenbestand GENERIC met
aanvullend commentaar omwille van de helderheid. Dit voorbeeld
is redelijk gelijk aan de versie in
/usr/src/sys/i386/conf/GENERIC.kerneloptiesmachinemachine i386Dit is de architectuur van de machine. Het moet
één van amd64,
i386,
ia64, pc98,
powerpc of sparc64
zijn.kerneloptiescpucpu I486_CPU
cpu I586_CPU
cpu I686_CPUBovenstaande optie geeft het type CPU aan dat in een systeem
zit. De CPU-regel kan meerdere keren voorkomen (als bijvoorbeeld
onbekend is of I586_CPU of
I686_CPU gebruikt moet worden), maar voor een
aangepaste kernel is het beter om alleen de aanwezige CPU aan te
geven. Als er twijfel bestaat over het type CPU, kan het bestand
/var/run/dmesg.boot worden bekeken voor de
opstartberichten.kerneloptiesidentident GENERICDit is de identificatie van de kernel. Dit moet veranderd
worden in de naam van de kernel, dus
MIJNKERNEL als de
instructies van de voorgaande voorbeelden gevolgd zijn. De waarde
in de string ident wordt afgebeeld wanneer de
kernel opstart, dus is het handig om de nieuwe kernel een andere
naam te geven als deze apart moet worden gehouden van de
gebruikelijke kernel (als er bijvoorbeeld een experimentele kernel
gebouwd wordt).#Om apparaatbindingen statisch in te compileren in plaats van via /boot/device.hints.
#hints "GENERIC.hints" # Standaardlocatie voor devices.&man.device.hints.5; wordt gebruikt om opties van de
programma's die de apparaten aansturen in te stellen. De
standaardplaats die &man.loader.8; controleert tijdens het
opstarten is /boot/device.hints. Met de
optie hints is het mogelijk om deze
aanwijzingen statisch in de kernel te compileren, waardoor er
geen noodzaak is om een bestand device.hints
in /boot aan te maken.makeoptions DEBUG=-g # Bouw kernel met gdb(1) debugsymbolen.Het normale bouwproces van &os; voegt debuginformatie toe
wanneer de kernel met de optie gebouwd wordt,
wat debuginformatie doorgeeft aan &man.gcc.1;.options SCHED_ULE # ULE taakplannerDe standaard taakplanner voor &os;. Laat dit staan.options PREEMPTION # Zet kernelthreadpreëmptie aanSta toe dat threads in de kernel worden gepreëmpt door
threads met een hogere prioriteit. Het help bij interactiviteit
en staat toe dat interruptthreads eerder draaien in plaats van te
moeten wachten.options INET # internetwerkenNetwerkondersteuning. Laat dit aanstaan, zelfs als een
verbinding met een netwerk niet gepland is. De meeste
programma's hebben tenminste een teruglusnetwerk nodig (dat wil
zeggen het maken van netwerkverbindingen binnen de PC), dus dit
is eigenlijk verplicht.options INET6 # IPv6 communicatieprotocollenDit zet de IPv6-communicatieprotocollen aan.options FFS # Berkeley Fast BestandssysteemDit is het basisbestandssysteem voor de harde schijf. Laat
dit erin staan als er vanaf de harde schijf wordt
opgestart.options SOFTUPDATES # Schakel FFS Softupdates ondersteuning inDeze optie zet softupdates in de kernel aan en helpt om de
schijftoegang voor schrijven te verhogen. Zelfs als deze
functionaliteit door de kernel geleverd wordt, moet die voor
specifieke schijven worden aangezet. Bekijk de uitvoer van
&man.mount.8; om te zien of softupdates aanstaat voor de
systeemschijven. Als de optie soft-updates
niet zichtbaar is, dient deze geactiveerd te worden met behulp
van &man.tunefs.8; voor bestaande bestandssystemen of
&man.newfs.8; voor nieuwe bestandssystemen.options UFS_ACL # Ondersteuning voor toegangscontrolelijstenMet deze optie wordt de ondersteuning voor
toegangscontrolelijsten aangezet. Hiervoor zijn uitgebreide
attributen en UFS2 nodig. Een en ander wordt
in detail beschreven in .
ACL's staan standaard aan en moeten niet
uitgezet worden in de kernel als ze al eerder op een
bestandssysteem zijn gebruikt, omdat dit de
toegangscontrolelijsten verwijdert en hierdoor de manier waarop
bestanden beschermd worden op onvoorspelbare wijze verandert.options UFS_DIRHASH # Verbeter prestaties in grote mappenDeze optie bevat functionaliteit om schijfoperaties op grote
mappen te versnellen, ten koste van extra geheugen. Deze staat
normaalgesproken, zoals voor een grote server of interactief
werkstation, aan en wordt uitgezet als &os; op een kleiner
systeem wordt gebruikt waar geheugen het belangrijkste en
schijfsnelheid minder belangrijk is, zoals voor een
firewall.options MD_ROOT # MD is een potentieel rootapparaatDeze optie zet ondersteuning aan voor een virtuële
schijf die in het geheugen wordt geïmplementeerd en als
rootapparaat wordt gebruikt.kerneloptiesNFSkerneloptiesNFS_ROOToptions NFSCLIENT # Netwerk Bestandssysteem Client
options NFSSERVER # Netwerk Bestandssysteem Server
options NFS_ROOT # NFS bruikbaar als /, NFSCLIENT nodigHet netwerkbestandssysteem. Dit kan weggelaten worden tenzij
er gepland is om partities te aan te koppelen van een &unix;
bestandsserver over TCP/IP.kerneloptiesMSDOSFSoptions MSDOSFS # MSDOS BestandssysteemHet &ms-dos; bestandssysteem. Dit kan veilig weggelaten
worden, tenzij er gepland is om een DOS-geformatteerde partitie
van de harde schijf tijdens het opstarten aan te koppelen. Het
wordt automatisch geladen als er voor de eerste keer een
DOS-partitie wordt aangekoppeld, zoals boven beschreven.
Bovendien geeft de uitstekende software emulators/mtools toegang tot
DOS-floppies zonder dat ze aangekoppeld en afgekoppeld moeten
worden en heeft het MSDOSFS helemaal niet
nodig.options CD9660 # ISO 9660 BestandssysteemHet ISO 9960-bestandssysteem voor CD-ROMs. Commentarieer dit
uit als er geen CD-ROM drive aanwezig is of als er slechts af en
toe gegevens-CD-ROMs aangekoppeld worden (aangezien het dynamisch
geladen wordt als er voor de eerste keer een gegevens-CD-ROM
aangekoppeld wordt). Audio-CD's hebben dit bestandssysteem niet
nodig.options PROCFS # Procesbestandssysteem (vereist PSEUDOFS)Het procesbestandssysteem. Dit is een als-of
bestandssysteem, aangekoppeld op /proc, dat
programma's als &man.ps.1; in staat stelt om meer informatie over
de draaiende processen te geven. Het is in de meeste
omstandigheden niet nodig om PROCFS te
gebruiken, omdat de meeste debug- en monitorgereedschappen zijn
aangepast om zonder PROCFS te draaien:
installaties koppelen dit bestandssysteem standaard niet aan.options PSEUDOFS # Pseudo-bestandssysteem raamwerkKernels die PROCFS gebruiken moeten ook
ondersteuning voor PSEUDOFS opnemen.options GEOM_PART_GPT # GUID Partitietabellen.Voegt ondersteuning voor GUID
Partitietabellen toe. GPT biedt de mogelijkheid om een groot
aantal partities per schijf te hebben, 128 is de
standaardconfiguratie.options COMPAT_43 # Compatibel met BSD 4.3 [ERIN HOUDEN!]Compatibiliteit met 4.3BSD. Laat dit aanstaan. Sommige
programma's gedragen zich vreemd als dit uitgecommentarieerd
wordt.options COMPAT_FREEBSD4 # Compatibel met &os; 4Deze optie is nodig
om ondersteuning te bieden aan applicaties die gecompileerd zijn
op oudere versies van &os; en gebruik maken van oudere
systeemaanroep-interfaces. Het is aanbevolen dat deze optie
gebruikt wordt op alle &i386; systemen die mogelijk
oudere applicaties draaien. Voor platformen die pas in 5.X
ondersteuning verwierven, zoals ia64 en &sparc64;, is deze optie
niet nodig.options COMPAT_FREEBSD5 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 5.X die gebruik
maken van de systeemaanroepinterfaces van &os; 5.X.options COMPAT_FREEBSD6 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 6.X die gebruik
maken van de systeemaanroepinterfaces van &os; 6.X.options COMPAT_FREEBSD7 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 7.X die gebruik
maken van de systeemaanroepinterfaces van &os; 7.X.options SCSI_DELAY=5000 # Vertraging (in ms) voordat SCSI wordt ondergezocht.Dit zorgt ervoor dat de kernel vijf seconden wacht voordat die
elk SCSI-apparaat in het systeem onderzoekt. Als er alleen
IDE-harde schijven zijn, kan deze optie genegeerd worden, anders
kan geprobeerd worden dit getal te verlagen, om het opstarten te
versnellen. Uiteraard moet deze waarde weer verhoogd worden als
&os; problemen heeft om de SCSI-apparaten te herkennen.options KTRACE # ktrace(1) ondersteuningDit schakelt kernelondersteuning voor het volgen processen
in, wat handig is tijdens debuggen.options SYSVSHM # SYSV-stijl gedeeld geheugenDeze optie biedt System V gedeeld geheugen. Meestal
wordt dit wegens de XSHM-uitbreiding in X gebruikt, waar door
vele grafische programma's automatisch gebruik van wordt gemaakt
voor extra snelheid. Als X gebruik wordt, is het raadzaam om dit
op te nemen.options SYSVMSG # SYSV-stijl berichtwachtrijenDit biedt ondersteuning voor System V berichten. Ook
deze optie voegt slechts een paar honderd bytes aan de kernel
toe.options SYSVSEM # SYSV-stijl semaforenDit biedt ondersteuning voor System V semaforen. Het
wordt minder vaak gebruikt, maar voegt slechts een paar honderd
bytes aan de kernel toe.De optie van het commando &man.ipcs.1;
geeft een lijst van alle processen die een van deze
System V faciliteiten gebruikt.options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensiesDit biedt real-time-uitbreidingen die in de 1993 &posix; zijn
toegevoegd. Bepaalde applicaties in de Portscollectie gebruiken
deze (zoals &staroffice;).options KBD_INSTALL_CDEV # installeer een CDEV-ingang in /devDeze optie is nodig om apparaatknooppunten voor het
toetsenbord aan te maken in /dev.options ADAPTIVE_GIANT # Giant mutex is adaptief.Giant is de naam van een wederzijds uitsluitingsmechanisme
(een sleep mutex) dat een grote verzameling kernelbronnen
beschermt. Vandaag de dag is dit een onacceptabele
prestatie-bottleneck die actief door sloten wordt vervangen die
individuele bronnen beschermen. De optie
ADAPTIVE_GIANT zorgt ervoor dat Giant in de
verzamelingen van mutexen wordt opgenomen waar actief wordt
opgespind. Dit betekent dat wanneer een thread de Giant-mutex
wil nemen, maar die reeds door een thread op een andere CPU
genomen is, de eerste thread blijft draaien en wacht tot er een
slot vrijkomt. Normaalgesproken zou de thread weer gaan slapen
en wachten op de volgende kans om te draaien. Laat dit er in
geval van twijfel instaan.Merk op dat in &os; 8.0-RELEASE en later alle mutexen
standaard adaptief zijn, tenzij ze expliciet op niet-adaptief
zijn gezet door met de optie
NO_ADAPTIVE_MUTEXES te compileren. Een
gevolg is dat Giant nu standaard adaptief is, en dat de optie
ADAPTIVE_GIANT uit de kernelinstellingen is
verwijderd.kerneloptiesSMPdevice apic # I/O APICHet apic-apparaat zet de ondersteuning voor I/O-APIC voor het
afleveren van interrupts aan. Het apic-apparaat kan zowel in UP-
als in SMP-kernels gebruikt worden, maar is noodzakelijk voor
SMP-kernels. Voeg options SMP toe om
ondersteuning voor meerdere processoren op te nemen.Het apic-apparaat bestaat alleen in de i386-architectuur,
deze instelregel dient niet op andere architecturen gebruikt te
worden.device eisaNeem dit op voor een EISA-moederbord. Dit zet ondersteuning
voor zelfdetectie en -instelling aan voor alle apparaten op de
EISA-bus.device pciNeem dit op voor een PCI-moederbord. Dit zet ondersteuning
voor zelfdetectie van PCI-kaarten en gatewaying van
PCI-naar-ISA-bus aan.# Floppy drives
device fdcDit is de controller voor de floppydrive.# ATA- en ATAPI-apparaten
device ataDit stuurprogramma biedt ondersteuning aan alle ATA- en
ATAPI-apparaten. Er is slechts één device
ata-regel nodig om de kernel alle PCI
ATA/ATAPI-apparaten te laten ontdekken op moderne
machines.device atadisk # ATA schijvenDit is samen met device ata nodig voor ATA
schijven.device ataraid # ATA RAID schijvenDit is samen met device ata nodig voor ATA
RAID-schijven.
device atapicd # ATAPI CD-ROM drivesDit is samen met device ata nodig voor
ATAPI CD-ROM drives.device atapifd # ATAPI floppy drivesDit is samen met device ata nodig voor
ATAPI floppydrives.device atapist # ATAPI tape drivesDit is samen met device ata nodig voor
ATAPI tapedrives.options ATA_STATIC_ID # Statische apparaatnummeringDit zorgt ervoor dat de controller statisch nummert. Zonder
deze optie worden nummers dynamisch toegewezen.# SCSI Controllers
device ahb # EISA AHA1742 familie
device ahc # AHA2940 en onboard AIC7xxx apparaten
options AHC_REG_PRETTY_PRINT # Print registerbitvelden in
# debuguitvoer. Voegt ~128k
# aan stuurprogramma toe.
device ahd # AHA39320/29320 en onboard AIC79xx apparaten
options AHD_REG_PRETTY_PRINT # Print registerbitvelden in
# debuguitvoer. Voegt ~215k
# aan stuurprogramma toe.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic familie
#device ispfw # Firmware voor QLogic HBAs- normaliter een module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (nieuwere chipsets + die van `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50SCSI controllers. Commentarieer de regels uit voor apparaten
die niet in het systeem aanwezig zijn. Als het een systeem met
alleen IDE apparaten betreft, kunnen ze allemaal weggelaten
worden. De regels met *_REG_PRETTY_PRINT zijn
debugopties voor hun respectievelijke stuurprogramma's.# SCSI randapparaten
device scbus # SCSI bus (nodig voor SCSI)
device ch # SCSI media changers
device da # Direct Access (schijven)
device sa # Sequential Access (tape, enzovoort)
device cd # CD
device pass # Passthrough apparaat (directe SCSI-toegang)
device ses # SCSI Omgevingsdiensten (en SAF-TE)SCSI-aanhangsels. Ook hier geldt dat apparaten die niet
aanwezig zijn uitgecommentarieerd kunnen worden, of als alleen
IDE-hardware aanwezig is, ze allemaal weggelaten kunnen
worden.Het USB-stuurprogramma &man.umass.4; en enkele andere
stuurprogramma's gebruiken het SCSI-subsysteem, alhoewel ze
geen echte SCSI-apparaten zijn. Daarom mag SCSI-ondersteuning
niet verwijderd worden als dit soort stuurprogramma's in de
kernelinstellingen worden opgenomen.# RAID controllers met interfaces naar het SCSI subsysteem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI en Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - Zie NOTES voor opties
device hptmv # Highpoint RocketRAID 182x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough voor aac (heeft CAM nodig)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 famile
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAIDOndersteunde RAID-controllers. Als een van deze niet
aanwezig is, kan deze uitgecommentarieerd of verwijderd
worden.# atkbdc0 bestuurt het toetsenbord en de PS/2 muis
device atkbdc # AT toetsenbordcontrollerDe toetsenbordcontroller (atkbdc) biedt
I/O-diensten aan voor het AT-toetsenbord en het PS/2-type van
aanwijsapparaten. Deze controller is noodzakelijk voor het
toetsenbordstuurprogramma (atkbd) en het
PS/2-aanwijsapparaatstuurprogramma
(psm).device atkbd # AT toetsenbordHet stuurprogramma atkbd biedt samen met
de controller atkbdc toegang tot het
AT84-toetsenbord of het uitgebreide AT-toetsenbord dat verbonden
is met de controller voor het AT-toetsenbord.device psm # PS/2 muisDit apparaat kan gebruikt worden als de muis in de
PS/2-muispoort wordt geplugd.device kbdmux # toetsenbordmultiplexerBasisondersteuning voor multiplexing van toetsenborden. Als u
niet van plan bent om meerdere toetsenborden op het systeem te
gebruiken, kunt u deze regel veilig verwijderen.device vga # VGA videokaart stuurprogrammaHet stuurprogramma voor de videokaart.device splash # Splash screen en screensaver ondersteuningEen splash-scherm tijdens het opstarten! Screensavers hebben
deze optie ook nodig.# syscons is het standaard consolestuurprogramma, lijkt op een SCO console
device scsc is het standaard consolestuurprogramma
en lijkt op een SCO-console. Aangezien de meeste programma's die
met een volledig scherm werken de console via een
terminaldatabase zoals termcap benaderen,
moet het niet uitmaken of dit of vt, het
VT220-compatibele consolestuurprogramma,
gebruikt wordt. Wanneer er aangemeld wordt, dient de variabele
TERM op scoansi gezet worden
indien programma's die met een volledig scherm werken problemen
hebben om met dit console te draaien.# Schakel dit in voor het pcvt (VT220 compatibele) consolestuurprogramma
#device vt
#options XSERVER # ondersteuning voor X server op een vt console
#options FAT_CURSOR # begin met een blokcursorDit is een VT220-compatibel consolestuurprogramma,
achterwaarts compatibel met de VT100/102. Het werkt goed op
enkele laptops die hardware-incompatibiliteiten hebben met
sc. Ook dient de variabele
TERM op vt100 of
vt220 gezet te worden bij het aanmelden. Dit
stuurprogramma kan ook nuttig zijn wanneer er verbinding wordt
gemaakt met een groot aantal verschillende machines in een
netwerk, waarbij de ingangen termcap of
terminfo voor het apparaat
sc vaak niet beschikbaar zijn.
vt100 is op bijna elk platform
beschikbaar.device agpNeem dit op als er een AGP-kaart in het systeem aanwezig is.
Dit zet ondersteuning voor AGP aan, en ondersteuning voor AGP
GART voor borden die deze mogelijkheden hebben.APM# Ondersteuning voor energiebeheer (zie NOTES voor meer opties)
#device apmOndersteuning voor geavanceerd energiebeheer (Advanced Power
Management). Dit is nuttig voor laptops, alhoewel dit
standaard uitgeschakeld is in GENERIC.# Schakel suspend/resume ondersteuning voor de i8254 in.
device pmtimerHet stuurprogramma voor het timerapparaat voor
energiebeheergebeurtenissen, zoals APM en ACPI.# PCCARD (PCMCIA) ondersteuning.
# PCMCIA en cardbus bridge ondersteuning.
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) busOndersteuning voor PCMCIA. Dit is wenselijk voor
laptopgebruikers.# Serial (COM) poorten
device sio # 8250, 16[45]50-gebaseerde seriële poortenDit zijn de seriële poorten waarnaar in de wereld van
&ms-dos;/&windows; verwezen wordt als
COM-poorten.Als er een intern modem op COM4 en
een seriële poort op COM2
aanwezig is, moet het IRQ van het modem in 2 worden veranderd
(om duistere technische redenen geldt dat IRQ2 = IRQ9) om er
vanuit &os; toegang toe te krijgen. Als er een multipoort
seriële kaart aanwezig is, staat in &man.sio.4; meer
informatie over de juiste waarden die aan
/boot/device.hints toegevoegd moeten
worden. Sommige videokaarten (vaak gebaseerd op S3 chips)
gebruiken IO-adressen van de vorm 0x*2e8, en
omdat vele goedkope serieële kaarten de 16-bits
IO-adresruimte niet volledig decoderen, botsen ze met deze
kaarten waardoor de COM4-poort
praktisch onbruikbaar is.Elke serieële poort moet een uniek IRQ hebben (tenzij
er gebruik wordt gemaakt van een van de multipoortkaarten
waarbij gedeelde interrupts ondersteund worden), dus kunnen de
standaard IRQ's voor COM3 en
COM4 niet gebruikt worden.# Parallelle poort
device ppcDit is de interface voor de parallelle poort op de
ISA-bus.device ppbus # Parallelle poortbus (verplicht)Biedt ondersteuning voor de parallelle poortbus.device lpt # PrinterOndersteuning voor parallelle poort-printers.Alle van de bovenstaande drie zijn noodzakelijk om
ondersteuning voor parallelle printers aan te zetten.device ppi # Parallelle poort interface apparaatDe algemene I/O (geek-poort) + IEEE1284 I/O.#device vpo # scbus en da verplichtzipdriveDit is voor een Iomega Zipdrive. Hiervoor is ondersteuning
voor scbus en da nodig. De
beste prestaties worden gehaald met poorten in EPP
1.9-modus.#device pucDit dient uitgecommentarieerd te worden indien er een
domme seriële of parallelle PCI-kaart
aanwezig is die ondersteund wordt door het &man.puc.4;
verbindingsstuurprogramma.# PCI Ethernet NIC's.
device de # DEC/Intel DC21x4x (Tulip)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (Typhoon)
device vx # 3Com 3c590, 3c595 (Vortex)Verscheidene PCI-netwerkkaartstuurprogramma's. Degenen die
niet in het systeem aanwezig zijn kunnen uitgecommentarieerd of
verwijderd worden.# PCI Ethernet NIC's die de MII bus controller code gebruiken.
# NB: 'device miibus' moet behouden blijven om deze NIC's te kunnen gebruiken!
device miibus # MII bus ondersteuningOndersteuning voor MII-bus is noodzakelijk voor sommige PCI
10/100 Ethernet-NICs, namelijk voor diegenen die MII-geldige
transceivers gebruiken of interfaces voor transceiverbesturing
implementeren die als een MII werken. Door device
miibus aan de kernelinstellingen toe te voegen wordt
de ondersteuning voor de generieke miibus-API en voor alle
PHY-stuurprogramma's opgenomen, waaronder een generieke voor
PHYs die niet specifiek door een individueel stuurprogramma
worden behandeld.device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 en verschillende gelijkwerkenden
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit Ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nge # NatSemi DP83820 gigabit Ethernet
device nve # nVidia MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (voorrang op 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device ge # VIA VT612x gigabit Ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)Stuurprogramma's die gebruik maken van de MII
bus-controllercode.# ISA Ethernet NIC's. Inclusief pccard NIC's.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' heeft 'device miibus' nodig
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 kaarten
device ex # Intel EtherExpress Pro/10 en Pro/10+
device ep # Etherlink III-gebaseerde kaarten
device fe # Fujitsu MB8696x-gebaseerde kaarten
device ie # EtherExpress 8/16, 3C507, StarLAN 10, etc.
device lnc # NE2100, NE32-VL Lance Ethernet kaarten
device sn # SMC's 9000 serie Ethernet chips
device xe # Xircom pccard Ethernet
# ISA apparaten die de oude ISA shims gebruiken
#device leISA Ethernetstuurprogramma's. In
/usr/src/sys/i386/conf/NOTES
staan details over welke kaarten door welk stuurprogramma
ondersteund worden.# Draadloze NIC kaarten
device wlan # 802.11 ondersteuningGenerieke 802.11 ondersteuning. Deze regel is vereist voor
draadloos netwerken.device wlan_wep # 802.11 WEP-ondersteuning
device wlan_ccmp # 802.11 CCMP-ondersteuning
device wlan_tkip # 802.11 TKIP-ondersteuningCrypto-ondersteuning voor 802.11-apparaten. Deze regels zijn
nodig als u van plan bent om versleuteling en
802.11i-beveiligingsprotocollen te gebruiken.device an # Aironet 4500/4800 802.11 draadloze NIC's.
device ath # Atheros PCI/CardBus NICs
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate verzendsnelheidbeheer voor ath
device awi # BayStack 660 en anderen
device ral # Ralink Technologies RT2500 draadloze NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 draadloze NIC's.
#device wl # Oudere niet-802.11 Wavelan draadloze NIC.Ondersteuning voor verscheidene draadloze kaarten.# Pseudo-apparaten
device loop # Netwerk teruglussenDit is het generieke teruglusapparaat voor TCP/IP. Als
telnet of FTP op localhost (ook bekend als
127.0.0.1) gebruikt wordt, loopt
dat via dit apparaat. Dit is verplicht.device random # Entropy apparaatCryptografisch veilige willekeurige getallengenerator.device ether # Ethernet ondersteuningether is allen noodzakelijk als er een
Ethernetkaart aanwezig is. Het bevat code voor het generieke
Ethernetprotocol.device sl # Kernel SLIPsl dient voor SLIP-ondersteuning. Dit is
bijna geheel overgenomen door PPP, wat eenvoudiger is op te
zetten, beter geschikt is voor modem-naar-modem-verbindingen en
krachtiger is.device ppp # Kernel PPPDit dient voor PPP-ondersteuning van inbelverbindingen door
de kernel. Er is ook een versie van PPP als gebruikersapplicatie
geïmplementeerd die tun gebruikt en meer
flexibiliteit en mogelijkheden biedt zoals demand-bellen.device tun # Packet tunnel.Dit wordt gebruikt door de gebruikers-PPP-software. In
PPP staat meer informatie.
device pty # Pseudo-ttys (telnet, etc.)Dit is een pseudo-terminal of gesimuleerde
aanmeldpoort. Die wordt gebruikt door binnenkomende sessies van
telnet en rlogin, door
xterm en voor sommige andere
applicaties zoals Emacs.device md # GeheugenschijvenPseudo-apparaten die een schijf in het geheugen implementeren.device gif # IPv6 en IPv4 tunnelenDit implementeert IPv6-over-IPv4-tunneling,
IPv4-over-IPv6-tunneling, IPv4-over-IPv4-tunneling en
IPv6-over-IPv6-tunneling. Het apparaat gif is
zelfklonend en zal naar behoefte
apparaatknooppunten aanmaken.device faith # IPv6-naar-IPv4-relay (vertaling)Dit pseudo-apparaat onderschept pakketten die ernaar
verzonden worden en leidt ze om naar het IPv4/IPv6-vertaaldaemon.# Het `bpf' apparaat schakelt de Berkeley Pakketfilter in.
# Wees bewust van de administratieve consequenties die dit heeft!
# 'bpf' is nodig bij gebruik van DHCP.
device bpf # Berkeley pakketfilterDit is het Berkeley Pakketfilter. Dit pseudo-apparaat staat
netwerkinterfaces toe om in luistermodus gezet te worden, zodat
elk pakket op een uitzendnetwerk (bijvoorbeeld een Ethernet)
onderschept wordt. Deze pakketten kunnen naar schijf onderschept
en/of onderzocht worden met het programma &man.tcpdump.1;.Het apparaat &man.bpf.4; wordt ook gebruikt door
&man.dhclient.8; om het IP-adres van de standaardrouter
(gateway) te verkrijgen, enzovoorts. Als DHCP gebruikt wordt,
dient dit ingeschakeld te blijven.# USB-ondersteuning
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (verplicht)
#device udbp # USB Double Bulk Pipe apparaten
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Toetsenbord
device ulpt # Printer
device umass # Schijven/Massaopslag - heeft scbus en da nodig
device ums # Muis
device ural # Ralink Technology RT2500USB draadloze NICs
device urio # Diamond Rio 500 MP3 speler
device uscanner # Scanners
# USB Ethernet, heeft mii nodig
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB EthernetOndersteuning voor verscheidene USB-apparaten.# FireWire ondersteuning
device firewire # FireWire bus code
device sbp # SCSI over FireWire (scbus en da nodig)
device fwe # Ethernet over FireWire (niet-standaard!)Ondersteuning voor verscheidene Firewire-apparaten.Meer informatie en aanvullende apparaten die door &os;
ondersteund worden staan in
/usr/src/sys/i386/conf/NOTES.Instellingen bij veel geheugen
(PAE)Physical Address Extensions
(PAE)veel geheugenSommige machines (PAE) hebben meer
geheugen nodig dan limiet van 4 gigabyte op User+Kernel Virtual
Adress (KVA) ruimte. Vanwege deze limiet
voegde Intel ondersteuning toe voor toegang tot 36-bits fysieke
adresruimte in de &pentium; Pro en nieuwere lijn van
CPU's.De Physical Address Extension (PAE)
mogelijkheden van de &intel; &pentium; Pro en nieuwere CPU's
staan geheugenhoeveelheden toe tot 64 gigabyte. &os; biedt
ondersteuning voor deze mogelijkheid via de kernelinsteloptie
, die beschikbaar is in alle recent
uitgegeven versies van &os;. Vanwege de beperkingen van de
geheugenarchitectuur van Intel wordt er geen onderscheid
gemaakt tussen geheugen boven of beneden 4 gigabytes. Geheugen
dat boven de 4 gigabytes is toegewezen wordt gewoon bij het
beschikbare gevoegd.Om ondersteuning voor PAE in de kernel
aan te zetten, dient de volgende regel aan het
kernelinstellingenbestand te worden toegevoegd:options PAEDe ondersteuning voor PAE in &os; is
alleen beschikbaar voor &intel; IA-32-processoren. Ook dient
opgemerkt te worden dat ondersteuning voor
PAE nog niet wijdverbreid getest is en
als betakwaliteit beschouwd dient te worden vergeleken met
andere stabiele kenmerken van &os;.Ondersteuning voor PAE in &os; heeft
enige beperkingen:Een proces kan niet meer dan 4 gigabyte VM-ruimte
krijgen;Apparaatstuurprogramma's die geen gebruik maken van de
&man.bus.dma.9;-interface zullen gegevenscorruptie
veroorzaken in een kernel die PAE aan
heeft staan en hun gebruik wordt afgeraden. Om deze reden
wordt er de kernelinstellingenbestand voor de
PAE-kernel geleverd met &os;, dat alle
stuurprogramma's uitsluit waarvan niet bekend is dat ze
werken in een kernel die PAE aan heeft
staan;Sommige systeeminstellingen bepalen het
geheugenbronverbruik aan de hand van de hoeveelheid
beschikbaar fysiek geheugen. Zulke instellingen kunnen
onnodig veel toewijzen vanwege de grote hoeveelheid
geheugen in een PAE systeem. Een
voorbeeld hiervan is de sysctl
, die het maximum aantal
vnodes dat in de kernel aanwezig mag zijn beheert. Het is
aan te raden om deze en andere van dit soort instellingen
aan te passen aan een redelijke waarde;Het kan nodig zijn om de virtuele kerneladresruimte
(KVA) te vergroten of om het aantal
kernelbronnen dat veel gebruikt wordt (zie boven) te
verminderen om zo uitputting van KVA te
voorkomen. De kerneloptie kan
gebruikt worden om de KVA-ruimte te
vergroten.Om prestatie- en stabiliteitsredenen is het aan te raden om
&man.tuning.7; te raadplegen. &man.pae.4; bevat bijgewerkte
informatie over de ondersteuning voor PAE in
&os;.Problemen oplossenEr zijn vier probleemcategoriën die op kunnen treden
tijdens het bouwen van een aangepaste kernel:config faaltAls het commando &man.config.8; faalt bij het verwerken
van de kernelbeschrijving, is er waarschijnlijk ergens een
eenvoudige fout gemaakt. Gelukkig geeft &man.config.8; het
nummer van de regel weer waarmee het problemen had, dus kan
snel de regel gevonden worden waarin de fout zit.
In het onderstaande voorbeeld dient gecontroleerd te worden
of het sleutelwoord juist is ingevoerd door het met de
kernel GENERIC of een andere
referentie te vergelijken:config: line 17: syntax errormake faaltAls make faalt, duidt dit meestal op
een fout in de kernelbeschrijving die niet erg genoeg is om
door &man.config.8; opgemerkt te worden. De instellingen
dienen nogmaals nagekeken te worden. Als het probleem nog
steeds niet is op te lossen, stuur dan een mail naar de
&a.questions; met de kernelinstellingen. Dat leidt meestal
snel tot een diagnose.De kernel start niet opAls de nieuwe kernel niet opstart of de apparaten
niet herkent is kalmte geboden. &os; heeft een uitstekend
mechanisme om van niet-compatibele kernels te herstellen.
De gewenste kernel om mee op te starten kan vanuit de &os;
boot loader gekozen worden. Als het systeemopstartmenu
verschijnt, kan deze gekozen worden.
Selecteer de optie Escape to a loader prompt,
nummer zes. Typ op de prompt
boot kernel.old
of de naam van een andere kernel die correct
opstart. Als de kernelinstellingen gewijzigd worden, is
het altijd aan te raden om een kernel bij de hand te houden
waarvan bekend is dat die juist werkt.Nadat er met een goede kernel is opgestart, kan het
instellingenbestand gecontroleerd worden en geprobeerd
worden om de kernel nogmaals te bouwen. Een behulpzame
bron is het bestand /var/log/messages,
dat onder andere alle kernelberichten van alle keren dat er
succesvol is opgestart vastlegt. Ook geeft &man.dmesg.8;
alle kernelberichten weer van de huidige
opstartprocedure.Als er problemen zijn met het bouwen van een kernel,
dient een GENERIC, of een andere
kernel waarvan bekend is dat die werkt, bewaard te worden
onder een andere naam die niet verwijderd wordt als de
volgende kernel gebouwd wordt. Er kan niet op
kernel.old vertrouwd worden omdat
bij de installatie van een nieuwe kernel
kernel.old overschreven wordt met de
laatst geïnstalleerde kernel, die niet hoeft te
werken. Ook dient de werkende kernel zo snel mogelijk
naar de juiste plaats /boot/kernel verplaatst te
worden, omdat anders commando's als &man.ps.1; eventueel
onjuist werken. Hiervoor dient simpelweg de map met de
goede kernel hernoemd te worden:&prompt.root; mv /boot/kernel /boot/kernel.slecht
&prompt.root; mv /boot/kernel.goed /boot/kernelDe kernel werkt, maar &man.ps.1; werkt niet meerAls er een andere versie van de kernel is
geïnstalleerd dan degene waarmee de
systeemgereedschappen gebouwd zijn, bijvoorbeeld een kernel
voor -CURRENT op een -RELEASE-systeem, werken vele
systeemstatuscommando's als &man.ps.1; en &man.vmstat.8;
niet langer. De wereld moet opnieuw gecompileerd en
geïnstalleerd worden en met dezelfde broncodestructuur
als de kernel zijn gebouwd. Dit is een van de redenen
waarom het normaliter geen goed idee is om een afwijkende
versie van de kernel ten opzichte van de rest van de wereld
te gebruiken.