<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sections SYSTEM "/dtd/book.dtd">
<!-- $Id: hb-install-x86+amd64-kernel.xml,v 1.2 2007/09/21 09:43:04 neysx Exp $ -->
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<!-- Sync: 1.17 -->
<sections>

<abstract>
De Linux kernel is de kern van elke distributie, in dit hoofdstuk wordt
uitgelegd hoe je je kernel configureerd.
</abstract>

<version>5.4</version>
<date>2007-08-12</date>

<section>
<title>Tijdzone</title>
<body>

<p>
Allereerst moet de tijdzone ingesteld, zodat het systeem weet waar het zich
bevindt. Zoek naar uw tijdzone in <path>/usr/share/zoneinfo</path> en kopieer
deze dan naar <path>/etc/localtime</path>. Gebruik niet de
<path>/usr/share/zoneinfo/Etc/GMT*</path> tijdzones, aangezien de gebruikte
namen niet overeen komen met de zones. <path>GMT-8</path> is bijvoorbeeld
GMT+8.
</p>

<pre caption="De tijdzone instellen">
# <i>ls /usr/share/zoneinfo</i>
<comment>(Stel dat u Amsterdam wilt gebruiken)</comment>
# <i>cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime</i>
</pre>

</body>
</section>
<section>
<title>De sources installeren</title>
<subsection>
<title>Een kernel kiezen</title>
<body>

<p>
De basis waarop alle distributies gebouwd zijn, is de Linux kernel. Het is de
laag tussen gebruikers programma's en uw hardware. Gentoo biedt zijn
gebruikers verschillende kernelsources. Een volledige lijst met beschrijvingen
is beschikbaar in de <uri link="/doc/nl/gentoo-kernel.xml">Gentoo Kernel
Guide</uri>.
</p>

<p test="func:keyval('arch')='x86'">
Voor x86-gebaseerde systemen hebben we, onder andere, <c>gentoo-sources</c>
(een kernel gepatched met snelheidsverhogende extra's).
</p>

<p test="func:keyval('arch')='AMD64'">
Voor AMD64-gebaseerde systemen hebben we <c>gentoo-sources</c> (kernel v2.6
bron met specifieke amd64 patches die voor stabiliteit, snelheid en hardware 
ondersteuning zorgen. 
</p>


<p>
Kies een kernel naar keuze en installeer deze met <c>emerge</c>.
</p>

<pre caption="Een kernel source installeren">
# <i>emerge gentoo-sources</i>
</pre>

<p>
Wanneer u een kijkje neemt in <path>/usr/src</path> zou u een symlink genaamd
<path>linux</path> moeten zien. Deze verwijst naar uw kernel source. We zullen
aannemen dat de geïnstalleerde kernelsource <c>gentoo-sources-<keyval id="kernel-version"/></c> is. Uw versie kan echter een andere zijn!
</p>

<pre caption="De kernel source symlink bekijken">
# <i>ls -l /usr/src/linux</i>
+lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -&gt; linux-<keyval id="kernel-version"/>
</pre>

<p>
Nu is het tijd om uw kernel te configureren en te compileren. U kunt
<c>genkernel</c> hiervoor gebruiken. Deze zal een algemene kernel aanmaken
zoals ook LiveCD gebruikt. We zullen eerst de handmatige manier
uitleggen omdat dit de beste manier is om uw systeem te optimaliseren.
</p>

<p>
Als u de kernel handmatig wilt configureren, gaat u verder met <uri link="#manual">Standaard: handmatige configuratie</uri>. Als u <c>genkernel</c>
wilt gebruiken, dan kunt u verder lezen in <uri link="#genkernel">Alternatief:
genkernel gebruiken</uri>.
</p>

</body>
</subsection>
</section>
<section id="manual">
<title>Standaard: handmatige configuratie</title>
<subsection>
<title>Introductie</title>
<body>

<p>
Handmatig een kernel configureren wordt vaak gezien als het moeilijkste dat
een Linux gebruiker ooit uit moet voeren. Niets is minder waar -- na een paar
kernels configureren herinnert u zich niet eens meer dat het ooit moeilijk was
;)
</p>

<p>
Hoewel, een ding <e>is</e> is waar: u moet uw systeem kennen voordat u de
kernel handmatig gaat configureren. De meeste informatie kunt u vergaren door
pciutils te emergen (<c>emerge pciutils</c>), welke <c>lspci</c> bevat. U kunt
nu <c>lspci</c> binnen de gechroote omgeving gebruiken. U kunt zonder problemen
alle <e>pcilib</e> waarschuwingen negeren (zoals pcilib: cannot open
/sys/bus/pci/devices) die <c>lspci</c> genereert. U kunt ook <c>lspci</c>
vanuit een <e>niet-gechroote</e> omgeving draaien. De resultaten zullen gelijk
zijn. U kunt verder <c>lsmod</c> draaien om te zien welke kernelmodules de LiveCD
gebruikt (het geeft een goede hint wat u aan kunt zetten).
</p>

<p>
Ga nu naar de kernel sourcemap en voer <c>make menuconfig</c> uit. Dit zal een
configuratiemenu openen.
</p>

<pre caption="menuconfig starten">
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
</pre>

<p>
U zult worden begroet door een serie configuratiesecties. We zullen eerst
enkele opties geven die u zeker aan moet zetten (anders zal Gentoo niet
functioneren, of niet goed zonder enkele extra trucs).
</p>

</body>
</subsection>
<subsection>
<title>Vereiste opties aan zetten</title>
<body>

<p>
Om te beginnen activeert u het gebruik van ontwikkelings- en experimentele
code/drivers. Je hebt dit nodig, anders zullen enkele belangrijke codes/drivers
niet te voorschijn komen:
</p>

<pre caption="Experimentele code/drivers activeren">
Code maturity level options ---&gt;
  [*] Prompt for development and/or incomplete code/drivers
General setup  ---&gt;
  [*] Support for hot-pluggable devices
</pre>

<p>
Zorg dat u iedere driver die essentieel is voor het opstarten van uw systeem
(zoals SCSI controller, ...) in de kernel, en dus niet als module, compileert.
Anders zal uw systeem niet volledig opstarten.
</p>

</body>
<body test="func:keyval('arch')='AMD64'">

<p>
We zullen dan de exacte processor-type selecteren. DE x86_64 onderhouder raad
 de gebruikers sterk aan MCE opties in te schakelen zodat ze de mogelijkheid
 hebben om meldingen te krijgen van hardware problemen. Op x86_64 zijn deze
 berichten niet onder gebracht onder <c>dmesg</c> zoals in andere architecturen
 maar onder <path>/dev/mcelog</path>. Daarvoor heb het <c>app-admin/mcelog</c>
 nodig.
</p>

<pre caption="Selecting processor type and features">
Processor type and features  ---&gt;
   [ ] Intel MCE Features
   [ ] AMD MCE Features
  Processor family (AMD-Opteron/Athlon64)  ---&gt;
    ( ) AMD-Opteron/Athlon64
    ( ) Intel EM64T
    ( ) Generic-x86-64
</pre>

</body>
<body test="func:keyval('arch')='x86'">

<p>
Selecteer nu de juiste processorfamilie:
</p>

<pre caption="De correcte processor familie kiezen">
Processor type and features ---&gt;
  <comment>(Wijzig aan de hand van uw systeem)</comment>
  (<i>Athlon/Duron/K7</i>) Processor family
</pre>

</body>
<body>

<p>
Ga nu naar <c>File Systems</c> en kies ondersteuning voor het bestandssysteem
dat u gebruikt. Compileer deze <e>niet</e> als modules, anders zal het Gentoo
systeem zal de rootpartitie niet kunnen mounten. Kies ook <c>Virtual memory</c>
en <c>/proc file system</c>.
</p>

</body>
<body test="func:keyval('arch')='x86'">

<pre caption="Benodigde bestandssystemen kiezen">
File systems ---&gt;
  Pseudo Filesystems ---&gt;
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

<comment>(Kies een of meer van de volgende, voor jouw systeem benodigde, opties)</comment>
  &lt;*&gt; Reiserfs support
  &lt;*&gt; Ext3 journalling file system support
  &lt;*&gt; JFS filesystem support
  &lt;*&gt; Second extended fs support
  &lt;*&gt; XFS filesystem support
</pre>

</body>
<body test="func:keyval('arch')='AMD64'">

<pre caption="Selecteren van de nodige bestandssystemen">
File systems ---&gt;
  Pseudo Filesystems ---&gt;
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

<comment>(Selecteer een van de vollengde opties, die zijn nodig door je
systeem)</comment>
  &lt;*&gt; Reiserfs support
  &lt;*&gt; Ext3 journalling file system support
  &lt;*&gt; JFS filesystem support
  &lt;*&gt; Second extended fs support
  &lt;*&gt; XFS filesystem support
</pre>

</body>
<body>


<p>
Vergeet niet voor uw schijven DMA aan te zetten:
</p>

<pre caption="DMA aanzetten">
Device Drivers ---&gt;
  ATA/ATAPI/MFM/RLL support ---&gt;
    [*] Generic PCI bus-master DMA support
</pre>

<p>
Indien u PPPoE gebruikt om verbinding te maken met het internet of als u een
inbelmodem gebruikt, dan dient u de volgende opties aan te zetten in de kernel:
</p>

<pre caption="Benodigde PPPoE drivers selecteren" test="func:keyval('arch')='AMD64'">
Device Drivers ---&gt;
  Networking Support ---&gt;
    &lt;*&gt; PPP (point-to-point protocol) support
    &lt;*&gt;   PPP support for async serial ports
    &lt;*&gt;   PPP support for sync tty ports
</pre>

<pre caption="Selecting PPPoE necessary drivers" test="func:keyval('arch')='x86'">
Device Drivers ---&gt;
  Networking support ---&gt;
    &lt;*&gt; PPP (point-to-point protocol) support
    &lt;*&gt;   PPP support for async serial ports
    &lt;*&gt;   PPP support for sync tty ports
</pre>

<p>
De twee compressie-opties zullen niets kapot maken, maar ze zijn niet nodig,
net zoals de optie <c>PPP over Ethernet</c> die alleen wordt gebruikt door
<c>ppp</c> als die wordt geconfigureerd om PPPoE in kernelmodus te
draaien.
</p>

<p>
Als hem nodig heeft, moet u niet vergeten de ondersteuning voor uw netwerkkaart toe
te voegen aan uw kernel.
</p>

<p test="func:keyval('arch')='x86'">
Als u een Intel CPU met HyperThreading (tm) ondersteuning hebt, of een
multi-CPU systeem, dient u ook "Symmetric multi-processing support" toe te
voegen:
</p>

<p test="func:keyval('arch')='AMD64'">
Als je een multi-CPU Opteren of een multi-core (zoals AMD64 X2) systeem hebt,
zou je moeten "Symmetric multi-processing support" activeren:
</p>

<pre caption="SMP ondersteuning inschakelen">
Processor type and features  ---&gt;
  [*] Symmetric multi-processing support
</pre>

<note>
In multi-core systemen telt iedere kern (core) als één processor.
</note>

<p>
Als u USB-invoerapparaten gebruikt (zoals toetsenbord of muis),
vergeet dan niet die ook aan te zetten:
</p>

<pre caption="USB ondersteuning voor Input Devices">
USB Support ---&gt;
  &lt;*&gt;   USB Human Interface Device (full HID) support
</pre>

</body>
<body test="func:keyval('arch')='x86'">

<p>
Als u PCMCIA wilt gebruiken met uw laptop vergeet dan niet naast PCMCIA 
ondersteuning ook ondersteuning voor de in uw systeem aanwezige PCMCIA card 
bridge te kiezen.
</p>

<pre caption="PCMCIA ondersteuning aanzetten">
Bus options (PCI, PCMCIA, EISA, MCA, ISA)  ---&gt;
  PCCARD (PCMCIA/CardBus) support  ---&gt;
    &lt;*&gt; PCCard (PCMCIA/CardBus) support
<comment>(selecteer 16 bit als u ondersteuning voor oudere PCMCIA kaarten wil. De meeste mensen willen dit.)</comment>
    &lt;*&gt;   16-bit PCMCIA support
    [*]   32-bit CardBus support
<comment>(selecteer de relevante bridges)</comment>
    --- PC-card bridges
    &lt;*&gt; CardBus yenta-compatible bridge support (NEW)
    &lt;*&gt; Cirrus PD6729 compatible bridge support (NEW)
    &lt;*&gt; i82092 compatible bridge support (NEW)
    &lt;*&gt; i82365 compatible bridge support (NEW)
    &lt;*&gt; Databook TCIC host bridge support (NEW)
</pre>

<p>
Als u klaar bent met het configureren van de kernel, gaat u verder met <uri link="#compiling">Compileren en installeren</uri>.
</p>

</body>
</subsection>
<subsection id="compiling">
<title>Compileren en installeren</title>
<body>

<p>
Nu de kernel is geconfigureerd is het tijd om te compileren en installeren.
Sluit de configuratie af en start het compilatie proces:
</p>

<pre caption="De kernel compileren" test="func:keyval('arch')='x86'">
# <i>make &amp;&amp; make modules_install</i>
</pre>

<pre caption="De kernel compileren" test="func:keyval('arch')='AMD64'">
# <i>make &amp;&amp; make modules_install</i>
</pre>

<p>
Als uw kernel klaar is met compileren, kopieert u de kernel-image naar
<path>/boot</path>. Gebruik een naam die u toepasselijk vindt voor uw
kernel keuze en onthoudt die, want u zult deze bij het configureren van uw
bootlader nodig hebben. Vergeet niet <c><keyval id="kernel-name"/></c>
te vervangen door de naam en versie van uw kernel.
</p>

<pre caption="Het installeren van de kernel">
# <i>cp arch/<keyval id="arch-sub"/>/boot/bzImage /boot/<keyval id="kernel-name"/></i>
</pre>

<p>
Nu kunt u verder gaan met <uri link="#kernel_modiules">Kernel Modules</uri>.
</p>

</body>
</subsection>
</section>
<section id="genkernel">
<title>Alternatief: genkernel gebruiken</title>
<body>

<p>
Als u dit hoofdstuk leest, heeft u ervoor gekozen om het <c>genkernel</c> script
te geruiken voor de configuratie van uw kernel.
</p>

<p>
Nu de kernel source is geïnstalleerd, is het tijd om uw kernel te
compileren met behulp van ons <c>genkernel</c> script. Deze bouwt automatisch
een kernel voor u. <c>genkernel</c> werkt door een kernel bijna identiek te
configureren aan de manier waarop onze Installatie CD kernel is geconfigureerd.
Dit betekent dat wanneer u <c>genkernel</c> gebruikt om uw kernel te bouwen,
uw systeem over het algemeen alle apparatuur tijdens het opstarten zal
detecteren, net zoals onze Installatie CD dat doet. Omdat genkernel geen
handmatige configuratie vereist, is het de ideale oplossing voor die gebruikers
die zich niet prettig voelen bij het compileren van hun eigen kernels.
</p>

<p>
Laten we nu eens kijken hoe we genkernel gebruiken. Emerge genkernel eerst:
</p>

<pre caption="Genkernel emergen">
# <i>emerge genkernel</i>
</pre>

</body>
<body test="func:keyval('arch')='x86'">

<p>
Kopieer vervolgens de kernel configuratie van de installatie CD naar de
locatie waar genkernel zoekt naar de standaard kernel configuratie.
</p>

<pre caption="De Installatie CD kernel config kopieren">
# <i>zcat /proc/config.gz &gt; /usr/share/genkernel/x86/kernel-config-2.6</i>
</pre>

</body>
<body>

<p>
Compileer nu de kernel sources door <c>genkernel all</c> te draaien. Pas echter
op, omdat <c>genkernel</c> een kernel compileert die bijna alle apparatuur
ondersteunt, kan deze compilatie aardig wat tijd in beslag nemen!
</p>

<p>
Let op, als uw bootpartitie geen ext2 of ext3 als bestandssysteem gebruikt,
moet u mogelijk handmatig deze ondersteuning <e>in</e> de kernel (dus
<e>niet</e> als een module) moet toevoegen. Gebruik hiervoor <c>genkernel
--menuconfig all</c> en voeg de ondersteuning toe. Gebruikers van EVMS2 of
LVM2 moeten ook <c>--evms2</c> of <c>--lvm2</c> als argument toevoegen.
</p>

<pre caption="Genkernel draaien">
# <i>genkernel all</i>
</pre>

<p>
Als <c>genkernel</c> eenmaal klaar is, zal een kernel, een volledige set met
modules en een <e>start-rootschijf</e> (initrd) worden gemaakt. We gebruiken
de kernel en initrd wanneer we de bootlader zullen configureren, verderop
in dit document. Noteer de namen van de kernel en initrd omdat u deze nodig
zult hebben bij de bootlader configuratie. De initrd zal direct worden gestart
na het opstarten om apparatuur autodetectie uit te voeren (net zoals op de
Installatie CD) voordat uw "echte" systeem opstart.
</p>

<pre caption="De gecreerde kernel image naam en initrd controleren">
# <i>ls /boot/kernel* /boot/initramfs*</i>
</pre>

</body>
</section>
<section id="kernel_modules">
<title>Kernel Modules</title>
<subsection>
<title>De modules configureren</title>
<body>

<p>
U moet nu een lijst maken van alle modules die u automatisch wilt laden, doe
dit in <path>/etc/modules.autoload.d/kernel-2.6</path>. Je kunt indien u dit
wilt ook extra opties aan de
modules meegeven.
</p>

<p>
Om alle beschikbare modules te zien, draait u het volgende <c>find</c> commando.
Vergeet niet om "&lt;kernel-version"&gt;> te vervangen met de versie van de door
u zojuist gecompileerde kernel.
</p>

<pre caption="Alle beschikbare modules vinden">
# <i>find /lib/modules/&lt;kernel-version&gt;/ -type f -iname '*.o' -or -iname '*.ko'</i>
</pre>

<p>
Om bijvoorbeeld automatisch de <c>3x59x.o</c> module te laden, wijzigt u het
<path>kernel-2.6</path>-bestand en zet er de modulenaam in.
</p>

<pre caption="/etc/modules.autoload.d/kernel-2.6 bewerken">
<comment>(Voorbeeld voor 2.6 kernels)</comment>
# <i>nano -w /etc/modules.autoload.d/kernel-2.6</i>
</pre>

<pre caption="/etc/modules.autoload.d/kernel-2.6">
3c59x
</pre>

<p>
Ga verder met <uri link="?part=1&amp;chap=8">Configuratie van het Systeem</uri>.
</p>

</body>
</subsection>
</section>
</sections>
