FreeBSD handboek
Terug | Hoofdstuk 8. De FreeBSD-kernel instellen | Volgende

# 8.5. Bouwen en installeren van een aangepaste kernel

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`, `alpha`, `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 FreeBSD eventueel overgezet kan worden. De indeling van de mapstructuur is logisch: alle ondersteunde apparaten, bestandssystemen en opties staan in een eigen submap.

Dit hoofdstuk veronderstelt dat de i386-architectuur in de voorbeelden gebruikt wordt. Als dit voor de lezer anders is, moeten de juiste aanpassingen aan de padnamen worden gemaakt voor de architectuur van zijn systeem.

> Opmerking: Als de map `/usr/src/sys` niet aanwezig is op een systeem, dan is de kernelbroncode niet geïnstalleerd. De eenvoudigste manier om dit te doen is door `sysinstall` te draaien als `root` en Configure, dan Distributions, dan src, dan base en sys te kiezen. Als sysinstall ongewenst is en er toegang is tot een “officiële” FreeBSD CD-ROM, is de broncode ook vanaf de opdrachtregel te installeren:

>     # mount /cdrom
>     # mkdir -p /usr/src/sys
>     # ln -s /usr/src/sys /sys
>     # cat /cdrom/src/sys.[a-d]* | tar -xzvf -
>     # cat /cdrom/src/sbase.[a-d]* | tar -xzvf -

Daarna kan vanuit de map ``arch`/conf` het instellingenbestand `GENERIC` naar de naam voor de aangepaste kernel gekopieerd worden. Bijvoorbeeld:

    # cd /usr/src/sys/i386/conf
    # cp GENERIC MIJNKERNEL

Traditioneel bestaat deze naam geheel uit hoofdletters en als er meerdere FreeBSD-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.

> Tip: 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:

>     # cd /usr/src/sys/i386/conf
>     # mkdir /root/kernels
>     # cp GENERIC /root/kernels/MIJNKERNEL
>     # ln -s /root/kernels/MIJNKERNEL

Nu 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. FreeBSD 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.

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.

> Opmerking: Als de broncodeboom gesynchroniseerd is met de nieuwste broncode van het FreeBSD-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 FreeBSD-broncode en is daarom meer bijgewerkt met nieuwe informatie dan dit handboek.

Nu moet de broncode voor de kernel gecompileerd worden.

Een kernel bouwen

1. Ga naar de map `/usr/src`:

       # cd /usr/src

2. Compileer de kernel:

       # make buildkernel KERNCONF=MIJNKERNEL

3. Installeer de nieuwe kernel:

       % make installkernel KERNCONF=MIJNKERNEL

> Opmerking: De volledige broncode van FreeBSD is nodig om de kernel te bouwen.

> Tip: Bij 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 ntfs

> Met deze variabele wordt een lijst van te bouwen modules ingesteld die gebouwd moeten worden in plaats van allen.

>     WITHOUT_MODULES = linux acpi sound ntfs

> Deze 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 make.conf(5).

De 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.

> Opmerking: Andere bestanden die te maken hebben met het opstartproces, zoals de boot 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.

Terug | Begin | Volgende
Kernel stuurprogramma's, subsystemen, en modules | Omhoog | Het instellingenbestand

Deze en andere documenten kunnen worden gedownload van ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Lees voor vragen over FreeBSD de documentatie alvorens contact te zoeken <questions@FreeBSD.org>.
Vragen over deze documentatie kunnen per e-mail naar <doc@FreeBSD.org>.