1.30 2005-01-18
Tijdzone

Je dient eerst je tijdzone in te stellen zodat je systeem weet waar het zich bevindt. Zoek naar je tijdzone in /usr/share/zoneinfo, maak er dan een symlink naar toe vanaf /etc/localtime met behulp van ln:

# ls /usr/share/zoneinfo
(Stel dat je Amsterdam wil)
# ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime
De sources installeren Een kernel kiezen

De basis waarop alle distributies gebouwd zijn, is de Linux kernel. Het is de laag tussen gebruikers programma's en je systeemapparatuur. Gentoo biedt zijn gebruikers verschillende kernelsources. Een volledige lijst met beschrijvingen is beschikbaar in de Gentoo Kernel Guide (EN).

Voor x86-gebaseerde systemen hebben we, onder andere, vanilla-sources (de standaard 2.4 kernelsource die wordt onwikkeld door de linux-kernel onwikkelaars), gentoo-sources (de 2.4 kernelsource gepatched met snelheidsverhogende extras), gentoo-dev-sources (de 2.6 kernelsource met snelheidsverhogende extras), development-sources (de vanilla 2.6 kernelsource), ...

Kies je kernelsource en installeer het door middel van emerge.

# emerge gentoo-sources

Als je een kijkje neemt in /usr/src zou je een symlink genaamd linux moeten zien. Deze verwijst naar jouw kernelsource. We zullen aannemen dat de geïnstalleerde kernelsource gentoo-sources-2.4.26-r9 is:

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux -> linux-2.4.26-gentoo-r9

Als jouw symlink niet naar de juiste kernelsource verwijst (let er op dat linux-2.4.26-gentoo-r9 slechts een voorbeeld is), verander deze dan voordat je verder gaat:

# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.4.26-gentoo-r9 linux

Nu is het tijd om je kernel te configureren en te compileren. Je kunt genkernel hiervoor gebruiken. Deze zal een algemene kernel maken zoals ook op de LiveCD wordt gebruikt. We zullen eerst de "handmatige" manier uitleggen omdat dit de beste manier is om je systeem te optimaliseren.

Als je je kernel handmatig wilt configureren, ga verder met Standaard: handmatige configuratie. Als je genkernel wilt gebruiken, dan kun je het beste Alternatief: genkernel gebruiken

Standaard: handmatige configuratie Introductie

Handmatig een kernel configureren wordt vaak gezien als het moeilijkste wat een Linux gebruiker ooit uit moet voeren. Niets is minder waar -- na een paar kernels configureren herinner je niet eens meer dat het moeilijk was ;)

Hoewel, een ding is is waar: je moet je systeem kennen voordat je je kernel handmatig gaat configureren. De meeste informatie kun je vergaren via de inhoud van /proc/pci (of, indien beschikbaar, door het gebruik van lspci). Je kunt ook lsmod draaien om te zien welke kernelmodules de LiveCD gebruikt (het geeft een goede hint wat je aan moet zetten).

Ga nu naar je kernelsourcemap en voer make menuconfig uit. Dit zal een configuratiemenu openen wat op ncurses is gebaseerd.

# cd /usr/src/linux
# make menuconfig

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

Vereiste opties aan zetten

Om te beginnen activeer je het gebruik van ontwikkel- en experimentele code/drivers. Je hebt dit nodig, anders zullen zeer belangrijke code/drivers niet te voorschijn komen:

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers

Zorg dat je je kernel compileert voor de juiste processorfamilie:

Processor type and features --->
  (Wijzig aan de hand van je systeem)
  (Athlon/Duron/K7) Processor family

Ga nu naar File Systems en kies ondersteuning voor het bestandssysteem dat je gebruikt. Compileer deze niet als modules, anders zal je Gentoo systeem zal je rootpartitie niet kunnen mounten. Kies ook Virtual memory, /proc file system, /dev file system + Automatically mount at boot:

(Met een 2.4.x kernel)
File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*]   Automatically mount at boot
  [ ] /dev/pts file system for Unix98 PTYs

(Met een 2.6.x kernel)
File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] /dev file system support (OBSOLETE)
    [*]   Automatically mount at boot
    [*] Virtual memory file system support (former shm fs)

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

Als je BIOS geen grote harde schijven ondersteunt en je hebt je harde schijf met jumpertjes ingesteld om een beperkte grootte door te geven, dan dien je een van de volgende opties mee te geven om toegang tot je hele harde schijf te krijgen.

(alleen 2.4.x kernels)
ATA/IDE/MFM/RLL support --->
  IDE, ATA and ATAPI Block devices --->
    <*>   Include IDE/ATA-2 DISK support
    [ ]     Use multi-mode by default
    [*]     Auto-Geometry Resizing support

Indien je PPPoE gebruikt om verbinding te maken met het internet of als je een inbelmodem gebruikt, dien je de volgende opties aan te zetten in de kernel:

(Met een 2.4.x kernel)
Network device support --->
  <*> PPP (point-to-point protocol) support
  <*>   PPP support for async serial ports
  <*>   PPP support for sync tty ports

(Met een 2.6.x kernel)
Device Drivers --->
  Networking support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

De twee compressie-opties zullen niets kapot maken, maar ze zijn niet nodig, net zoals de optie PPP over Ethernet die alleen wordt gebruikt door rp-pppoe als die wordt geconfigureerd om PPPoE in kernelmodus te doen.

Als je het nodig hebt, vergeet dan niet ondersteuning voor je netwerkkaart toe te voegen aan je kernel.

Als je een Intel CPU met HyperThreading (tm) ondersteuning hebt, of een multi-CPU systeem, dien je ook "Symmetric multi-processing support" toe te voegen:

Processor type and features  --->
  [*] Symmetric multi-processing support

Als je USB-invoerapparaten gebruikt (zoals toetsenbord of muis), vergeet dan niet die ook aan te zetten:

USB Support --->
  <*>   USB Human Interface Device (full HID) support

Laptopgebruikers die PCMCIA-ondersteuning willen moeten niet de PCMCIA-drivers niet gebruiken als zij een 2.4-kernel kiezen. Recentere drivers zijn beschikbaar via het pcmcia-cs pakket welke we later zullen installeren. 2.6-kernelgebruikers dienen echter wel de PCMCIA-drivers uit de kernel te gebruiken.

Als je klaar bent met het configureren van de kernel, ga je verder met Compileren en installeren.

Compileren en installeren

Nu de kernel is geconfigureerd is het tijd om te compileren en installeren. Sluit de configuratie af en start make dep && make bzImage modules modules_install:

(Voor 2.4 kernels)
# make dep && make bzImage modules modules_install

(Voor 2.6 kernels)
# make && make modules_install

Als je kernel klaar is met compileren, kopieer je de kernel-image naar /boot. Vanaf hier nemen we aan dat je versie 2.4.26 van de gentoo-sources installeert. Gebruik een naam die jij toepasselijk vindt voor jouw keuze en onthoud hem want je zult hem bij het configureren van je bootloader nodig hebben.

# cp arch/i386/boot/bzImage /boot/kernel-2.4.26-gentoo-r9
# cp System.map /boot/System.map-2.4.26-gentoo-r9

Het is ook slim om je kernelconfiguratiebestand naar /boot te kopiëren, je weet maar nooit :)

# cp .config /boot/config-2.4.26-gentoo-r9

Ga nu verder met Losse kernel modules installeren

Alternatief: genkernel gebruiken

Als je dit hoofdstuk leest, heb je ervoor gekozen om ons genkernel script te geruiken voor de configuratie van jouw kernel.

Nu je kernelsource is geïnstalleerd, is het tijd om je kernel te compileren met behulp van ons genkernel script. Deze bouwt automatisch een kernel voor jou. genkernel werkt door een kernel bijna identiek te configureren aan de manier waarop onze LiveCD kernel is geconfigureerd. Dit betekent dat wanneer je genkernel gebruikt om je kernel te bouwen, je systeem over het algemeen alle apparatuur tijdens het opstarten zal detecteren, net zoals onze LiveCD 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.

Laten we nu eens kijken hoe we genkernel gebruiken. Emerge genkernel eerst:

# emerge genkernel

Compileer nu je kernelsource door genkernel all te draaien. Pas echter op, omdat genkernel een kernel compileert die bijna alle apparatuur ondersteunt, kan deze compilatie aardig wat tijd in beslag nemen!

Let op, als je bootpartitie geen ext2 of ext3 als bestandssysteem gebruikt, moet je mogelijk handmatig deze ondersteuning in de kernel (dus niet als een module) moet toevoegen. Gebruik hiervoor genkernel --menuconfig all.

# genkernel all

Als genkernel eenmaal klaar is, zal een kernel, een volledige set met modules en een start-rootschijf (initrd) worden gemaakt. We gebruiken de kernel en initrd wanneer we de bootloader zullen configureren, verderop in dit document. Noteer de namen van de kernel en initrd omdat je deze nodig zult hebben bij de bootloaderconfiguratie. De initrd zal direct worden gestart na het opstarten om apparatuurdetectie uit te voeren (net zoals op de LiveCD) voordat je "echte" systeem opstart.

# ls /boot/kernel* /boot/initrd*

Laten we nu nog een stap uitvoeren zodat ons systeem nog meer op de LiveCD lijkt -- laten we coldplug emergen. De initrd detecteert de apparatuur die die nodig is om op te starten automatisch, coldplug detecteert de rest. Om te coldplug te emergen en aan zetten, typ je het volgende:

# emerge coldplug
# rc-update add coldplug boot

Als je wil dat je systeem ook op hotplug events reageert, dien je ook hotplug te installeren en configureren:

# emerge hotplug
# rc-update add hotplug default
Losse kernel modules installeren Extra modules installeren

Indien van toepassing, zou je enkele ebuilds kunnen emergen voor eventuele extra appatuur die zich je systeem bevindt. Hier is een lijst van kernel-gerelateerde ebuilds die je kunt emergen:

nvidia-kernelNVIDIA drivers voor xorg-x11emerge nvidia-kernelnforce-audioOn-board audio voor NVIDIA NForce(2) moederbordenemerge nforce-audioe100Intel e100 Fast Ethernet Adaptersemerge e100e1000Intel e1000 Gigabit Ethernet Adaptersemerge e1000emu10k1 Creative Sound Blaster Live!/Audigy ondersteuning (alleen voor 2.4 kernels) emerge emu10k1ati-driversATI Radeon 8500+/FireGL drivers voor xorg-x11emerge ati-drivers
Ebuild Doel Commando

Pas echter op, sommige van deze ebuilds kunnen veel afhankelijkheden hebben. Om te controleren welke pakketten zullen worden geïnstalleerd, gebruik je emerge --pretend. Bijvoorbeeld voor het emu10k1 pakket:

# emerge --pretend emu10k1

Als je al deze pakketten die geïnstalleerd zouden worden niet wilt, kun je met emerge --pretend --verbose kijken wel USE-vlaggen worden gebruikt bij het uitzoeken van de afhankelijkheden:

# emerge --pretend --verbose emu10k1
...
[ebuild  N    ] media-sound/aumix-2.8  +gpm +nls +gtk +gnome +alsa -gtk2

In het vorige voorbeeld kun je zien dat een van emu10k1's afhankelijkheden (aumix) gebruikt maakt van de gtk en gnome USE-vlaggen. Dit zorgt ervoor dat gtk-ondersteuning (wat steunt op xorg-x11) er bij in gecompileerd wordt.

Als je niet wilt dat dit alles er in zit, deselecteer alle USE-vlaggen:

# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1

Als je tevreden bent met de resultaten, haal je de --pretend weg om emu10k1 te installeren.

De modules configureren

Je moet een lijstje maken van alle modules die je automatisch wilt laden, doe dit in /etc/modules.autoload.d/kernel-2.4 (of kernel-2.6). Je kunt indien je dit wilt ook extra opties aan de modules meegeven.

Om alle beschikbare modules te zien, draai je het volgende find commando. Vergeet niet om "<kernel version>" te vervangen met de versie van de door jou zojuist gecompileerde kernel.

# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'

Om bijvoorbeeld automatisch de 3x59x.o module te laden, wijzig je het kernel-2.4- of kernel-2.6-bestand en zet er de modulenaam in.

(Voorbeeld voor 2.4 kernels)
# nano -w /etc/modules.autoload.d/kernel-2.4
3c59x

Draai nu modules-update om je veranderingen door te voeren in het /etc/modules.conf bestand:

# modules-update

Ga verder met Configuratie van het Systeem.