Gentoo Logo

Disclaimer : Dit document is niet juist en is niet meer onderhouden.

Gentoo Linux x86 Handboek

Inhoud:

  • Installeren van Gentoo
    In dit gedeelte leert u hoe uw Gentoo systeem moet installeren.
    1. Over de Gentoo Linux Installatie
      Dit hoofdstuk vertelt u hoe we de installatie documentatie hebben opgezet.
    2. Keuze van het Installatie Medium
      U kunt Gentoo op vele wijzen installeren. Dit hoofdstuk legt uit hoe u Gentoo kunt installeren met behulp van de zogenaamde Minimal Installation CD, hoewel een installatie met de Installer LiveCD ook mogelijk is.
    3. Configuratie van uw Netwerk
      Om de meest recente broncode te kunnen downloaden, dient u uw netwerk te configureren.
    4. Voorbereiden van de harde schijven
      Om Gentoo te kunnen installeren, moet u nodige partities aanmaken. Dit boekdeel beschrijft hoe u een schijf kunt partitioneren voor toekomstig gebruik.
    5. Installatie van de Gentoo Installatie bestanden
      Gentoo installeert vanuit een zogenaamd stage3 archief. In dit hoofdstuk wordt uitgelegd hoe u het archief uitpakt en Portage configureert.
    6. Installatie van het Gentoo Basis Systeem
      Na het installeren en configureren uit een stage3 heeft u een minimaal Gentoo Basis Systeem tot uw beschikking. Dit hoofdstuk beschrijft hoe u vanuit hier verder gaat.
    7. Configuratie van de Kernel
      De Linux kernel is de kern van elke distributie. Dit hoofdstuk beschrijft hoe u de kernel configureert.
    8. Configuratie van het Systeem
      U moet nu enkele belangrijke configuratie bestanden aanpassen. In dit hoofdstuk krijgt u een overzicht van deze bestanden en een uitleg over hoe verder te gaan.
    9. Installatie van enkele belangrijke Systeem onderdelen
      Zoals eerder vermeld, Gentoo is gebaseerd op keuzes. In dit hoofdstuk helpen we u bij de keuze en installatie van enkele belangrijke systeem onderdelen.
    10. Configuratie van de Bootlader
      Er bestaan verschillende Bootladers voor de x86 architectuur. Elk van deze heeft zijn eigen manier van configuratie. We zullen stap voor stap het configuratie-proces van een bootlader met u doornemen.
    11. Afmaken van uw Gentoo Installatie
      Je bent bijna klaar. We gaan nu alleen nog één of meerdere gebruikers op uw systeem aanmaken.
    12. Hoe nu verder?
      Nu heeft u een Gentoo systeem, maar wat volgt?
  • Werken met Gentoo
    Leer te werken met Gentoo: software installeren, aanpassen van variabelen, het gedrag van Portage aanpassen etc.
    1. Een introductie van Portage
      Dit hoofdstuk legt de "simpele" stappen uit die een gebruiker in ieder geval moet kennen om de software op zijn systeem te onderhouden.
    2. USE variabelen
      USE-variabelen zijn een heel belangrijk aspect van Gentoo. In dit hoofdstuk leert u werken met USE-variabelen en leert u deze USE-variabelen met uw systeem samen werken.
    3. Functionaliteiten van Portage
      Ontdek de mogelijkheden die Portage heeft, zoals ondersteuning voor verdeeld compileren, ccache en meer.
    4. Initialisatie scripts
      Gentoo gebruikt een speciaal initialisatie script formaat welke, naast andere functionaliteiten, afhankelijkheidsgedreven beslissingen en virtuele initialisatie scripts toelaat. Dit hoofdstuk legt al deze aspecten uit en vertelt ook hoe men deze scripts kan gebruiken.
    5. Omgevingsvariabelen
      Met Gentoo kunt u gemakkelijk de omgevingsvariabelen van uw systeem beheren. Dit hoofdstuk legt uit hoe u dat doet, en dit boekdeel beschrijft ook de meest gebruikte variabelen.
  • Werken met Portage
    "Werken met Portage" biedt een diepgaande uitleg van Portage, Gentoo's Software Beheer Programma.
    1. Bestanden en mappen
      Als u Portage diepgaand wilt kennen, dient u te weten waar het bestanden en gegevens opslaat.
    2. Configuratie via variabelen
      Portage is in zijn geheel te configureren door verschillende variabelen die u kunt instellen in het configuratie bestand of als een omgevingsvariabele.
    3. Software takken door elkaar gebruiken
      Gentoo verstrekt pakketten software verdeelt in verschillende takken, afhankelijk van stabiliteit en naar (hardware-)architectuur gescheiden. Dit hoofdstuk legt u uit hoe deze takken kunnen worden ingesteld en hoe u de scheiding per pakket kunt aanpassen.
    4. Extra Portage hulpmiddelen
      Portage komt met een aantal extra hulpmiddelen die mogelijk uw Gentoo ervaring nog beter zullen maken. Lees verder en leer hoe u dispatch-conf en andere hulpmiddelen kunt gebruiken.
    5. Afwijken van de officiële boom
      "Afwijken van de officiële boom" geeft u enkele tips en trucs over u de Portage Boom gebruikt, hoe u enkel de categorieën die uzelf wilt synchroniseert, hoe u pakketten toevoegt en meer.
  • Gentoo Netwerk Configuraties
    Een uitgebreide handleiding over netwerken in Gentoo.
    1. Meteen beginnen
      Een handleiding om snel uw netwerk interface aan de gang te krijgen op de meest voorkomende systemen.
    2. Geavanceerde configuratie
      Hier wordt u uitgelegd hoe de configuratie werkt - dit heeft u nodig voordat u verder gaat met netwerken in modules.
    3. Netwerken in modules
      Gentoo geeft u de mogelijkheid om flexibel te netwerken - hier wordt u uitleg gegeven over het kiezen van DHCP clients, bonding, bridging, VLAN en meer.
    4. Draadloos netwerk
      Draadloos is niet zo makkelijk als het lijkt. Hopelijk krijgt u het hier aan de gang.
    5. Extra functies toevoegen
      Wanneer u avontuurlijk bent ingesteld, kunt u zelf functies toevoegen aan het netwerken.
    6. Netwerk management
      Voor laptop gebruikers en mensen die een computer vaak aan een ander netwerk hangen.

A. Installeren van Gentoo

1. Over de Gentoo Linux Installatie

1.a. Introductie

Welkom!

Allereerst, welkom bij Gentoo. Je staat op het punt de wereld van keuzes en prestatie te betreden. Gentoo draait helemaal om keuzes. Bij de installatie van Gentoo, wordt dit verschillende keren duidelijk gemaakt -- je kunt kiezen hoeveel je zelf wil compileren, hoe je Gentoo installeert, welke systeem logger je wil, etc.

Gentoo is een snelle, moderne metadistributie met een helder en flexibel ontwerp. Gentoo is gebouwd rond vrije software en schermt zijn gebruikers niet af voor wat er onder de motorkap ligt. Portage, het pakket onderhoud systeem dat Gentoo gebruikt, is geschreven in Python, wat betekent dat je gemakkelijk de broncode kunt bekijken en bewerken. Gentoo's systeem voor software pakketten gebruikt broncode (hoewel ondersteuning voor voorgeïnstalleerde pakketten ook is inbegrepen) en de configuratie van Gentoo gebeurt met normale tekstbestanden. Met andere woorden, openheid overal.

Het is erg belangrijk dat je begrijpt dat Gentoo draait om keuzes. We proberen je niet te dwingen tot iets wat je niet wil. Als je het gevoel hebt dat we dat wel doen, schrijf hier dan een foutrapport voor.

Hoe is de Installatie Gestructureerd?

De Gentoo Installatie kan gezien worden als een 10-staps procedure, overeenkomend met hoofdstukken 2 - 11. Elke stap leidt tot een bepaalde toestand.

  • Na stap 1, zit je in een werkomgeving die klaar is om Gentoo te installeren
  • Na stap 2, is jouw internet verbinding klaar om Gentoo te installeren
  • Na stap 3, zijn jouw harde schijven gereed om jouw Gentoo installatie te huisvesten
  • Na stap 4, is jouw installatie omgeving voorbereid en ben je klaar om te chrooten naar de nieuwe omgeving
  • Na stap 5, zijn de kern pakketten, die op alle Gentoo installaties hetzelfde zijn, geïnstalleerd
  • Na stap 6, heb je jouw Linux kernel gecompileerd
  • Na stap 7, heb je de meeste van jouw Gentoo systeem configuratie bestanden geschreven
  • Na stap 8, zijn de nodige systeem programma's (die je uit een aardige lijst kunt kiezen) geïnstalleerd
  • Na stap 9, is de bootloader van jouw keuze geïnstalleerd en geconfigureerd en ben je ingelogd in jouw nieuwe Gentoo installatie
  • Na stap 10, is jouw Gentoo Linux omgeving klaar om te worden ontdekt.

Wanneer je voor een bepaalde keuze gesteld wordt, zullen we ons best doen om uit te leggen wat de voor- en nadelen zijn. Vervolgens gaan we door met de standaard keuze, aangegeven met "Standaard: " in de titel. De andere mogelijkheden zijn aangeven met "Alternatief: ". Denk niet dat we de standaard keuze aanraden. Het is echter wat wij denken dat de meeste gebruikers willen.

Soms kun je een optionele stap volgen. Zulke stappen zijn aangegeven met "Optioneel: " en zijn daarom niet nodig om Gentoo te installeren. Echter, sommige optionele stappen zijn afhankelijk van een beslissing die je daarvoor hebt gemaakt. We zullen je informeren wanneer dit gebeurt, wanneer je zo'n beslissing maakt, en vlak voordat de optionele stap wordt beschreven.

Wat zijn mijn Opties?

Je kunt Gentoo op verschillende manieren installeren. Je kunt het downloaden en installeren vanuit een van onze Installatie CD's, vanuit een bestaande distributie, vanuit een opstartbare CD (zoals Knoppix), vanuit een netwerk-gestarte omgeving, vanuit een reddingsfloppy, etc.

Dit document behandelt de installatie waarbij gebruikt gemaakt wordt van een Gentoo Installatie CD of, in zeldzame gevallen, NetBooting. Deze installatie gaat ervan uit dat je de laatste beschikbare versie van elk pakket wil installeren. Als je een netwerkloze installatie wil uitvoeren, dan zou je de Gentoo 2008.0 Handboeken (Engels) moeten lezen, die de installatie instructies voor een netwerkloze omgeving bevat.

Let op, als je van plan bent om GRP (het Gentoo Referentie Platform, een collectie van voorgeïnstalleerde pakketten bedoelt voor onmiddelijk gebruik na een Gentoo installatie) te gebruiken, moet je de instructies in de Gentoo 2008.0 Handboeken (Engels) volgen.

Voor hulp bij de andere installatie aanpakken, lees dan onze Alternatieve Installatie Gids (Engels). We bieden ook een Gentoo Installatie Tips & Trucs (Engels) document aan dat wellicht ook handig kan zijn om te lezen. Als je het gevoel hebt dat de huidige installatie instructies te uitgebreid zijn, gebruik dan gerust onze Snelle Installatie Gids beschikbaar vanuit onze Documentatie Bronnen (Engels) als voor jouw architectuur zo'n document beschikbaar is.

Je hebt ook verschillende mogelijkheden: je kunt je gehele systeem vanuit niets compileren of een voorgeïnstalleerde omgeving gebruiken om je Gentoo omgeving in geen tijd draaiend te krijgen. En natuurlijk zijn er tussenoplossingen beschikbaar waarin je niet alles compileert maar start vanuit een half klaar systeem.

Problemen?

Als je een probleem vindt in de installatie (of in de installatie documentatie), bezoek dan ons fout volgsysteem en ga na of de fout al bekend is. Zoniet, maak er dan een foutrapport voor aan opdat wij het kunnen oplossen. Wees niet bang voor de ontwikkelaars die aan (jouw) fouten zijn toegewezen -- ze eten normaal gesproken geen mensen op.

Let op dat, hoewel het document dat je nu leest architectuur-specifiek is, het ook referenties zal bevatten naar andere architecturen. De reden hiervoor is het feit dat grote delen van het Gentoo Handboek broncode gebruiken die gemeenschappelijk is voor alle architecturen (om verdubbeling van moeite en gebrek van ontwikkelings middelen te voorkomen). We zullen dit tot een minimum beperken om verwarring te voorkomen.

Als je niet zeker weet of een probleem een gebruikers-probleem is (een door jou gemaakte fout ondankts het zorgvuldig lezen van de documentatie) of een software-probleem (een door ons gemaakte fout ondanks het zorgvuldig testen van de installatie/documentatie) ben je vrij om op #gentoo te komen op irc.freenode.net. Natuurlijk ben je daar anders ook welkom :)

Als je een vraagt hebt over Gentoo, bekijk onze Veelgestelde Vragen (Engels), beschikbaar vanuit de Gentoo Documentatie (Engels). Je kunt ook de FAQs bekijken op onze forums. Als je daar het antwoord niet kunt vinden, vraag op #gentoo, ons IRC-kanaal op irc.freenode.net. Ja, sommige van ons zijn freaks die op IRC zitten :-)

2. Keuze van het Installatie Medium

2.a. Hardware eisen

Introductie

Voordat we beginnen, zullen we eerst de hardware-eisen geven die u nodig heeft om een succesvolle installatie te voltooien op uw PC.

Hardware eisen

CPU i486 of nieuwer
Geheugen 64 MB
Schijfruimte 1.5 GB (exclusief swap ruimte)
Swap ruimte Ten minste 256 MB

2.b. De Gentoo Installatie CDs

Introductie

De Gentoo Installatie CDs zijn opstartbare CDs die een zelfstandige Gentoo omgeving bevatten. Zij laten u toe om Linux vanaf de CD op te starten. Gedurende het opstarten wordt uw hardware gedetecteerd en de benodigde stuurprogramma's worden geladen. Deze worden onderhouden door de Gentoo ontwikkelaars.

Alle Installatie CDs laten u toe om op te starten, uw netwerk te configureren, uw partities in te delen en te beginn> en met de installatie van Gentoo over het internet. We bieden nu twee Installatie CDs welke beide net zo geschikt zijn om Gentoo van te installeren, mits u van plan bent om een internet-gebaseerde installatie uitvoert waarbij u de nieuwste pakketten van internet download.

Belangrijk: Indien u Gentoo wilt installeren zonder een werkende internet verbinding, gebruik dan de installatie instructies zoals beschreven in het Gentoo 2006.0 Handboek (Engelstalig).

De twee Installatie CDs die we op dit moment aanbieden zijn:

  • De Gentoo minimale Installatie CD, een kleine, puur nuttige opstartbare CD waarvan het enige > doel is, om het systeem op te starten, het netwerk instellen en verder gaan met de Gentoo installatie.
  • De Gentoo Installatie LiveCD bevat alles wat u nodig heeft om Gentoo te installeren. De CD heeft een grafische omgeving, een grafishe en een command-line installatie procedure met een automatische installatie, en natuurlijk de installatie instructies voor uw architectuur.

Omue te helpen kiezen welke Installatie CD u nodig heeft, hebben we een lijstje met de grote voor- en nadelen van elke Installatie CD gemaakt.

Gentoo Minimale Installatie CD

De minimale Installatie CD heet install-x86-minimal-2006.1.iso en heeft slechts 49 MB schijfruimte nodig. U kunt deze Installatie CD gebruiken om Gentoo te installeren, maar alleen met een werkende internet verbinding.

Minimale Installatie CD Voor- en Nadelen
+ Kleinste download
- Bevat geen stage3 archief, geen Portage moment opname, geen kant-en-klare pakketten en is daardoor niet geschikt om voor een netwerkloze installatie.

Gentoo's Installatie LiveCD

De Installatie LiveCD heet livecd-i686-installer-2006.1.iso en gebruikt alle ruimte van een 697 MB CD. U kunt deze Installatie CD gebruiken om Gentoo te installeren, zelfs als u geen werkende internet verbinding tot uw beschikking hebt, zodat u Gentoo ook op een andere PC kunt installeren dan waar u nu mee bezig bent :).

Installatie LiveCD Voor- en Nadelen
+ Bevat alles wat u nodig heeft. U net zo goed installeren zonder een netwerk verbinding.
- Enorme download

De Stage3 Tarrball

Een stage3 tarball is een archief met een minimale Gentoo omgeving, die u kunt gebruiken tijdens de installatie instructies in deze handleiding. Vroeger beschreef het handboek de installatie vanuit één van de drie stage tarballs en hoewel Gentoo nog steeds een stage1 en stage2 tarball aanbiedt, wordt in de officiële installatie gebruik gemaakt van de stage3 tarball. Als u geïnteresseerd bent in een Gentoo installatie met een stage1 of stage2 tarball, lees dan de Gentoo FAQ Hoe installeer ik een stage1 of stage2 tarball? (Engelstalig).

Een stage3 tarball kan worden gedownload vanaf releases/x86/2006.1/stages/ op één van de mirrors op de Officiële Gentoo Mirrors Pagina en zijn niet te vinden op de liveCD.

2.c. Downloaden, Branden en Opstarten van een Gentoo Installatie CD

Downloaden en Branden van de Installatie CDs

allation using the instructions in this manual. Previously, the Gentoo Handbook described the installation using one of three stage tarballs. While Gentoo still offers stage1 and stage2 tarballs, the official installation method uses the stage3 tarball. If you are interested in performing a Gentoo installation using a stage1 or stage2 tarball, please read the Gentoo FAQ on How do I Install Gentoo Using a Stage1 or Stage2 Tarball?

Stage3 tarballs can be downloaded from releases/x86/2006.0/stages/ on any of the Official Gentoo Mirrors and are not provided on the LiveCD. Stage3 tarballs can be downloaded from releases/x86/2006.1/stages/ on any of the Official Gentoo Mirrors and are not provided on the LiveCD.

U heeft gekozen voor een Gentoo Installatie CD te downloaden. We zullen beginnen bij het downloaden en het branden van een Installatie CD. Vooraf hebben we de verschillende beschikbare Installatie CDs besproken, maar waar kan men deze vinden?

U kunt een van de Installatie CDs downloaden (en, indien gewenst ook een Packages CD) van een van onze mirrors. De Installatie CDs zijn terug te vinden in de releases/x86/2006.0/installcd directory.

In deze directory vindt u de zogenaamde ISO-bestanden terug. Deze zijn volledige CD images, welke u kan schrijven naar een CD-R.

Indien u zich afvraagt of het gedownloade bestand corrupt is of niet, kunt u de MD5 controle som nakijken en vergelijken met de MD5 controle som die wij ter beschikking stellen (zoals install-x86-minimal-2006.1.iso.DIGESTS). U kunt deze MD5 controle som met de md5sum tool voor Linux/Unix of md5sum voor Windows controleren.

U kunt de authenticiteit van het gedownloade bestand ook nakijken met GnuPG met de versleutelde handtekening die we ter beschikking stellen (het bestand dat eindigt met .asc). Download het handtekening bestand en verkrijg de publieke sleutel:

Codevoorbeeld 3.1: Verkrijgen van de publieke sleutel

$ gpg --keyserver pgp.mit.edu --recv-keys 17072058

Verifieer nu de handtekening:

Codevoorbeeld 3.2: Verifieer nu de versleutelde handtekening

$ gpg --verify <signature file> <downloaded iso>

Om de gedownloade ISO(s) te branden, moet u raw-burning selecteren. Hoe u dit doet is zeer sterk afhankelijk van welk programma u gebruikt. We zullen hier cdrecord en K3B bespreken; meer informatie is terug te vinden in onze Gentoo FAQ (Engelstalig).

  • Met cdrecord, typt u eenvoudig cdrecord dev=/dev/hdc <gedownloade iso bestand> (vervang /dev/hdc met uw CD-RW drive pad).
  • Met K3B, selecteer Tools > CD > Burn Image. Dan kunt u de locatie van uw ISO bestand bepalen in het 'Image to Burn' omgeving. Als laatste klikt u dan op Start.

Opstarten van de Installatie CD

Als u de installatie CD hebt gebrand, is het tijd geworden om deze op te starten. Verwijder alle CDs uit de CD drives, herstart uw systeem en ga de BIOS binnen. Dit doet u door op DEL, F1 of ESC te drukken, afhankelijk van uw Bios. Verander in de BIOS de opstart volgorde zo dat de CD-ROM geprobeerd wordt voor de harde schijf. Deze optie vindt men vaak terug onder "CMOS Setup". Indien u dit niet doet, kan het zijn dat uw systeem gewoon vanaf de harde schijf opstarten en de CD-ROM negeren.

Plaats nu de CD in de CD-ROM drive (duh) en herstart. U moet een boot prompt zien. Bij dit scherm, kunt u op Enter drukken om het start proces te beginnen met de standaard start opties, of u kunt de Installatie CD ook opstarten met aangepaste opties door een kernel te op te geven, gevolgd door de start argumenten. Om verder te gaan druk dan op Enter.

Een kernel op geven? Ja, we voorzien verschillende kernels bij onze Installatie CDs. De standaard is gentoo. Andere kernels zijn voor specifieke hardware eisen de -nofb varianten die de framebuffer ondersteuning uitschakelt.

Hieronder vindt u een klein overzicht met de beschikbare kernels:

Kernel Beschrijven
gentoo Standaard 2.6 kernel met ondersteuning voor meerdere CPUs
gentoo-nofb Zelfde als gentoo maar zonder framebuffer ondersteuning
memtest86 Test uw RAM geheugen op fouten

U kunt ook kernel opties opgeven. Zij representeren optionele instellingen die u kunt (de)activeren. De volgende lijst is dezelfde die u ontvangt indien u op F2 drukt bij het start scherm.

Codevoorbeeld 3.3: Beschikbare aan de kernel mee te geven opties

- agpgart       laadt agpgart (gebruik indien u grafische problemen hebt of als
                het systeem vastloopt)
- acpi=on       laadt ondersteuning voor ACPI firmware
- ide=nodma     Forceert het laden van dma voor niet werkende ide onderdelen uit
- doscsi        zoek naar scsi onderdelen (kan leiden tot het ontregelen van
                sommige ethernet kaarten)
- dopcmcia      start de pcmcia service
- nofirewire    schakelt het laden van firewire modules in initrd uit
                (voor firewire cdroms, etc)
- nokeymap      schakelt de kaymap keuze voor niet-us toetsenborden uit
- docache       laadt de volledige opstart portie van de cd in het RAM, dit laat
                toe /mnt/cdrom te umounten om een andere cd te mounten.
- nodetect      veroorzaakt dat hwsetup/kudzu en hotplug niet worden opgestart
- nousb         schakelt usb module load uit van initrd, shakelt hotplug uit
- nodhcp        dhcp wordt niet gestart indien een netwerkkaart wordt gedecteerd
- nohotplug     schakelt het laden van de hotplug service uit
- noapic        schakelt apic uit (probeer dit indien u hardware problemen
                heeft, netwerkkaarten, scsi, etc)
- noevms        disable loading of EVMS2 modules
- nolvm2        disable loading of LVM2 modules
- hdx=stroke    Laat toe de volledige harde schijf te partitioneren ook indien
                uw BIOS geen grote harde schijven ondersteunt
- noload=module1,[module2,[...]]
                schakel het laden van specifieke kernel modules uit

Nu kan u de CD starten, een kernel opgeven (indien u niet tevreden bent met de standaard gentoo kernel) en de opstart opties selecteren. Als voorbeeld zullen we tonen hoe u de gentoo kernel met dopcmcia parameter, opstart:

Codevoorbeeld 3.4: Starten van een Installatie CD

boot: gentoo dopcmcia

U zult begroet worden met een opstartscherm en een vooruitgangsbalk. Als u Gentoo installeert op een systeem met een niet-US toetsenbord, zorg ervoor dat u meteen ALT-F1 indrukt om naar de verbose modus en volg de prompt. Als er geen Als er binnen 10 seconden geen selectie wordt gemaakt zal de standaard (het toetsenbord van de V.S.) worden gebruikten het laden zal verdergaan. Als het opstarten klaar is, wordt u automatisch aangemeld in de "Live" Gentoo Linux als "root", de supergebruiker. U zult een root ("#") prompt op de huidige console hebben en u kan zich ook aanmelden op de andere consoles door op Alt-F2, Alt-F3 en Alt-F4 te drukken. U gaat terug naar de console waar u begonnen bent door op Alt-F1 te drukken.

Ga nu verder met de Extra Hardware Configuratie.

Extra Hardware Configuratie

Wanneer de Installatie CD start, probeert hij al uw hardware te detecteren en de geschikte kernel modules te laden om uw hardware te ondersteunen. In de meeste gevallen, zal de Installatie CD zijn taak goed doen. Hoe dan ook, in sommige gevallen (de SPARC Installatie CDs doen geen autodetectie), zal de Installatie CD de kernel-modules die u nodig heeft niet automatisch laden. Indien de PCI-autodetectie sommige van uw hardware gemist heeft, zult u de geschikte kernel modules handmatig moeten laden.

In het volgende voorbeeld zullen we de 8139too module proberen te laden (ondersteuning voor verschillende netwerkkaarten):

Codevoorbeeld 3.5: Laden van kernel modules

# modprobe 8139too

Als u PCMCIA ondersteuning nodig hebt, dient u het pcmcia initialisatie script te starten:

Codevoorbeeld 3.6: Het PCMCIA initialisatie script starten

# /etc/init.d/pcmcia start

Optioneel: Hard Disk prestatie verbeteren

Indien u een gevorderde gebruiker bent, zult u misschien de IDE harde schijf prestaties willen verbeteren, via hdparam. Met de -tT opties kunt u de prestaties van uw schijf testen (voert het verschillende keren uit om een betere indruk te krijgen):

Codevoorbeeld 3.7: Testen van harde schijf performantie

# hdparm -tT /dev/hda

Om de harde schijf in te stellen, kunt u één van de volgende voorbeelden gebruiken (of experimenteer zelf een beetje) die /dev/hda gebruiken als harde schijf (vervang dit met jouw harde schijf):

Codevoorbeeld 3.8: Harde Schijf prestatie afstellen

DMA activeren:                          # hdparm -d 1 /dev/hda
Veilige prestatie verbeterende opties:  # hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda

Optioneel: Gebruikers Accounts

Indien u van plan bent om andere mensen toegang te verlenen tot uw installatie omgeving of indien u wil chatten gebruikmakend van irssi zonder root privileges (om veiligheidsredenen), moet u de nodige gebruikers accounts aanmaken en het root wachtwoord wijzigen.

Om uw root wachtwoord te wijzigen, gebruikt u het passwd commando:

Codevoorbeeld 3.9: Veranderen van het root wachtwoord

# passwd
New password: (Type uw nieuwe wachtwoord)
Re-enter password: (Type uw root wachtwoord opnieuw in)

Om een gebruikers account aan te maken, moeten we eerst de gekozen gebruikersnaam ingeven, gevolgd door een wachtwoord. We gebruiken useradd en passwd om deze taken uit te voeren. In het volgende voorbeeld, zullen we een gebruiker genaamd "john" aanmaken.

Codevoorbeeld 3.10: Aanmaken van een gebruikers account

# useradd m -G users john
# passwd john
New password: (Voer john zijn wachtwoord)
Re-enter password: (Voer john zijn wachtwoord opnieuw in)

U kunt nu uw gebruikers id van root naar de vers gemaakte gebruiker wijzigen door su te gebruiken;

Codevoorbeeld 3.11: Veranderen van user id

# su - john

Optioneel: Documentatie bekijken gedurende de Installatie

Indien u wenst het Gentoo Handboek (vanaf de CD of online) te bekijken gedurende de installatie, moet u er eerst zeker van zijn dat u een gebruikers account heeft aangemaakt (zie Optional: Gebruikers Accounts). Druk dan op Alt-F2 om een nieuwe terminal te openen en meld u aan.

Indien u de documentatie vanaf de CD wil bekijken, kunt onmiddellijk links uitvoeren om de documentatie te lezen:

Codevoorbeeld 3.12: Bekijken van de documentatie op de CD

# links /mnt/cdrom/docs/html/index.html

Het is hoe dan ook aangeraden om het on-line Gentoo handboek te gebruiken omdat u dan altijd over de meest actuele versie beschikt. U kunt het bekijken door gebruik te maken van links, maar enkel en alleen nadat u de Configuratie van uw Netwerk afgerond heeft (anders kunt u geen verbinding krijgen met het Internet om het document te bekijken):

Codevoorbeeld 3.13: Bekijken van de Online Documentatie

# links http://www.gentoo.org/doc/nl/handbook/handbook-x86.xml.xml

U kunt terug gaan naar de oorspronkelijke terminal door op Alt-F1 te drukken.

Optioneel: Starten van de SSH Daemon

Indien u andere gebruikers toegang tot uw computer wilt verlenen gedurende de Gentoo installatie (misschien gaan die gebruikers u helpen bij de installatie van Gentoo, of zullen misschien de installatie voor u doen), moet u een gebruikersaccount aanmaken voor die gebruikers en moet u het root wachtwoord aan hen geven (doe dit allleen indien u die gebruiker volledig vertrouwt).

Om de SSH daemon op te starten, voer het volgende commando uit:

Codevoorbeeld 3.14: Start van de SSH daemon

# /etc/init.d/sshd start

Om sshd te kunnen gebruiken, moet u eerst uw netwerk configureren. Begin met de Configuratie van uw netwerk.

3. Configuratie van uw Netwerk

3.a. Automatische Netwerk Detectie

Misschien werkt het gewoon?

Als jouw systeem is verbonden in een Ethernet netwerk met DHCP server, is het erg waarschijnlijk dat jouw netwerk configuratie al automatisch voor jouw is ingesteld. Als dit zo is, zou je jouw voordeel kunnen doen met de vele inbegrepen netwerk-bewuste commando's op de Installatie CD zoals onder andere ssh, scp, ping, irssi, wget en links.

Als de netwerkvoorziening al voor jouw is geconfigureerd, zou het /sbin/ifconfig commando naast lo een aantal netwerk interfaces moeten vermelden, zoals eth0:

Codevoorbeeld 1.1: /sbin/ifconfig voor een werkende netwerk configuratie

# /sbin/ifconfig
(...)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800 

Optioneel: Configureer iedere Proxy

Als je toegang hebt tot het Internet via een proxy, moet je wellicht proxy informatie instellen tijdens de installatie. Het is erg makkelijk om een proxy te definiëren: je hoeft slechts een variabele definiëren die de proxy server informatie bevat.

In de meeste gevallen kun je de variabelen definiëren door de server hostname te gebruiken. Als voorbeeld nemen we aan dat de proxy de naam proxy.gentoo.org heeft en de poort 8080 is.

Codevoorbeeld 1.2: Proxy servers definiëren

(Als de proxy HTTP verkeer filtert)
# export http_proxy="http://proxy.gentoo.org:8080"
(Als de proxy FTP verkeer filtert)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Als de proxy RSYNC verkeer filtert)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Als jouw proxy een gebruikersnaam en wachtwoord vereist, moet je de volgende syntax voor de variabele gebruiken:

Codevoorbeeld 1.3: Gebruikersnaam/wachtwoord toevoegen aan de proxy variabele

http://gebruikersnaam:wachtwoord@proxy.gentoo.org:8080

Testen van het Netwerk

Wellicht wil je proberen om jouw ISP's DNS server (te vinden in /etc/resolv.conf) en een zelf gekozen website te pingen, om zeker te zijn dat jouw pakketjes het net bereiken, de DNS naam resolutie correct werkt, etc.

Codevoorbeeld 1.4: Verder testen van het netwerk

# ping -c 3 www.gentoo.org

Als je nu jouw netwerk kunt gebruiken, kun je de rest van deze sectie overslaan en verder gaan met Voorbereiden van de schijven (Engels). Zoniet, lees verder.

3.b. Automatische Netwerk Configuratie

Als het netwerk niet meteen werkt, kun je op sommige installatie media net-setup (voor reguliere of draadloze netwerken) gebruiken, pppoe-setup (voor ADSL-gebruikers) of pptp (voor PPTP-gebruikers - beschikbaar op x86, amd64, alpha, ppc en ppc64).

Als jouw installatie medium niet een van deze programma's heeft of jouw netwerk functioneert nog niet, ga verder met Handmatige Netwerk Configuratie.

Standaard: Gebruiken van net-setup

De simpelste manier om de netwerkvoorziening in te stellen als het niet automatisch werd geconfigureerd is het uitvoeren van het net-setup script:

Codevoorbeeld 2.1: Uitvoeren van het net-setup script

# net-setup eth0

net-setup zal je enige vragen stellen over jouw netwerk omgeving. Wanneer dit klaar is, zou je een werkende netwerk verbinding moeten hebben. Test jouw netwerk verbinding zoals eerder werd vermeld. Als de tests positief zijn, gefeliciteerd! Je bent nu klaar om Gentoo te installeren. Sla de rest van deze sectie over en ga verder met Voorbereiden van de schijven (Engels).

Als jouw netwerk nog steeds niet werkt, ga verder met Handmatige Netwerk Configuratie.

Alternatief: Gebruiken van PPP

Ervan uitgaande dat je PPPoE nodig hebt om verbinding te maken met het internet, heeft de Installatie CD (elke versie) het je makkelijk gemaakt door ppp bij te sluiten. Gebruik het gegeven pppoe-setup script om jouw verbinding te configureren. Je zult gevraagd worden naar het ethernet apparaat dat is verbonden met jouw adsl modem, jouw gebruikersnaam en wachtwoord, de IP's van jouw DNS servers en of je een basis firewall nodig hebt of niet.

Codevoorbeeld 2.2: Gebruik van ppp

# pppoe-setup
# pppoe-start

Als er iets verkeerd gaat, kijk dan na of je jouw gebruikersnaam en wachtwoord correct hebt ingevoerd door te kijken naar /etc/ppp/pap-secrets of /etc/ppp/chap-secrets en verzeker jezelf dat je het juiste ethernet apparaat gebruikt. Als jouw ethernet apparaat niet bestaat, zul je de geschikte netwerk module moeten laden. In dat geval zou je verder moeten gaan met Handmatige Netwerk Configuratie omdat we daar uitleggen hoe je de geschikte netwerk modules moet laden.

Als alles werkt, ga verder met Voorbereiden van de schijven (Engels)

Alternatief: Gebruiken van PPTP

Als je PPTP ondersteuning nodig hebt, kun je pptpclient gebruiken die is meegegeven op onze Installatie CD's. Je moet echter eerst zeker weten dat jouw configuratie correct is. Bewerk /etc/ppp/pap-secrets of /etc/ppp/chap-secrets zodat het de juiste gebruikersnaam/wachtwoord combinatie bevat:

Codevoorbeeld 2.3: Bewerken van /etc/ppp/chap-secrets

# nano -w /etc/ppp/chap-secrets

Pas daarna /etc/ppp/options.pptp aan wanneer nodig:

Codevoorbeeld 2.4: Bewerken van /etc/ppp/options.pptp

# nano -w /etc/ppp/options.pptp

Wanneer dit alles is gedaan, voer pptp uit (samen met de opties die je niet kon instellen in options.pptp) om met de server te verbinden:

Codevoorbeeld 2.5: Verbinding maken met een inbel server

# pptp <server ip>

Ga nu verder met Voorbereiden van de schijven (Engels).

3.c. Handmatige Netwerk Configuratie

Laden van de Geschikte Netwerk Modules

Als de Installatie CD opstart, probeert deze al jouw hardware apparaten te detecteren en de geschikte kernel modules (drivers) om jouw hardware te ondersteunen te laden. In de grote meerderheid van de gevallen, gaat dit erg goed. Echter, in een aantal gevallen, kan het zijn dat de kernel modules die je nodig hebt niet automatisch worden geladen.

Als net-setup of pppoe-setup mislukten, dan is het mogelijk dat je netwerkkaart niet meteen werd gevonden. Dit betekent dat je wellicht de geschikte kernel modules handmatig moet laden.

Om uit te vinden welke kernel modules we aanbieden voor netwerkvoorziening, gebruik ls:

Codevoorbeeld 3.1: Zoeken naar gegeven modules

# ls /lib/modules/`uname -r`/kernel/drivers/net

Als je een driver voor jouw netwerkkaart vindt, gebruik modprobe om de kernel module te laden:

Codevoorbeeld 3.2: Gebruiken van modprobe om een kernel module te laden

(Als voorbeeld laden we de pcnet32 module)
# modprobe pcnet32

Om na te gaan of jouw netwerkkaart nu gedetecteerd is, gebruik ifconfig. Een gedetecteerde netwerkkaart zou moeten resulteren in iets als het volgende:

Codevoorbeeld 3.3: Testen van de beschikbaarheid van jouw netwerkkaart, succesvol

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00  
          BROADCAST NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Als je echter de volgende foutmelding krijgt, is de netwerkkaart niet gedetecteerd:

Codevoorbeeld 3.4: Testen van de beschikbaarheid van jouw netwerkkaart, mislukt

# ifconfig eth0
eth0: error fetching interface information: Device not found

Als je meerdere netwerkkaarten in jouw systeem hebt, hebben ze de volgende namen eth0, eth1, etc. Verzeker jezelf dat de netwerkkaart die je wil gebruiken goed werkt en onthoud om de correcte benaming in dit document te gebruiken. We gaan ervan uit dat de netwerkkaart eth0 wordt gebruikt.

Ervan uitgaande dat je nu een gedetecteerde netwerkkaart hebt, kun je opnieuw net-setup of pppoe-setup proberen (wat nu zou moeten werken), maar voor de harde kern onder jullie leggen we uit hoe je jouw netwerk handmatig configureert.

Selecteer een van de volgende secties gebaseerd op jouw netwerk situatie:

Gebruiken van DHCP

DHCP (Dynamic Host Configuration Protocol) maakt het mogelijk om automatisch netwerkvoorzienings-informatie te ontvangen (IP adres, netmask, broadcast adres, gateway, nameservers etc.). Dit werkt alleen als je een DHCP server in jouw netwerk hebt (of als jouw provider een DHCP service aanbiedt). Om ervoor te zorgen dat jouw netwerk interface deze informatie automatisch ontvangt, gebruik dhcpcd:

Codevoorbeeld 3.5: Gebruiken van dhcpcd

# dhcpcd eth0
Sommige netwerkbeheerders vereisen dat je de hostnaam en domeinnaam gebruikt
gegeven door de DHCP server. In dat geval, gebruik
# dhcpcd -HD eth0

Als dit werkt (probeer een internet server te pingen, bijvoorbeeld Google), dan is alles ingesteld en ben je klaar om verder te gaan. Sla de rest van deze sectie over en ga verder met Voorbereiden van de schijven (Engels).

Voorbereiden van Draadloze Toegang

Nota: Ondersteuning voor het iwconfig commando is alleen beschikbaar op x86, amd64 en ppc Installatie CD's. Je kunt de uitbreidingen nog steeds op een andere manier werkend krijgen door de instructie van het linux-wlan-ng project te volgen.

Als je een draadloze (802.11) kaart gebruikt, moet je wellicht jouw draadloze instellingen configureren voordat je verder gaat. Om de huidige draadloze instellingen voor jouw kaart te zien, kun je iwconfig gebruiken. Het uitvoeren van iwconfig laat wellicht het volgende zien:

Codevoorbeeld 3.6: Tonen van de huidige draadloze instellingen

# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"                                   
          Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2    
          Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535               
          Retry limit:16   RTS thr:off   Fragment thr:off                       
          Power Management:off                                                  
          Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm        
          Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx          
          excessive retries:237 Invalid misc:350282 Missed beacon:84            

Nota: Sommige draadloze kaarten kunnen een apparaat naam als wlan0 of ra0 hebben in plaats van eth0. Voer iwconfig uit zonder enige parameters om de correcte apparaatnaam te achterhalen.

Voor de meeste gebruikers zijn er slechts twee instellingen die wellicht van belang zijn om te veranderen, de ESSID (beter bekend als draadloze netwerk naam) of de WEP sleutel. Als de vermeldde ESSID en het Access Point adres al hetzelfde zijn als jouw access point en je gebruikt geen WEP, dan werkt je draadloze verbinding. Als je jouw ESSID moet veranderen, of een WEP sleutel moet toevoegen, kun je de volgende commando's uitvoeren:

Codevoorbeeld 3.7: Veranderen van ESSID en/of toevoegen van WEP sleutel

(Hiermee wordt de netwerknaam ingesteld naar "GentooNode")
# iwconfig eth0 essid GentooNode

(Hiermee wordt een hex WEP sleutel ingesteld)
# iwconfig eth0 key 1234123412341234abcd

(Hiermee wordt een ASCII sleutel ingesteld - zet "s:" ervoor)
# iwconfig eth0 key s:een-wachtwoord

Je kunt jouw draadloze instellingen opnieuw bevestigen door iwconfig te gebruiken. Als je draadloze verbinding werkt, kun je verder gaan met het configureren van de IP niveau netwerkvoorzienings-opties zoals beschreven in de volgende sectie (Begrijpen van Netwerk Terminologie) of door het net-setup programma te gebruiken zoals eerder beschreven.

Begrijpen van Netwerk Terminologie

Nota: Als je jouw IP adres, broadcast adres, netmask en nameservers weet, dan kun je deze subsectie overslaan en verder gaan met Gebruiken van ifconfig en route.

Als al het bovenstaande mislukt, zul je jouw netwerk handmatig moeten instellen. Dit is helemaal niet moeilijk. Je moet echter bekend zijn met enige netwerk terminologie, aangezien je dat nodig hebt om het netwerk naar eigen tevredenheid in te stellen. Na dit te hebben gelezen, weet je wat een gateway is, waar een netmask voor dient, hoe een broadcast adres is geformuleerd en waarom je nameservers nodig hebt.

In een netwerk zijn hosts geïdentificeerd door hun IP adres (Internet Protocol adres). Zo'n adres is een combinatie van vier nummers tussen 0 en 255. Goed, zo wordt het tenminste door ons beschouwd. In het echt bestaat zo'n IP adres uit 32 bits (enen en nullen). Laten we een voorbeeld bekijken:

Codevoorbeeld 3.8: Voorbeeld van een IP adres

IP Adres (nummers):   192.168.0.2
IP Adres (bits):      11000000 10101000 00000000 00000010
                      -------- -------- -------- --------
                         192      168       0        2

Zo'n IP adres is uniek voor een host zover het alle toegankelijke netwerken betreft (d.w.z. elke host die je kunt bereiken moet een uniek IP adres hebben). Om onderscheid te maken tussen hosts binnen en buiten een netwerk, is het IP adres verdeeld in twee delen: het netwerk deel en het host deel.

De verdeling is opgeschreven met een netmask, een verzameling van enen gevolgd door een verzameling nullen. Het deel van het IP dat kan worden ingedeeld door de enen is het netwerk-deel, het andere is het host-deel. Zoals gebruikelijk, kan de netmask worden opgeschreven als een IP adres.

Codevoorbeeld 3.9: Voorbeeld van netwerk/host verdeling

IP adres:    192      168      0         2
          11000000 10101000 00000000 00000010
Netmask:  11111111 11111111 11111111 00000000
             255      255     255        0
         +--------------------------+--------+
                  Netwerk              Host

Met andere woorden, 192.168.0.14 is nog steeds deel van ons voorbeeld netwerk, maar 192.168.1.2 niet.

Het broadcast adres is een IP adres met hetzelfde netwerk-deel als jouw netwerk, maar met alleen nullen als host-deel. Elke host in jouw netwerk luistert naar dit IP adres. Het wordt echt gebruikt om pakketjes te verzenden.

Codevoorbeeld 3.10: Broadcast adres

IP adres:     192      168      0         2
           11000000 10101000 00000000 00000010
Broadcast: 11000000 10101000 00000000 11111111
              192      168      0        255
          +--------------------------+--------+
                    Netwerk             Host

Om op het internet te surfen, moet je weten welke host de Internet verbinding deelt. Deze host wordt de gateway genoemd. Omdat het een normale host is, heeft deze een normaal IP adres (bijvoorbeeld 192.168.0.1).

We stelden eerder dat elke host zijn eigen IP adres heeft. Om deze host te bereiken met een naam (in plaats van een IP adres) heb je een service nodig die een naam (zoals dev.gentoo.org) vertaalt naar een IP adres (zoals 64.5.62.82). Zo'n service wordt een name service genoemd. Om zo'n service te gebruiken, moet je de nodige name servers in /etc/resolv.conf definiëren.

In sommige gevallen dient jouw gateway ook als nameserver. Anders moet je de door jouw ISP gegeven nameservers invoeren.

Samenvattend heb je de volgende informatie nodig voordat je verder gaat:

Netwerk Onderdeel Voorbeeld
Jouw IP adres 192.168.0.2
Netmask 255.255.255.0
Broadcast 192.168.0.255
Gateway 192.168.0.1
Nameserver(s) 195.130.130.5, 195.130.130.133

Gebruiken van ifconfig en route

Het opstellen van je netwerk bestaat uit drie stappen. Eerst geven we onszelf een IP adres door ifconfig te gebruiken. Vervolgens stellen we de weg naar de gateway in door route te gebruiken. Daarna maken we het af door de nameserver IP's in /etc/resolv.conf te plaatsen.

Om een IP adres te geven, heb je jouw IP adres nodig, broadcast adres en netmask. Voer vervolgens het volgende commando uit, waarbij je ${IP_ADDR} vervangt met jouw IP adres, ${BROADCAST} met jouw broadcast adres en ${NETMASK} met jouw netmask:

Codevoorbeeld 3.11: Gebruiken van ifconfig

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

Stel nu de weg naar de gateway in door route te gebruiken. Vervang ${GATEWAY} met jouw gateway IP adres.

Codevoorbeeld 3.12: Gebruiken van route

# route add default gw ${GATEWAY}

Open nu /etc/resolv.conf met jouw favoriete tekstbewerker (we gebruiken nano in ons voorbeeld):

Codevoorbeeld 3.13: Maken van /etc/resolv.conf

# nano -w /etc/resolv.conf

Vul nu jouw nameserver(s) in door het volgende als sjabloon te gebruiken. Verzeker jezelf dat je ${NAMESERVER1} en ${NAMESERVER2} vervangt door de geschikte nameserver adressen:

Codevoorbeeld 3.14: /etc/resolv.conf sjabloon

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

Dat is alles. Test nu je netwerk door een Internet server te pingen (bijvoorbeeld Google). Als dit werkt, gefeliciteerd. Je bent nu klaar om Gentoo te installeren. Ga verder met Voorbereiden van de Harde Schijven (Engels).

4. Voorbereiden van de harde schijven

4.a. Introductie van Block Devices

Block Devices

We bekijken de schijf gedeeltes van Gentoo Linux en Linux in het algemeen, inclusief de linux bestandssystemen, partities en block devices. Wanneer u dan bekend bent met de ins en outs van schijven en bestandssystemen, leiden we u door het proces van het opzetten van partities en bestandssystemen voor uw Gentoo Linux Installatie.

Om te beginnen, zullen we block devices introduceren. Het meest bekende block device is waarschijnlijk die van de eerste IDE schijf in een Linux systeem, namelijk /dev/hda. Als uw systeem SCSI of SATA schijven heeft, dan kan uw eerste harde schijf /dev/sda zijn.

De hierboven genoemde block devices stellen een abstracte interface naar de schijf voor. Programma's kunnen deze block devices gebruiken om te communiceren met de schijf zonder zich zorgen te hoeven maken of het een IDE, SCSI of iets anders is. Het programma kan simpelweg de ruimte als een set aangrenzende, willekeurig te bereiken 512-byte blokken gebruiken.

Partities

Hoewel het theoretisch mogelijk is om een volledige schijf te gebruiken voor uw Linux systeem, wordt dit in de praktijk zelden gedaan. In plaats daarvan worden ze opgesplitst in kleinere, makkelijker te beheren block devices. Op x86 systemen, noemen we deze partities.

Partities worden in drie types opgedeeld: primary (primaire), extended (uitgebreide) en logical (logische).

Een primaire partitie is een partitie die zijn informatie opslaat in de MBR (master boot record). Omdat een MBR erg klein is (512 bytes) kunnen er slechts 4 primaire partities worden gebruikt (bijvoorbeeld, /dev/hda1 tot /dev/hda4).

Een uitgebreide partitie is een speciale primaire partitie (deze moet dus een van de primaire partities zijn) die meerdere parties kan bevatten. Oorspronkelijk bestonden deze niet, maar omdat vier partities te weinig waren, breidde men het partitieschema uit zonder backward compatibility te verliezen.

Een logische partitie is een partitie binnen de extended partitie. De definities hiervan worden niet in de MBR gezet, maar binnen in de extended partitie.

Geavanceerde Opslag

De x86 Installatie CDs bieden ondersteuning voor EVMS en LVM2. EVMS en LVM2 vergroten de flexibiliteit van uw partitie indeling. Tijdens de installatie instructies, zullen we ons richten op "reguliere" partities, maar het is goed om te weten dat EVMS en LVM ook ondersteund worden.

4.b. Een partitie schema ontwerpen

Standaard Partitie Schema

Als u niet geïnteresseerd bent in een partitie schema te tekenen voor uw systeem, dan kunt u het partitie schema gebruiken wat we in dit boek gebruiken:

Partitie Bestandssysteem Grootte Beschrijving
/dev/hda1 ext2 32M Boot partitie
/dev/hda2 (swap) 512M Swap partitie (wisselbestand)
/dev/hda3 ext3 Rest van de schijf Root partitie

Als u wel wilt weten hoe groot een partitie moet zijn, of zelfs hoeveel partities u nodig heeft, lees dan verder. Zo niet, dan kunt u doorgaan met het partitioneren van uw schijf, door het lezen van fdisk gebruiken om uw schijf te partitioneren.

Hoeveel en hoe groot?

Het aantal partities hangt zeer sterk af van uw omgeving. Bijvoorbeeld, als u een heleboel gebruikers hebt, wilt u waarschijnlijk uw /home gescheiden houden omdat dit de snelheid en veiligheid ten goede komt en ook backups maken is een stuk makkelijker. Als u Gentoo installeert als een mailserver, zou u /var gescheiden kunnen houden, omdat al uw mails in /var staan. Een goede keuze van uw schijfindeling zal de snelheid flink verhogen. Gameservers zullen een aparte /opt hebben omdat de meeste gameservers daar geïnstalleerd worden, vanwege dezelfde redenen als oor /home>: veiligheid en backups. U wilt /usr groot houden: het zal niet alleen het grootste deel van de applicaties bevatten, de Portage boom op zich neemt ongeveer 500 Mbyte in beslag, exclusief de verschillende broncodes die er opgeslagen staan.

Zoals u kunt zien, hangt het sterk af van uw doel. Gescheiden partities of volumes hebben de volgende voordelen:

  • U kunt het best presterende bestandssysteem kiezen voor iedere partitie of volume
  • Uw totale systeem kan niet vol zitten als een programma constant files naar een partitie of volume probeert te schrijven
  • Zo nodig kunnen bestandssysteem controles worden beperkt in tijd, omdat meerdere controles parallel kunnen worden uitgevoerd (hoewel dit voordeel vooral geldt bij meerdere schijven dan meerdere partities)
  • Veiligheid kan worden verbeterd door het mounten van enkele partities of volumes als alleen-lezen, nosuid (setuid bits worden genegeerd), noexec (uitvoerbare bits worden genegeerd) etc.

Hoewel, meerdere partities hebben een groot nadeel: indien niet goed ingesteld, kunt u een systeem krijgen met veel vrije ruimte op de ene en niets op de andere. Ook is er een 15-partities limiet voor SCSI en SATA.

Als een voorbeeld partitie indeling, zullen we u laten zien hoe u een 20Gb schijf die wordt gebruikt als een demonstratie laptop (met webserver, mailserver, gnome, ...) partitioneert:

Codevoorbeeld 2.1: Voorbeeld bestandssysteem gebruik

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda5     ext3    509M  132M  351M  28% /
/dev/hda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/hda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/hda8     ext3   1011M  483M  477M  51% /opt
/dev/hda9     ext3    2.0G  607M  1.3G  32% /var
/dev/hda1     ext2     51M   17M   31M  36% /boot
/dev/hda6     swap    516M   12M  504M   2% <niet gemount>
(Ongepartitioneerde ruimte voor toekomstig gebruik: 2 Gb)

/usr is hier redelijk vol (83% gebruikt), maar als alle software is geïnstalleerd groeit /usr niet meer veel. Op het eerste gezicht lijkt /var erg groot, maar Gentoo compileert standaard alle programmas in /var/tmp/portage. Wanneer u /var op bescheiden formaat wilt houden (rond de 1GB), kunt u de PORTAGE_TMPDIR variabele in /etc/make.conf aan passen en naar een partitie met voldoende ruimte laten verwijzen wanneer u extreem grote pakketten (oa OpenOffice, KDE) wilt compileren.

4.c. fdisk gebruiken om uw schijf te partitioneren

Het volgende deel beschrijft hoe u de eerder beschreven voorbeeld indeling maakt, namelijk:

Partitie beschrijving
/dev/hda1 Boot partitie
/dev/hda2 Swap partitie
/dev/hda3 Root partitie

Verander uw partitie indeling eventueel naar eigen inzicht.

De huidige partitie indeling bekijken

fdisk is een populaire en krachtige tool om de schijf op te delen in partities. Start fdisk op uw schijf (in ons voorbeeld is dat /dev/hda):

Codevoorbeeld 3.1: Fdisk starten

# fdisk /dev/hda

Eenmaal in fdisk, wordt u begroet door een prompt als deze:

Codevoorbeeld 3.2: fdisk prompt

Command (m for help):

Type p om uw huidige partitie indeling te laten zien:

Codevoorbeeld 3.3: Een voorbeel partitie indeling

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        49    264600   82  Linux swap
/dev/hda3            50        70    158760   83  Linux
/dev/hda4            71      2184  15981840    5  Extended
/dev/hda5            71       209   1050808+  83  Linux
/dev/hda6           210       348   1050808+  83  Linux
/dev/hda7           349       626   2101648+  83  Linux
/dev/hda8           627       904   2101648+  83  Linux
/dev/hda9           905      2184   9676768+  83  Linux

Command (m for help):

Deze schijf is opgedeeld in zeven Linux bestandssystemen (elke met een partitie opgegeven als "Linux") en een swap partitie (opgegeven als "Linux swap").

Alle Partities verwijderen

Om te beginnen verwijderen we alle bestaande partities van de schijf. Type d om een partitie te verwijderen, bijvoorbeeld een reeds bestaande /dev/hda1:

Codevoorbeeld 3.4: Een partitie verwijderen

Command (m for help): d
Partition number (1-4): 1

De partitie is nu gemarkeerd om te verwijderen. Hij zal niet langer te voorschijn komen als u p typt, maar hij zal niet verwijderd worden tot u de veranderingen opslaat. Als u een fout maakt en wil stoppen zonder uw veranderingen op te slaan, type dan q en druk op enter. Uw partitie zal dan niet worden verwijderd.

Nu, er van uit gaande dat u inderdaad de partitie wil verwijderen, type herhaaldelijk p om de partities te zien en daarna d met het nummer dat u wil verwijderen. Uiteindelijk eindigt u met een lege partitie tabel:

Codevoorbeeld 3.5: Een lege partitie tabel

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

Nu de partitie tabel in het geheugen leeg is, zijn we klaar om de partities te maken. We zullen een standaard partitie indeling gebruiken, zoals eerder besproken. Natuurlijk bent u niet verplicht deze te volgen!

De boot partitie maken

Eerst zullen we een kleine boot partitie maken. Type n om een nieuwe partitie te maken, daarna p om een primaire partitie te selecteren, gevolgd door een 1 om de eerste primaire partitie te selecteren. Als u gevraagd wordt om de eerste cylinder aan te geven, drukt u op enter. Als er om de laatste cylinder wordt gevraagd, typt u +32M om een partitie van 32 Mbyte te maken:

Codevoorbeeld 3.6: De boot partitie maken

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (Druk op Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Wanneer u nu p typt, zou u de volgende partitie printout moeten zien:

Codevoorbeeld 3.7: Gecreerde boot partitie

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1        14    105808+  83  Linux

Deze partitie moet opstartbaar zijn. Type a om opstartbaar aan of uit te zetten. Kies hierbij 1. Als u nu weer p indrukt, zult u zien dat een * in de "Boot" kolom staat.

De swap partitie maken

Laten we nu de swap partitie maken. Om dit te doen, typt u n om een nieuwe partitie te maken, daarna p om fdisk te vertellen dat u een nieuwe primaire partitie wil. Daarna typt u 2 om de tweede primaire partitie aan te maken, /dev/hda2 in ons geval. Als er gevraagd wordt om de eerste cylinder, drukt u op enter. Voor de laatste cylinder, typt u +512M om een partitie van 512MB te maken. Als u dit gedaan heeft, typt u t om het partitie type in te stellen, 2 om de net gemaakte partitie te selecteren en typt u 82 om het "Linux swap" te kiezen. Na deze stappen, zou p een partitie tabel moeten laten zien die er zo uit ziet:

Codevoorbeeld 3.8: Partitie indeling na het maken van een swap partitie

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap

De Root Partitie maken

Eindelijk kunnen we de root partitie aanmaken. Om dit te doen, typt u n om weer een nieuwe partitie aan te maken, p om fdisk te vertellen dat u een primaire partitie wilt. Type daarna 3 om een derde primaire partitie te maken, /dev/hda3 in ons geval. Als gevraagd wordt om de eerste cylinder, druk op enter. Daarna vraagt hij om de laatste cylinder, druk wederom op enter om een partitie te maken die de schijf verder vult. Na deze stappen, zou p in typen een partitie tabel moeten geven die er zo uit ziet:

Codevoorbeeld 3.9: Partitie indeling na het maken van de root partitie

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap
/dev/hda3         82      3876  28690200   83  Linux

De partitie indeling opslaan

Om de partitie tabel op te slaan en fdisk af te sluiten, type w.

Codevoorbeeld 3.10: Opslaan en fdisk afsluiten

Command (m for help): w

Nu de partities gemaakt zijn, kunt u doorgaan met Bestandssystemen maken.

4.d. Bestandssystemen maken

Introductie

Nu uw partities gemaakt zijn, is het tijd om een bestandssysteem op te zetten. Als het u niet interesseert wat voor bestandssystemen u kunt kiezen en tevreden bent met wat we als standaard kiezen in dit handboek, ga verder met Bestandssystemen toepassen op een partitie Als het u wel interesseert, lees dan verder...

Bestandssystemen?

De Linux kernel ondersteunt verschillende bestandssystemen. We zullen ext2, ext3, ReiserFS, XFS en JFS uitleggen omdat deze het meest gebruikt worden op Linux systemen.

ext2 is een goed getest en echt Linux bestandssysteem maar heeft geen metadata journaling, wat betekent dat ext2 bestandssysteem controles redelijk veel tijd kunnen kosten. Er is nu een redelijke keuze aan nieuwere journaled bestandssystemen die zeer snel gecontroleerd kunnen worden en dus de voorkeur hebben boven hun niet-journaled tegenhangers. Journaled bestandssystemen voorkomen lange vertragingen als u opstart en u een beschadigd bestandssysteem heeft.

ext3 is de journaled versie van het ext2 bestandssysteem. Het heeft metadata journaling voor een snel herstel naast andere journaling modes zoals full data en ordered data journaling. ext3 is een zeer goed en betrouwbaar bestandssysteem. Het heeft een extra hashed b-tree index optie die betere prestaties levert in bijna iedere situatie. In het kort, ext3 is een goed bestandssysteem.

ReiserFS is een B*-tree gebaseerd bestandssysteem dat zeer goede prestaties levert. Verder verslaat het ext2 en ext3 met factor 10x-15x in de omgang met kleine bestanden (kleiner dan 4k). ReiserFS schaalt extreem goed en heeft metadata journaling. Sinds kernel 2.4.18+, is ReiserFS stabiel en bruikbaar voor zowel algemeen gebruik als voor extremere gevallen zoals grote bestandsystemen, het gebruik van veel kleine bestanden, zeer grote bestanden en directories die tienduizenden bestanden bevatten.

XFS is een filesystem met metadata journaling met een robuuste feature-set en geoptimaliseerd is voor schaalbaarheid. We raden dit alleen aan op Linux systemen met high-end SCSI en/of fibre channel opslag en een UPS (Uninterruptible Power Supply) omdat XFS agressief in-transit data cached in het geheugen. Slecht ontworpen programma's (die geen goede voorbereidingen nemen bij het schrijven van bestanden naar de schijf en daar zijn er redelijk veel van) kunnen een groot deel aan data verliezen als het systeem onverwacht plat gaat.

JFS is IBM's high-performance journaling bestandssysteem. Het is recent productie-klaar geworden en er is nog niet genoeg ervaring mee om er iets (positief, noch negatief) over te zeggen.

Een bestandssysteem toepassen op een partitie

Om een bestandssysteem op een partitie of volume aan te maken, zijn er tools beschikbaar voor elk bestandssysteem:

Filesystem Commando om te maken
ext2 mke2fs
ext3 mke2fs -j -O dir_index
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Om bijvoorbeeld van de boot partitie (/dev/hda1 in ons geval) ext2 te maken en de root partitie (/dev/hda3 in ons geval) ext3 te maken, zou u dit gebruiken:

Codevoorbeeld 4.1: Een bestandssysteem toepassen op een partitie

# mke2fs /dev/hda1
# mke2fs -j -O dir_index /dev/hda3

Maak nu de bestandssystemen aan op uw vers gemaakte partities (of logische volumes).

De swap partitie activeren

mkswap is het commando dat gebruikt wordt om swap partities te initialiseren:

Codevoorbeeld 4.2: De swap partitie initializeren

# mkswap /dev/hda2

Om de swap partitie aan te zetten, gebruik swapon:

Codevoorbeeld 4.3: Activeer de swap partitie

# swapon /dev/hda2

Maak en activeer met behulp van de bovenstaande commandos de swap partitie.

4.e. Mounten (Aankoppelen van bestandssystemen)

Nu onze partities gemaakt zijn en een bestandssysteem bevatten, is het tijd ze te mounten. Gebruik het mount commando. Vergeet niet om de benodigde map aan te maken waar u ze wilt mounten. Als een voorbeeld mounten we de root en boot partities:

Codevoorbeeld 5.1: De partities mounten

# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot

Nota: Als u /tmp op een aparte partitie wilt plaatsen, zorg dat de rechten goed staan na het mounten: chmod 1777 /mnt/gentoo/tmp. Dit geld ook voor /var/tmp.

We zullen ook een proc bestandssysteem (een virtuele interface met de kernel) mounten op /proc. Maar eerst moeten we onze bestanden op de partities plaatsen.

Ga verder met Installeren van de Gentoo Installatie bestanden.

5. Installatie van de Gentoo Installatie bestanden

5.a. Een stage tarball installeren

De datum/tijd goed zetten

Voordat u verder gaat moet u de datum/tijd controleren en goed zetten. Een verkeerd ingestelde klok kan leiden tot vreemde resultaten in de toekomst!

Om de datum/tijd te controleren, type date:

Codevoorbeeld 1.1: De datum/tijd controleren

# date
Fri Mar 29 16:21:18 UTC 2005

Als de weergegeven datum/tijd verkeerd is, update hem door middel van date MMDDuummJJJJ syntax (Maand, Dag, uur, minuten en Jaar). De tijdzone stellen we pas later in, dus op dit moment kunt u het beste UTC tijd gebruiken. Om bijvoorbeeld de klok op 16:21 op 29 maart 2005 te zetten, gebruikt ui:

Codevoorbeeld 1.2: De UTC datum/tijd goed zetten

# date 032916212005

Uw keuze maken

De volgende stap die u moet zetten is het installeren van de stage3 tarball op uw systeem. U heeft de keuze om de benodigde tarball van het internet te downloaden of, wanner u de Gentoo Universele Installatie CDs gebruikt, van de CD te kopiëren. Als u de Universele CD hebt en de stage die u wilt staat op de CD, is downloaden van het internet een verspilling van bandbreedte omdat de stage bestanden toch hetzelfde zijn. In de meeste gevallen kan het commando uname -m worden gebruikt bij het bepalen van het te downloaden stage bestand.

5.b. Standaard: Een Stage van het internet gebruiken

Downloaden van de stage tarball

Ga naar het Gentoo mountpunt waar uw bestandssysteem is aangekoppeld (zeer waarschijnlijk /mnt/gentoo):

Codevoorbeeld 2.1: Naar het Gentoo mountpunt gaan

# cd /mnt/gentoo

Afhankelijk van jouw installatie medium zijn er een aantal tools beschikbaar om een stage te downloaden. Wanner u links tot uw beschikking heeft, kunt u direct naar de Gentoo mirrorlijst surfen en een mirror zoeken die dicht bij u is.

Indien u links niet to uw beschikking heeft, dan zou u wel lynx moeten hebben. Indien u via een proxy moet, exporteer dan de http_proxy en ftp_proxy variabelen:

Codevoorbeeld 2.2: Uw proxy instellen voor lynx

# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"

We nemen nu aan dat u links tot uw beschikking hebt.

Zoek de releases map, gevolgd door uw architectuur (x86/ bijvoorbeeld) en de Gentoo versie (2006.1/) en tot slot de stages/ map. Daar zou u alle voor jouw architecuur beschikbare stage bestanden moeten zien (soms zitten zo nog in submappen voor individuele subarchitecturen). Kies er een en druk op D om te downloaden. Als het bestand binnen is, drukt u op Q om de browser af te sluiten.

Codevoorbeeld 2.3: Naar de mirror lijst surfen met links

# links http://www.gentoo.org/main/en/mirrors.xml

Indien u proxy ondersteuning nodig hebt met links:)
# links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

Check nog een keer of u een stage3 tarball heeft - installaties met een stage1 of stage2 tarball worden niet meer ondersteund.

Wanner u de integriteit van een gedownloade stage tarball wilt controleren, kunt u md5sum gebruiken en vergelijken met de MD5 checksum die jouw mirror levert. Om bijvoorbeeld de correctheid van de x86 stage tarball te controleren:

Codevoorbeeld 2.4: Voorbeeld controle van een stage tarball

# md5sum -c stage3-x86-2006.1.tar.bz2.DIGESTS
stage3-x86-2006.1.tar.bz2: OK

De stage tarball uitpakken

Belangrijk: Als je gebruikt maakt van een x86, en gebruik maakt van de InstallatieLiveCD, zul je de stages niet op de cd staan hebben. Je zult de instructies moeten volgen voor Een stage Tarball van het Internet gebruiken.

Pak de door u gedownloade stage uit op uw systeem. Wij gebruiken GNU's tar om verder te gaan, omdat het de simpelste methode is:

Codevoorbeeld 2.5: De stage uitpakken

# tar xvjpf stage3-*.tar.bz2

Zorg dat u dezelfde opties (xvjpf) gebruikt. De x staat voor Extract (uitpakken), de <v> voor Verbose om te zien wat er gebeurt tijdens het uitpakken (oke, deze is optioneel), de j voor Decompress met bzip2, de p voor Preserve permissions (behoud rechten) en de f om duidelijk te maken dat we een bestand willen uitpakken en niet standaard input.

Nota: De Installatie CDs en boot images van sommige architecturen (MIPS bijvoorbeeld) steunen op de in de BusyBox ingebouwde tar welke op dit moment de -v optie niet ondersteunt. Gebruik dan alleen xjpf als opties.

Nu de stage geïnstalleerd is, gaat u verder met Portage installeren

5.c. Alternatief: Een Stage van de Installatie CD gebruiken

De stage tarball uitpakken

Belangrijk: Wanneer u op een x86 systeem de Installatie LiveCD gebruikt, zijn de stages niet terug te vinden op de CD. U kunt dan de instructies voor een stage tarball van het internet door nemen.

De stages op de CD bevinden zich in de /mnt/cdrom/stages map. Om een lijst te zien van alle beschikbare stages gebruikt u ls:

Codevoorbeeld 3.1: Alle beschikbare stages zien

# ls /mnt/cdrom/stages

Als het systeem een foutmelding geeft dient u mogelijk eerst de CD te mounten:

Codevoorbeeld 3.2: De CD mounten

# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages

Ga nu naar uw Gentoo mountpunt (meestal /mnt/gentoo):

Codevoorbeeld 3.3: naar de map /mnt/gentoo gaan

# cd /mnt/gentoo

We zullen nu de stage tarball van jouw keuze uitpakken. We zullen hierbij GNU's tar gebruiken. Zorg dat u dezelfde opties (xvjpf) gebruikt! Het v argument is optioneel en wordt niet ondersteund in sommige tar versies. In het volgende voorbeeld zullen we de stage tarball stage3-<subarch>-2006.1.tar.bz2 uitpakken. Zorg dat u de bestandsnaam vervangt door uw stage.

Codevoorbeeld 3.4: De stage tarball uitpakken

# tar xvjpf /mnt/cdrom/stages/stage3-<subarch>-2006.1.tar.bz2

Nu de stage geïnstalleerd is, ga verder met Portage installeren

5.d. Portage installeren

Een Portage snapshot uitpakken

Nu kunt u een Portage snapshot installeren, een verzameling van bestanden die Portage vertellen welke software pakketten u kunt installeren, welke profielen beschikbaar zijn, etc.

Download en installeer een Portage snapshot

Ga naar het mountpunt waar u het bestandssysteem hebt gemount (zeer waarschijnlijk /mnt/gentoo):

Codevoorbeeld 4.1: Naar het Gentoo mountpunt

# cd /mnt/gentoo

Start links (of lynx) en ga naar onze Gentoo mirror lijst. Kies een mirror dicht bij u en open de snapshots/ map. Download daar de laatste Portage snapshot (portage-latest.tar.bz2) door hem te selecteren en op D te drukken.

Codevoorbeeld 4.2: Naar de Gentoo mirrorlijst toe gaan

# links http://www.gentoo.org/main/en/mirrors.xml

Sluit nu uw browser af door op Q te drukken. U heeft nu een Portage snapshot opgeslagen in /mnt/gentoo.

Indien u wilt checken of het bestand dat u hebt gedownload gelijk is aan het origineel, dan kunt u dat doen met md5sum door het resultaat daarvan te vergelijken met het resultaat dat u op de mirror waar u van download kunt vinden.

In de volgende stap zullen we de Portage snapshot uitpakken op uw systeem. Zorg dat u het exacte commando gebruikt; de laatste optie is een hoofdletter C, geen c.

Codevoorbeeld 4.3: Uitpakken van het Portage snapshot

# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

5.e. De compilatie opties configuren

Introductie

Om Gentoo te optimaliseren kunt u een aantal variabelen instellen die invloed hebben op het gedrag van Portage. Al deze variabelen kunnen worden ingesteld als omgevingsvariabele (met behulp van export), maar dat is niet permanent. Om deze instellingen te behouden biedt Portage /etc/make.conf , een configuratie bestand voor Portage. Het is dit bestand die we nu gaan bewerken.

Nota: Een lijst met commentaar van alle beschikbare variabelen kan worden gevonden in /mnt/gentoo/etc/make.conf.example. Voor een succesvolle Gentoo installatie moet u alleen de variabelen instellen die hieronder worden genoemd.

Start uw favoriete editor (in deze handleiding gebruiken we nano) zodat we de optimalisatie variabelen die hierna worden besproken kunnen aanpassen.

Codevoorbeeld 5.1: /etc/make.conf openen

# nano -w /mnt/gentoo/etc/make.conf

Zoals u waarschijnlijk hebt gemerkt is make.conf.example in een algemene manier gestructureerd: commentaar regels beginnen met een "#", andere regels bepalen variabelen door middel van de VARIABELE="inhoud" syntax. Het make.conf bestand gebruikt dezelfde syntax. Enkele van die variabele worden nu besproken.

CHOST

De CHOST variabele bepaalt voor welke architectuur wordt gecompileerd. Deze variabele is al juist ingesteld. Pas deze niet aan aangezien dit uw besturingssysteem kan beschadigen. Als de CHOST variabele verkeerd lijkt, kan het zijn dat u de verkeerde stage3 gebruikt.

CFLAGS and CXXFLAGS

De CFLAGS en respectievelijk CXXFLAGS variabelen bepalen de optimalisatie vlaggen voor de gcc C en respectievelijk C++ compiler. Hoewel we deze in het algemeen hier bepalen, zult u alleen de maximale prestaties krijgen wanneer u deze vlaggen apart voor elk programma bepaalt. De reden hiervoor is dat elk programma anders is.

In make.conf kunt u die optimalisatie vlaggen plaatsen waarbij u denkt dat uw systeem over het algemeen het meeste baat heeft. Plaats geen experimentele instellingen in deze variabele; te veel optimalisaties kunnen programma's zich slecht laten gedragen (crash, of erger, slecht functioneren).

We zullen niet alle mogelijke optimalisatie opties bespreken. Als u ze allemaal wilt weten, lees de GNU Online Manual(s) (Engelstalig) of de gcc info pagina (info gcc -- werkt alleen op een werkend Linux systeem). Het make.conf.example bestand bevat ook een boel voorbeelden en informatie; vergeet dit niet ook te lezen.

De eerste instelling is de -march= vlag welke de naam van de doel architectuur bepaalt. Mogelijke opties worden beschreven in het make.conf.example bestand (als commentaar). Voor bijvoorbeeld de x86 Athlon XP architectuur:

Codevoorbeeld 5.2: De GCC march instelling

-march=athlon-xp

Een tweede is de -O vlag (dat is een hoofdletter O, geen nul) welke de gcc optimalisatie klasse vlag bepaalt. Mogelijke klassen zijn s (voor bestandsgrootte-optimalisatie (in Engels size)), 0 (nul - geen optimalisaties), 1, 2 of 3 voor snelheids-optimalisatie vlaggen (iedere klasse heeft dezelfde vlaggen als de voorgaande, plus wat extras). Bijvoorbeeld een klasse-2 optimalisatie:

Codevoorbeeld 5.3: De GCC O instelling

-O2

Een andere populaire optimalisatie vlag is -pipe (gebruikt pipes in plaats van tijdelijke bestanden voor de communicatie tussen de verschillen stages van het compileren).

Let er op dat het gebruik van -fomit-frame-pointer (welke de frame pointer niet in een register zet voor functies die dat niet nodig hebben) serieuze gevolgen kan hebben voor het debuggen van applicaties!

Op het moment dat u de CFLAGS en CXXFLAGS bepaalt, zou u enkele optimalisatie vlaggen kunnen combineren, zoals in het volgende voorbeeld:

Codevoorbeeld 5.4: Defining the CFLAGS and CXXFLAGS variable

CFLAGS="-march=athlon-xp -pipe -O2"
CXXFLAGS="${CFLAGS}"                  # Gebruik die instelling voor bijde variabelen

MAKEOPTS

Met MAKEOPTS kunt u instellen hoeveel parallelle compilaties tegelijk plaats moeten vinden als u een pakket installeert. Een goede keuze is het aantal CPU's in het systeem plus een, maar deze vuistregel is niet altijd perfect.

Codevoorbeeld 5.5: MAKEOPTS voor een algemeen, 1-CPU systeem

MAKEOPTS="-j2"

Klaar, op uw plaatsen, af!

Update uw /mnt/gentoo/etc/make.conf naar wens en sla hem op (nano gebruikers zouden Ctrl-X moeten gebruiken). U bent nu klaar om verder te gaan met Installatie van het Gentoo Basis Systeem.

6. Installatie van het Gentoo Basis Systeem

6.a. Chrooting

Optioneel: Mirrors selecteren

Om broncodes snel te kunnen downloaden, is het aanbevolen om een snelle mirror te kiezen. Portage zal in het make.conf bestand zoeken naar de GENTOO_MIRRORS variabele, de mirrors die deze bevat worden gebruikt. U kunt naar onze mirror lijst surfen en naar een mirror (of mirrors) die dicht bij u is (omdat deze vaak de snelste zijn), maar we bieden ook een mooie tool genaamd mirrorselect aan. Deze biedt u een mooie interface om de juiste mirrors te kiezen.

Codevoorbeeld 1.1: mirrorselect gebruiken voor de GENTOO_MIRRORS variabele

# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

Waarschuwing: Kies geen IPv6 mirrors. Onze huidige stages ondersteunen geen IPv6.

Een tweede belangrijke instelling, is de SYNC instelling in make.conf. Deze variabele bevat de rsync server die u wilt gebruiken wanneer u de Portage boom (de verzameling ebuilds, alle informatie die Portage nodig heeft om software te downloaden en te installeren) update. Hoewel u handmatig een SYNC server kunt opgeven, kan mirrorselect dit veel makkelijker maken:

Codevoorbeeld 1.2: Met behulp van mirrorselect een rsync mirror kiezen

# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

Het is sterk aan te bevelen om na het draaien van mirrorselect alle instellingen in /mnt/gentoo/etc/make.conf nogmaals te controleren!

DNS Info kopieren

Voor we kunnen chrooten moet eerst de DNS informatie naar /etc/resolv.conf gekopieerd worden. Dit is nodig omdat de nieuwe omgeving de nameservers voor uw netwerk moet kennen. In /etc/resolv.conf staan die nameservers voor uw netwerk.

Codevoorbeeld 1.3: Kopieer de DNS informatie

(De "-L" optie is nodig zodat zeker is dat we geen symbolische link 
kopiëren)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Het /proc en /dev bestandssysteem mounten

Mount het /proc bestandssysteem op /mnt/gentoo/proc om de installatie toe te staan informatie die de kernel levert te gebruiken, zelfs in de gechroote omgeving. Mount-bind hierna het /dev bestandssysteem.

Codevoorbeeld 1.4: /proc en /dev mounten

# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev

De Nieuwe Omgeving binnen gaan (chrooten)

Nu alle partities aangemaakt zijn en de basis omgeving geïnstalleerd is, kunnen we naar de nieuwe omgeving overstappen. Dit gebeurt door te chrooten, dit betekent dat we van de installatie omgeving (Installatie CD of een ander installatie medium) overstappen naar de geïnstalleerde omgeving (namelijk uw aangemaakte partities).

Dit chrooten gebeurt in drie stappen. Eerst passen we de root aan van / (op het installatie medium) naar /mnt/gentoo (op uw partities) met chroot. Daarna maken we de nieuwe omgeving aan met env-update welke alle omgevingsvariabelen aanmaakt. Als laatste laden we die variabelen in het geheugen met source.

Codevoorbeeld 1.5: De nieuwe omgeving binnen chrooten

# chroot /mnt/gentoo /bin/bash
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"

Proficiat! U bent nu in uw eigen Gentoo Linux omgeving. Uiteraard bent u nog niet klaar, daarom wachten er nog een aantal secties op u :-)

6.b. Configureren van Portage

Updaten van de Portage tree

U dient nu de Portage tree to updaten naar de meest recente versie. emerge --sync doet dit voor u.

Codevoorbeeld 2.1: Updaten van de Portage tree

# emerge --sync
(Als u een trage terminal gebruikt, zoals sommige framebuffers of een
seriële console, dan kunt u de --quiet optie toevoegen om dit proces wat te 
versnellen..
emerge --sync --quiet

Als u achter een firewall zit die rsync verkeer blokkeert, kunt u emerge-webrsync gebruiken om een portage snapshot te downloaden.

Als er een waarschuwing komt dat er een update is voor Portage kunt u dit veilig negeren. We zullen Portage later tijdens de installatie wel updaten.

Het juiste profiel kiezen

Om te beginnen, is een kleine definitie op zijn plaats.

Een profiel is een bouwsteen voor ieder Gentoo systeem. Niet alleen bepaalt het de standaard waarden voor CHOST, CFLAGS en andere belangrijke variabelen, het beperkt het systeem ook tot bepaalde versies van pakketten. Dit wordt allemaal onderhouden door de Gentoo ontwikkelaars.

Tot nu toe werd zo'n profiel nauwelijks aangeraakt door de gebruiker. Echter, x86, hppa en alpha gebruikers kiezen tussen twee profielen. Een voor een 2.4 kernel en de andere voor een 2.6 kernel. Deze vereiste is ingesteld zodat er een betere integratie van 2.6 kernels kan plaatsvinden. De ppc en ppc64 architecturen hebben ook verschillende profielen, deze komen later aan bod.

U kunt zien welk profiel u nu gebruikt door het volgende commando uit te voeren:

Codevoorbeeld 2.2: Uw systeem profiel bekijken

# ls -FGg /etc/make.profile
lrwxrwxrwx  1 48 Apr  8 18:51 /etc/make.profile -> ../usr/portage/profiles/default-linux/x86/2005.0/

Wanneer gebruik maakt van een van de drie bovenstaande architecturen, zal het standaard profiel een Linux 2.6-gebaseerd systeem. Dit is de aangeraden standaard, maar u heeft uiteraard de mogelijkheid om een ander profiel te kiezen

Sommige gebruikers willen mischien een systeem wat gebaseerd is op de het oudere Linux 2.4-profiel. Indien u hier een goede reden toe hebt, moet u eerst kijken of zo'n profiel bestaat. Op x86 kunt u dit doen met het volgende commando:

Codevoorbeeld 2.3: Kijken of er een extra profiel bestaat

# ls -d /usr/portage/profiles/default-linux/x86/no-nptl/2.4
/usr/portage/profiles/default-linux/x86/no-nptl/2.4

Het bovenstaande voorbeeld laat zien dat het extra 2.4 profiel bestaat (er wordt niet geklaagd dat er een bestand of map mist). Het is aanbevolen om het standaard profiel te houden, maar wanneer u wilt wisselen, kunt u dat op volgende manier doen:

Codevoorbeeld 2.4: Op een 2.4 profiel overstappen

(Zorg dat u de juiste architectuur kiest, het voorbeeld is voor x86)
# ln -snf /usr/portage/profiles/default-linux/x86/no-nptl/2.4 /etc/make.profile
(Lijst van bestanden in het 2.4 profiel)     
# ls -FGg /etc/make.profile/
total 12
-rw-r--r--  1 939 Dec 10 14:06 packages
-rw-r--r--  1 347 Dec  3  2004 parent
-rw-r--r--  1 573 Dec  3  2004 virtuals

Voor ppc zijn er enkele nieuwe profielen beschikbaar sinds 2006.0.

Codevoorbeeld 2.5: PPC profielen

(Standaard PPC profiel, voor alle PPC's, minimaal)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0 /etc/make.profile
(G3 profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G3 /etc/make.profile
(G3 Pegasos profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G3/Pegasos/ /etc/make.profile
(G4 (Altivec) profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G4 /etc/make.profile
(G4 (Altivec) Pegasos profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G4/Pegasos/ /etc/make.profile

Voor ppc64 zijn de onderstaande profielen nieuw sinds 2006.0.

Codevoorbeeld 2.6: PPC64 Profiles

(Standaard 64bit gebruikersprofiel PPC64 profiel, voor alle PPC64's)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/64bit-userland /etc/make.profile
(Standaard 32bit gebruikersprofiel PPC64 profiel, voor alle PPC64's)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/32bit-userland /etc/make.profile
(Ieder type gebruikersprofiel heeft de volgende subprofielen, met
(gebruikersprofiel) vervangen door het hierboven gekozen profiel
(970 profiel voor JS20)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(gebruikersprofiel)/970 /etc/make.profile
(G5 profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(gebruikersprofiel)/970/pmac /etc/make.profile
(POWER3 profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(gebruikersprofiel)/power3 /etc/make.profile
(POWER4 profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(gebruikersprofiel)/power4 /etc/make.profile
(POWER5 profiel)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(gebruikersprofiel)/power5 /etc/make.profile
(Het multilib profiel is nog niet stabiel in deze release.)

De USE variabelen configureren

USE is een van de meest krachtige variabelen die Gentoo biedt. Verschillende programma's kunnen met optionele ondersteuningen voor bepaalde zaken gecompileerd worden. Bijvoorbeeld, sommigen met gtk- of qt-ondersteuning. Anderen met of zonder SSL ondersteuning. Sommige programma's kunnen zelfs met framebuffer ondersteuning (svgalib) in plaats van X11 support (X-server) gecompileerd worden.

De meeste distributies compileren hun pakketten met zoveel mogelijke ondersteuningen, wat zorgt voor grotere programma's, lange laadtijden en meer afhankelijkheden. Bij Gentoo bent u vrij alleen de opties die u zelf wilt te gebruiken. Dit is waar USE om de hoek komt kijken.

In de USE variabele definieert u sleutelwoorden die aan compile-opties gelinked zijn. Bijvoorbeeld, ssl zal ssl-support compileren bij alle programma's die dat ondersteunen. -X verwijderd X-server support (let op de min). gnome gtk -kde -qt zal uw programma's met gnome (en gtk) support, maar niet met kde (en qt) support compileren, zodat uw systeem volledig is getweaked voor GNOME.

De standaard USE instellingen staan in de make.defaults bestanden van uw profiel. U zult make.defaults bestanden vinden in de map waarnaar /etc/profile verwijst en tevens in alle bovenliggende mappen. De standaard USE instelling is de som van alle USE instellingen in alle make.defaults bestanden. Wat u zelf in /etc/make.conf plaatst, wordt berekend tegen de standaard instellingen. Wanner u iets toevoegt aan USE wordt het in de standaard opgenomen. En als u iets verwijdert uit USE wordt dit uit de standaard weggehaald (indien het er in zat). Pas nooit iets aan binnen /etc/make.profile; dit bestand wordt overschreven bij een een update van Portage!

Een volledige beschrijving van USE is te vinden in het tweede deel van het Gentoo Handboek, USE vlaggen. Alle beschikbare USE vlaggen zijn te vinden op het systeem onder /usr/portage/profiles/use.desc.

Codevoorbeeld 2.7: Alle beschikbare USE vlaggen bekijken

# less /usr/portage/profiles/use.desc
(U kunt scrollen met de pijltjes toetsen en afsluiten met 'q'

Als voorbeeld USE instelling: een KDE-gebaseerd systeem met DVD, ALSA en CD Recording support:

Codevoorbeeld 2.8: /etc/make.conf openen

# nano -w /etc/make.conf

Codevoorbeeld 2.9: USE instelling

USE="-gtk -gnome qt kde dvd alsa cdr"

Optional: GLIBC Locales

U zult waarschijnlijk slechts één of misschien twee locales op uw systeem gebruiken. Wanner u glibc compileert zal echter een volledige set van alle beschikbare locales gemaakt worden. U kunt userlocales als USE vlag instellen en alleen de locales die u nodig heeft in /etc/locales.build plaatsen. Doe dit alleen als u weet welke locales u wilt.

Codevoorbeeld 2.10: Activeren van de userlocales USE vlag specifiek voor glibc

# mkdir -p /etc/portage
# echo "sys-libs/glibc userlocales" >> /etc/portage/package.use

kies nu de locales die u nodig heeft:

Codevoorbeeld 2.11: /etc/locales.build Openen

# nano -w /etc/locales.build

De volgende locales zijn een voorbeeld om Engelse (Verenigde Staten) en Duitse (Duitsland) locales te krijgen met bijpassende karaktersets (zoals UTF-8).

Codevoorbeeld 2.12: Uw locales kiezen

en_US/ISO-8859-1
en_US.UTF-8/UTF-8
de_DE/ISO-8859-1
de_DE@euro/ISO-8859-15

Ga nu verder met de Kernel configureren.

7. Configuratie van de Kernel

7.a. Tijdzone

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

Codevoorbeeld 1.1: De tijdzone instellen

# ls /usr/share/zoneinfo
(Stel dat u Amsterdam wilt gebruiken)
# cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

7.b. 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 uw hardware. Gentoo biedt zijn gebruikers verschillende kernelsources. Een volledige lijst met beschrijvingen is beschikbaar in de Gentoo Kernel Guide.

Voor x86-gebaseerde systemen hebben we, onder andere, gentoo-sources (een kernel gepatched met snelheidsverhogende extra's).

Kies een kernel naar keuze en installeer deze met emerge.

Codevoorbeeld 2.1: Een kernel source installeren

# emerge gentoo-sources

Wanneer u een kijkje neemt in /usr/src zou u een symlink genaamd linux moeten zien. Deze verwijst naar uw kernel source. We zullen aannemen dat de geïnstalleerde kernelsource gentoo-sources-2.6.17-r5 is. Uw versie kan echter een andere zijn!

Codevoorbeeld 2.2: De kernel source symlink bekijken

# ls -l /usr/src/linux
+lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-2.6.17-r5

Nu is het tijd om uw kernel te configureren en te compileren. U kunt genkernel 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.

Als u de kernel handmatig wilt configureren, gaat u verder met Standaard: handmatige configuratie. Als u genkernel wilt gebruiken, dan kunt u verder lezen in Alternatief: genkernel gebruiken.

7.c. Standaard: handmatige configuratie

Introductie

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 ;)

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

Ga nu naar de kernel sourcemap en voer make menuconfig uit. Dit zal een configuratiemenu openen.

Codevoorbeeld 3.1: menuconfig starten

# cd /usr/src/linux
# make menuconfig

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

Vereiste opties aan zetten

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:

Codevoorbeeld 3.2: Experimentele code/drivers activeren

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers
General setup  --->
  [*] Support for hot-pluggable devices

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.

Selecteer nu de juiste processorfamilie:

Codevoorbeeld 3.3: De correcte processor familie kiezen

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

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

Codevoorbeeld 3.4: Benodigde bestandssystemen kiezen

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] 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

Vergeet niet voor uw schijven DMA aan te zetten:

Codevoorbeeld 3.5: DMA aanzetten

Device Drivers --->
  ATA/ATAPI/MFM/RLL support --->
    [*] Generic PCI bus-master DMA support

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:

Codevoorbeeld 3.6: Selecting PPPoE necessary drivers

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 ppp als die wordt geconfigureerd om PPPoE in kernelmodus te draaien.

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

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:

Codevoorbeeld 3.7: SMP ondersteuning inschakelen

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

Nota: In multi-core systemen telt iedere kern (core) als één processor.

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

Codevoorbeeld 3.8: USB ondersteuning voor Input Devices

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

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.

Codevoorbeeld 3.9: PCMCIA ondersteuning aanzetten

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

Als u klaar bent met het configureren van de kernel, gaat u 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 het compilatie proces:

Codevoorbeeld 3.10: De kernel compileren

# make && make modules_install

Als uw kernel klaar is met compileren, kopieert u de kernel-image naar /boot. 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 kernel-2.6.17-gentoo-r5 te vervangen door de naam en versie van uw kernel.

Codevoorbeeld 3.11: Het installeren van de kernel

# cp arch/i386/boot/bzImage /boot/kernel-2.6.17-gentoo-r5

Nu kunt u verder gaan met Kernel Modules.

7.d. Alternatief: genkernel gebruiken

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

Nu de kernel source is geïnstalleerd, is het tijd om uw kernel te compileren met behulp van ons genkernel script. Deze bouwt automatisch een kernel voor u. genkernel werkt door een kernel bijna identiek te configureren aan de manier waarop onze Installatie CD kernel is geconfigureerd. Dit betekent dat wanneer u genkernel 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.

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

Codevoorbeeld 4.1: Genkernel emergen

# emerge genkernel

Kopieer vervolgens de kernel configuratie van de installatie CD naar de locatie waar genkernel zoekt naar de standaard kernel configuratie.

Codevoorbeeld 4.2: De Installatie CD kernel config kopieren

# zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6

Compileer nu de kernel sources 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 uw bootpartitie geen ext2 of ext3 als bestandssysteem gebruikt, moet u mogelijk handmatig deze ondersteuning in de kernel (dus niet als een module) moet toevoegen. Gebruik hiervoor genkernel --menuconfig all en voeg de ondersteuning toe. Gebruikers van EVMS2 of LVM2 moeten ook --evms2 of --lvm2 als argument toevoegen.

Codevoorbeeld 4.3: Genkernel draaien

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

Codevoorbeeld 4.4: De gecreerde kernel image naam en initrd controleren

# ls /boot/kernel* /boot/initramfs*

7.e. Kernel Modules

De modules configureren

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

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

Codevoorbeeld 5.1: Alle beschikbare modules vinden

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

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

Codevoorbeeld 5.2: /etc/modules.autoload.d/kernel-2.6 bewerken

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

Codevoorbeeld 5.3: /etc/modules.autoload.d/kernel-2.6

3c59x

Ga verder met Configuratie van het Systeem.

8. Configuratie van het Systeem

8.a. Bestandssysteem informatie

Wat is fstab?

Onder linux dienen alle partities die in gebruik zijn door het systeem in /etc/fstab aanwezig te zijn. Dit bestand bevat alle mountpoints van de betreffende partities (waar ze tevoorschijn komen in de bestandsstructuur), hoe ze gemount moeten worden en met welke speciale opties (automatisch of niet, of gebruikers ze kunnen mounten of niet, etc.).

/etc/fstab aanmaken

/etc/fstab maakt gebruik van een speciale syntax. Elke regel bestaat uit zes velden, gescheiden door whitespaces (spaties, tabs of een mix daarvan). Elk veld heeft zijn eigen betekenis:

  • Het eerste veld geeft de partitie aan (het pad naar het apparaat bestand)
  • Het tweede veld geeft het mountpoint weer, waar de partitie gemount moet worden.
  • Het derde veld geeft aan welk bestandssysteem de partitie gebruikt
  • Het vierde veld geeft aan welke mount opties gebruikt moeten worden door mount wanneer het de betreffende partitie wil mounten. Omdat elk bestandssysteem zijn eigen opties heeft moedigen we u aan de manpage van mount te lezen (man mount) voor complete lijst van opties. Meerdere opties worden door comma's van elkaar gescheiden.
  • Het vijfde veld wordt gebruikt door dump om vast te stellen welke partitie gedumped moet worden. U kunt deze over het algemeen op 0 (nul) laten staan.
  • Het zesde veld wordt gebruikt door fsck om vast te stellen in welke volgorde de bestandssystemen moeten worden gecontroleerd in het geval dat het systeem niet goed afgesloten is. Het root bestandssysteem moet 1 hebben, de rest moet 2 hebben (of 0 als een controle niet nodig is).

De door Gentoo standaard meegeleverde /etc/fstab is geen goed fstab bestand, dus start u nano (of uw favoriete editer) om uw eigen /etc/fstab aan te maken:

Codevoorbeeld 1.1: /etc/fstab openen

# nano -w /etc/fstab

Laten we eens kijken naar de opties voor de /boot partitie. Dit is slechts een voorbeeld, dus als uw architectuur geen /boot partitie nodig heeft (bijvoorbeeld bij Apple PPC apparaten), kopieer dit dan niet een op een.

In onze standaard x86 partitie indeling is /boot de partitie /dev/hda1, met ext2 als bestandssysteem. Deze moet worden gecontroleerd tijdens het opstarten, dus we schrijven op:

Codevoorbeeld 1.2: Een voorbeeld /boot regel voor /etc/fstab

/dev/hda1   /boot     ext2    defaults        1 2

Sommige gebruiken willen niet dat hun /boot partitie automatisch gemount wordt, omdat dit de veiligheid van het systeem vergroot. Deze mensen kunnen defaults vervangen met noauto. Dit betekent dat u eerst handmatig moet mounten voordat u de partitie kunt gebruiken.

Nu, om de prestaties te verbeteren, zullen de meeste gebruikers noatime als optie willen toevoegen. Dit resulteert in een sneller systeem omdat de toegangstijden niet geregistreerd worden (dit heeft u over het algemeen niet nodig):

Codevoorbeeld 1.3: Een verbeterde /boot regel voor /etc/fstab

/dev/hda1   /boot     ext2    defaults,noatime  1 2

Als we zo verder gaan eindigen we met de volgende drie regels (voor /boot, / en de swap partitie):

Codevoorbeeld 1.4: Drie /etc/fstab regels

/dev/hda1   /boot     ext2    defaults,noatime  1 2
/dev/hda2   none      swap    sw                0 0
/dev/hda3   /         ext3    noatime           0 1

Om het af te maken, behoort u een regel te hebben voor /proc, tmpfs (vereist) en voor uw CD-ROM speler (en natuurlijk, voor eventuele andere partities en schijven):

Codevoorbeeld 1.5: Een compleet /etc/fstab voorbeeld

/dev/hda1   /boot     ext2    defaults,noatime     1 2
/dev/hda2   none      swap    sw                   0 0
/dev/hda3   /         ext3    noatime              0 1

none        /proc     proc    defaults             0 0
none        /dev/shm  tmpfs   nodev,nosuid,noexec  0 0

/dev/cdroms/cdrom0    /mnt/cdrom    auto      noauto,user    0 0

auto zorgt ervoor dat mount probeert het bestandssysteem te raden (aangeraden voor verwisselbare media, omdat deze gemaakt kunnen worden met een van de vele bestandssystemen) en user maakt het mogelijk voor niet-root gebruikers om de CD te mounten.

U kunt het bovenstaande voorbeeld gebruiken om uw eigen /etc/fstab in te vullen. Als u SPARC gebruiker bent, dan dient u de volgende regel aan uw /etc/fstab toe te voegen:

Codevoorbeeld 1.6: Het openprom bestandssysteem toevoegen aan /etc/fstab

none        /proc/openprom  openpromfs    defaults      0 0

Controleer uw /etc/fstab nog eens goed, sla hem daarna op en sluit de editor af.

8.b. Netwerk Informatie

Hostname, Domainname etc.

Een van die moeilijke keuzes die de gebruiker moet maken is het kiezen van een naam voor zijn/haar PC. Dit lijkt makkelijk, maar er zijn veel gebruikers die er moeite mee hebben om een geschikte naam voor hun Linux-pc te verzinnen. Om de beslissing wat makkelijker te maken, u kunt de naam achteraf altijd nog aanpassen. Wat ons betreft noemt u het systeem tux en uw domain homenetwork.

Wij gebruiken deze namen in de komende voorbeelden. Allereerst zetten we onze hostname:

Codevoorbeeld 2.1: De hostname instellen

# nano -w /etc/conf.d/hostname

(Stel de HOSTNAME-variabele in op uw hostname)
HOSTNAME="tux"

Daarna stelt u de domeinnaam in:

Codevoorbeeld 2.2: De domeinnaam instellen

# nano -w /etc/conf.d/domainname

(Stel de DNSDOMAIN-variabele in op uw domeinnaam)
DNSDOMAIN="homenetwork"

Als u een NIS domein heeft (als u niet weet wat dit is, dan heeft het ook niet waarschijnlijk) dient u het volgende ook te doen:

Codevoorbeeld 2.3: De NIS domeinnaam instellen

# nano -w /etc/conf.d/domainname

(Stel de NISDOMAIN-variabele in op uw NIS domeinnaam)
NISDOMAIN="my-nisdomain"

Uw Netwerk Configureren

Voordat u een "Hé dit heb ik al gedaan"-gevoel krijgt, moet u beseffen dat u uw netwerk al aan de praat hebt gekregen voor de installatie. Dit was echter alleen voor de installatieprocedure. Nu gaan we uw netwerk configureren voor het permanente gebruik in uw Gentoo systeem.

Nota: Meer gedetailleerde informatie over netwerken, inclusief de geavanceerde onderwerpen zoals bonding, bridging, 802.11q VLANs en draadloze netwerken worden behandeld het hoofdstuk Gentoo netwerk configuratie.

Alle netwerk informatie is verzameld in /etc/conf.d/net. Dit bestand gebruikt een simpele syntax, het is echter wel even wennen als dit de eerste keer is. Maar wees niet bang, wij leggen alles uit. En een bestand met commentaar bij de voorbeelden kunt u vinden in /etc/conf.d/net.example.

DHCP wordt standaard gebruikt en heeft geen verdere aanpassingen nodig.

Wanneer u uw netwerk wilt instellen omdat u specifieke DHCP opties wilt gebruiken of omdat u helemaal geen DHCP gebruikt, dan dient u /etc/conf.d/net te openen met u favoriete editor (nano wordt in dit voorbeeld gebruikt).

Codevoorbeeld 2.4: /etc/conf.d/net openen om aan te passen

# nano -w /etc/conf.d/net

U ziet nu het volgende bestand:

Codevoorbeeld 2.5: Standaard /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

Indien u zelf een IP adres, netmask en gateway wilt opgeven, dient u config_eth0 en routes_eth0 in te stellen:

Codevoorbeeld 2.6: Handmatig de IP informatie voor eth0 instellen

config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )

Om DHCP te gebruiken met bepaalde opties, definieert u config_eth0 en dhcp_eth0:

Codevoorbeeld 2.7: Automatisch verkrijgen van een IP adres voor eth0

config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

Lees /etc/conf.d/net.example voor een lijst met mogelijke opties.

Indien u meerdere netwerkinterfaces heeft, herhaal dan de bovenstaande stappen voor config_eth1, config_eth2, etc.

Sla nu uw configuratie op, en verlaat de editor, u kunt nu verder gaan.

Het netwerk automatisch starten tijdens het opstarten

Om uw netwerkkaarten automatisch te activeren tijdens het opstarten dient deze toe te voegen aan het standaard runlevel. Als u PCMCIA kaarten gebruikt dient u deze sectie over te slaan, omdat deze kaarten al door het PCMCIA init script worden gestart.

Codevoorbeeld 2.8: net.eth0 toevoegen aan het standaard runlevel

# rc-update add net.eth0 default

Als u meerdere netwerkkaarten hebt, dient u gepaste net.eth1, net.eth2 etc. aan te maken. U kunt ln hiervoor gebruiken:

Codevoorbeeld 2.9: Extra initscripts aanmaken

# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default

Extra netwerk informatie invoeren

U dient Linux in te lichten over uw netwerk. Dit wordt gedaan in /etc/hosts en helpt met een vertalen van hostnames naar IP adressen. U moet hier uw eigen systeem definiëren. U kunt ook nog andere systemen die op het netwerk zitten definiëren, indien u geen intern DNS systeem wilt opzetten.

Codevoorbeeld 2.10: /etc/hosts openen

# nano -w /etc/hosts

Codevoorbeeld 2.11: De netwerk informatie invoeren

(Hier geeft u het huidige systeem aan)
127.0.0.1     tux.homenetwork tux localhost

(Hier kunt u extra systemen defiëren,
die op deze manier een statisch IP krijgen.)
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny

Sla uw wijzigingen op, u kunt nu de editor verlaten en verder gaan.

Wanneer u geen PCMCIA gebruikt, kunt u verder gaan met Systeem Informatie. PCMCIA-gebruikers dienen het volgende te lezen aangaande PCMCIA.

Optioneel: PCMCIA aan de praat krijgen

Nota: pcmcia-cs is alleen beschikbaar voor x86, amd64 en ppc platformen.

PCMCIA-gebruikers dienen eerst het pcmcia-cs pakket te installeren. Dit doen ook gebruikers die met een 2.6 kernel werken (zelfs wanneer ze geen PCMCIA drivers van dit pakket zullen gebruiken). Het USE="-X" is nodig om te voorkomen dat xorg-x11 op dit moment al gaat installeren:

Codevoorbeeld 2.12: pcmcia-cs installeren

# USE="-X" emerge pcmcia-cs

Wanneer pcmcia-cs is geïnstalleerd, voeg pcmcia dan toe aan het default runlevel.

Codevoorbeeld 2.13: pcmcia toevoegen aan het default runlevel

# rc-update add pcmcia default

8.c. Systeem informatie

Root wachtwoord (Beheerder)

Eerst stellen we het root wachtwoord in door te typen:

Codevoorbeeld 3.1: Het root wachtwoord instellen

# passwd

Indien u de root de mogelijkheid wilt geven om in te loggen via de seriële console, voeg dan tts/0 toe aan /etc/securetty:

Codevoorbeeld 3.2: tts/0 aan /etc/securetty toevoegen

# echo "tts/0" >> /etc/securetty

Systeem Informatie

Gentoo maakt gebruik van /etc/rc.conf voor algemene instellingen. Open /etc/rc.conf en vermaak u met het commentaar in het betreffende bestand :)

Codevoorbeeld 3.3: /etc/rc.conf openen

# nano -w /etc/rc.conf

Wanneer u klaar bent met het wijzigen van de instellingen in /etc/rc.conf, sla het bestand dan op en sluit het af.

Zoals u ziet is dit bestand van veel commentaar voorzien dat u helpt met het instellen van de configuratie variabelen. U kunt hier uw systeem instellen om unicode te gebruiken, uw standaard editor bepalen en een display manager kiezen (bijvoorbeeld gdm of kdm).

Gentoo gebruikt /etc/conf.d/keymaps om de toetsenbord indeling vast te leggen. Wijzig dit bestand om uw toetsenbord juist in te stellen.

Codevoorbeeld 3.4: /etc/conf.d/keymaps openen

# nano -w /etc/conf.d/keymaps

Let goed op bij het in stellen van de KEYMAP variabele. Als u de verkeerde KEYMAP selecteert, krijgt u vreemde resultaten wanneer u iets typt.

Nota: Gebruikers van USB-SPARC systemen en SPARC clonen dienen wellicht een i386 keymap selecteren (zoals "us") in plaats van "sunkeymap". PPC gebruikt x86 keymaps voor de meeste systemen. Gebruikers die een ADB keymap willen opstarten moeten ADB keycode sendings in de kernel compileren en de keymap in /etc/conf.d/keymaps instellen op mac/ppc.

Wanneer de keymap juist is ingesteld kunt u /etc/conf.d/keymaps opslaan en afsluiten.

Gentoo gebruikt /etc/conf.d/clock om de opties voor de klok op te slaan. Pas dit bestand desgewenst aan.

Codevoorbeeld 3.5: /etc/conf.d/clock openen

# nano -w /etc/conf.d/clock

Als uw hardware klok geen UTC gebruikt, dient u CLOCK="local" toe te voegen in het bestand. Anders zal de klok gaan driften. Ook gaat Windows er vanuit dat de hardware klok locale tijd gebruikt, dus bij een dualboot systeem moet u deze variabele ook instellen.

We zijn nu klaar met het configureren van /etc/conf.d/clock, sla deze op en verlaat de editor.

Als u Gentoo niet op een IBM PPC64 systeem aan het installeren bent, kunt u verder gaan met De installatie van enkele belangrijke systeem onderdelen.

De console configureren

Nota: De volgende sectie is van toepassing op de IBM PPC64 hardware platformen.

Wanneer u Gentoo draait op IBM PPC64 hardware en u gebruikt een virtuele console, dan moet u de juiste regel in /etc/inittab toevoegen zodat een er login prompt opent op de virtuele console.

Codevoorbeeld 3.6: Hvc of hvsi ondersteuning aan zetten in /etc/inittab

hvc0:12345:respawn:/sbin/agetty -L 9600 hvc0
hvsi:12345:respawn:/sbin/agetty -L 19200 hvsi0

U moet nu verifiëren of de juiste console in de lijst staat in /etc/securetty/

U kunt nu verder gaan met De installatie van enkele belangrijke systeem onderdelen.

9. Installatie van enkele belangrijke Systeem onderdelen

9.a. Apparaten beheer

Indien u een 2.4 kernel en Gentoo vanaf stage 3 installeert, zijn er een aantal dingen die u moet doen. Omdat Gentoo standaard gebruik maakt van udev en udev niet wordt ondersteund door 2.4 kernels, dient u gebruik te maken van devfsd en udev te verwijderen.

Codevoorbeeld 1.1: Devfsd installeren

(Voor diegene met een 2.4 kernel en een stage 3 installatie)
# emerge --unmerge udev
# emerge devfsd

9.b. Systeem Logger

Toen we beschreven wat stage3 was, zeiden we dat het alle benodigde systeemtools bevatte waarvan we de keus niet aan onze gebruikers kunnen overlaten. We hebben ook gezegd dat we de andere tools later zouden installeren. Wel, dat moment is nu gekomen.

Om te beginnen dient u te besluiten welke tool het loggen van het systeem voor zijn rekening gaat nemen. Unix en Linux hebben een goede historie qua logmogelijkheden -- als u wilt kunt u alles wat er in het systeem gebeurt vastleggen in de daarvoor bestemde bestanden. Dit alles wordt door de systeemlogger geregeld.

Gentoo biedt keuze uit diverse systeem loggers. Er zijn sysklogd, wat de traditionele systeem logger is, syslog-ng, een geavanceerde systeem logger, en metalog, wat een systeem logger met vele mogelijkheden is. Anderen kunnen beschikbaar zijn via Portage - het aantal beschikbare pakketten groeit per dag.

Als u sysklogd of syslog-ng wilt gebruiken wilt u wellicht logrotate achteraf installeren aangezien die systeem loggers geen mogelijkheid bieden om de log files verversen.

om de door jou gekozen systeem logger te installeren, emerge het en zorg dat het standaard opstart met behulp van rc-update. Het volgende voorbeeld installeert syslog-ng. U Vervangt dit natuurlijk door uw gekozen systeem logger:

Codevoorbeeld 2.1: Installeren van een systeem logger

(Installeer nu de systeem logger van uw keuze)
# emerge syslog-ng
# rc-update add syslog-ng default

9.c. Optioneel: 'Cron Daemon'

De volgende op de lijst is de 'cron daemon'. Alhoewel deze optioneel is en niet benodigd voor het systeem, is het verstandig om er wel één te installeren. Wat is eigenlijk een cron daemon? Een cron daemon voert geplande commando's uit. Het is erg handig wanneer u commando's op een regelmatig tijdstip uit wilt voeren (bijvoorbeeld dagelijks, wekelijks of maandelijks).

Gentoo heeft de beschikking over drie verschillende cron daemons. dcron, fcron en vixie-cron. De installatie is te vergelijken met de installatie van een systeemlogger. Echter, dcron en fcron vereisen een extra configuratiestap, namelijk crontab /etc/crontab. Als u niet weet welke te kiezen, neem dan vixie-cron.

We leveren voor netwerkloze installaties alleen vixie-cron. Als u een andere 'cron deamon' wil, wacht dan en installeer deze later.

Codevoorbeeld 3.1: Installeren van een cron daemon

# emerge vixie-cron
# rc-update add vixie-cron default
(Alleen als u dcron of fcron hebt gekozen:) # crontab /etc/crontab

9.d. Optioneel: bestanden indexeren

Als u de bestanden van uw systeem wil laten indexeren zodat u ze snel terug kunt vinden met behulp van de locate tool, dan dien sys-apps/slocate te installeren.

Codevoorbeeld 4.1: Slocate installeren

# emerge slocate

9.e. Programma's voor het bestandssysteem

Afhankelijk van welk bestandssysteem u gebruikt, dient u de bij behorende hulpprogramma's te installeren (voor het controleren van de integriteit van uw bestandssysteem, nieuwe bestandssystemen aanmaken, etc.).

De volgende tabel geeft de hulpprogramma's aan die u voor ieder van de bestandssystemen dient te installeren:

File System Hulpprogramma Installatie commando
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

Als u EVMS gebruikt, moet u ook evms installeren:

Codevoorbeeld 5.1: EVMS utilities instaleren

# USE="-gtk" emerge evms

Het USE="-gtk" voorkomt de installatie van afhankelijkheden. Wanneer u evms met grafische ondersteuning wilt, kunt u evms later opnieuw compileren.

Indien u geen extra netwerk gerelateerde programma's gebruikt (zoals p-pppoe of een dhcp client), ga dan verder met De bootloader configureren.

9.f. Netwerk programma's

Optioneel: een DHCP client installeren

Indien u eist dat Gentoo automatisch een IP adres voor uw netwerk interface(s) verkrijgt, dient u dhcpcd (of een andere DHCP client -- neem een kijke op Modulaire Netwerk voor een lijst van beschikbare DHCP cliënten) op het systeem te installeren. Als u dit niet nu doet, kunt u straks na de installatie misschien geen verbinding meer maken met het internet.

Codevoorbeeld 6.1: dhcpcd installeren

# emerge dhcpcd

Optioneel: een PPPoE client installeren

Als u rp-pppoe nodig heeft om verbinding te maken met internet, dan dient u dit eerst te installeren.

Codevoorbeeld 6.2: rp-pppoe installeren

# USE="-X" emerge rp-pppoe

USE="-X" voorkomt dat xorg-x11 als afhankelijkheid geïnstalleerd wordt (rp-pppoe heeft grafische hulpprogramma's; als u die wilt installeren, kunt u later rp-pppoe opnieuw compileren of xorg-x11 nu meteen installeren -- wat een tijd duurt op te compileren).

Optioneel: RAID hulpprogramma's voor IBM hardware

Als u gebruik maakt van SCSI RAID op een POWER5 systeem, kunt u overwegen om iprutils te installeren. Dit stelt u in staat om onder andere met de RAID disk array te werken, de status van de schijven in de arrays te krijgen, de microcode updaten en meer.

Codevoorbeeld 6.3: Iprutils installeren

# emerge iprutils

Ga nu verder met De bootloader configureren.

10. Configuratie van de Bootlader

10.a. Uw keuze maken

Introductie

Nu uw kernel is geconfigureerd en gecompileerd en de nodige systeem configuratie bestanden goed zijn ingevuld, is het tijd om een programma te installeren dat de kernel zal starten als wanneer het systeem opstart. Zo'n programma heet een bootloader.

Voor x86 levert Gentoo Linux GRUB en LILO. Maar voor we een van beiden installeren, zullen we u eerst vertellen hoe u de framebuffer moet configureren (aangenomen dat u dat wilt natuurlijk). Met de framebuffer kunt u op de Linux command line (beperkt) grafische features gebruiken (zoals een mooi bootsplash plaatje wat Gentoo levert).

Optioneel: De Framebuffer

Als u de kernel hebt geconfigureerd met framebuffer ondersteuning (of als u genkernel's standaard kernel configuratie heeft gebruikt), kunt u deze activeren door een vga en/of een video argument toe te voegen aan het bootloader configuratie bestand.

Om te beginnen moet u weten welke type framebuffer methode u gebruikt. Als u een gepatchte Gentoo kernel (zoals gentoo-sources), hebt u de mogelijkheid om vesafb-tng als het VESA driver type te gebruiken (wat standaard is voor deze kernel broncodes). Als dit het geval is, gebruikt u vesafb-tng en heeft u geen vga argument nodig. Als dit niet het geval is, gebruikt u de vesafb driver en dient u wel het vga argument in te stellen.

Het vga argument bepaalt de resolutie en kleurdiepte van uw framebuffer scherm voor vesafb. Zoals vermeld in /usr/src/linux/Documentation/fb/vesafb.txt (wat geïnstalleerd wordt als u een kernelbroncodepakket installeert), dient u het het VESA nummer mee te geven wat overeenkomt met de gewenste resolutie en kleurdiepte.

De volgende tabel geeft een lijst met beschikbare resoluties en kleurdieptes en geeft de overeenkomende waarde die aan het vga argument meegegeven dient te worden.

640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B

Het video argument bepaalt de framebuffer opties. Het is vereist voor de framebuffer driver (vesafb voor 2.6 kernels of vesa voor 2.4 kernels), gevolgd door de argumenten die u wenst te gebruiken. Alle variabelen staan in /usr/src/linux/Documentation/fb/vesafb.txt, maar we zullen u de drie meest gebruikte opties uitleggen:

Optie Beschrijving
ywrap Aangenomen dat de grafische kaard zijn geheugen kan "wrappen", wat betekent dat hij verder gaat bij het begin van het geheugen als het bij het einde is aangekomen.
mtrr MTRR registers gebruiken. n kan zijn: 0 - disabled 1 - uncachable 2 - write-back 3 - write-combining 4 - write-through
mode (alleen vesafb-tng)
Stel de resolutie, de kleurdiepte en de ververssnelheid in. Bijvoorbeeld, 1024x786-32@85 voor een 1024x768 resolutie, 32 bit kleurdiepte en een ververssnelheid van 85 Hz.

Het resultaat van deze twee argumenten kan iets zijn als vga=0x318 video=vesafb:mtrr:3,ywrap of video=vesafb:mtrr:3,ywrap,1024x768-32@85. Onthoud (of noteer) deze instelling; U heeft deze snel nodig.

Ga nu verder door GRUB of LILO te installeren.

10.b. Standaard: GRUB gebruiken

GRUB's terminologie begrijpen

Het belangrijkste deel van GRUB begrijpen, is begrijpen hoe GRUB harde schijven en partities noemt. Uw Linux partitie /dev/hda1 (voor IDE schijven) of /dev/sda1 (voor SATA/SCSI schijven) heet zeer waarschijnlijk (hd0,0) onder GRUB. Vergeet niet de haakjes rond hd0,0 - ze zijn vereist.

Harde schijven tellen liever vanaf nul dan vanaf "a" en partities beginnen bij nul in plaats van één. Merk ook op dat met hd apparaten alleen harde schijven worden geteld en geen atapi-ide apparaten zoals cdrom spelers en branders. Ook wordt hetzelfde gebruikt bij SCSI schijven. (Normaal gesproken krijgen ze hogere nummers dan ide schijven tenzij de bios is ingesteld om vanaf scsi schijven op te starten.) Als u de BIOS instelt om van een andere harde schijf op te starten, wordt die harde schijf gezien als hd0.

Laten we een voorbeeld nemen. Stel dat u een harde schijf op /dev/hda hebt, een cdrom speler op /dev/hdb, een brander op /dev/hdc, een tweede harde schijf op /dev/hdd en geen SCSI harde schijf, dan wordt /dev/hdd7 vertaald tot (hd1,6). Het klinkt misschien moeilijk en dat is het ook, maar zoals we zullen zien heeft GRUB een tab aanvullingsmechanisme dat heel erg van pas komt voor diegene met veel schijven en partities en een beetje verloren is geraakt in het GRUB schema.

Ik denk dat we nu wel toe zijn aan het installeren van GRUB.

GRUB installeren

Om GRUB te installeren, zullen we het eerst emergen:

Codevoorbeeld 2.1: Installeren van GRUB

# emerge grub

Hoewel GRUB nu is geïnstalleerd, moeten we nog steeds een configuratie ervoor schrijven en GRUB in onze MBR zetten zodat GRUB ook daadwerkelijk u nieuwe kernel opstart. Maak /boot/grub/grub.conf met nano (of een andere editor):

Codevoorbeeld 2.2: /boot/grub/grub.conf aanmaken

# nano -w /boot/grub/grub.conf

Nu gaan we een grub.conf schrijven. Hieronder vindt u twee mogelijke versies van grub.conf voor de partitie indeling die we hebben gebruikt in deze handleiding. We hebben alleen uitgebreid commentaar toegevoegd in de eerste grub.conf. Zorg dat u uw kernel image bestandsnaam en, indien van toepassing, uw initrd image bestandsnaam gebruikt.

  • De eerste grub.conf is voor mensen die geen genkernel hebben gebruikt om hun kernel te bouwen
  • De tweede grub.conf is voor mensen die wel genkernel hebben gebruikt

Nota: Als uw root bestandssysteem JFS is, moet "ro" aan de kernel regel toevoegen. Hier door kan JFS zijn log nakijken vo While LILO does work on AMD64, Gentoo only supports using GRUB. Now continue by its ordat het schrijven toelaat.

Codevoorbeeld 2.3: grub.conf for non-genkernel users

# Wat is de standaard kernel om op te starten? 0 is de eerste, 1 is de tweede.
default 0
# Hoeveel seconden wachten we tot onze standaard kernel opstart.
timeout 30
# Splash-image om het mooier te maken :)
# Haal dit weg indien u geen grafische kaart heeft geïnstalleerd
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.17-r5
# Partitie waar uw kernel image (of besturingssysteem) op staat
root (hd0,0)
kernel /boot/kernel-2.6.17-gentoo-r5 root=/dev/hda3

title=Gentoo Linux 2.6.17-r5 (rescue)
# Partitie waar uw kernel image (of besturingssysteem) op staat
root (hd0,0)
kernel /boot/kernel-2.6.17-gentoo-r5 root=/dev/hda3 init=/bin/bb

# De volgende vier regels zijn alleen nodig indien u een dualboot met een Windows systeem hebt.
# In dit geval is Windows geïnstalleerd op /dev/hda6.
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Codevoorbeeld 2.4: grub.conf voor genkernel gebruikers

default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.17-r5
root (hd0,0)
kernel /boot/kernel-genkernel-2.6.17-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /boot/initramfs-genkernel-2.6.17-r5

# Alleen van toepassing als u dual-boot
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Nota: Het udev aan het einde van de kernel regel is nodig om langs een bug in enkele genkernel versies te werken. Dit is alleen nodig als u udev gebruikt (wat standaard is).

Heeft u echter een andere partitie indeling en/of kernel image gebruikt, pas dit dan aan. Zorg echter wel dat alles wat een GRUB-apparaat volgt (zoals (hd0,0)) relatief is aan het mount punt, niet naar de root. In andere woorden, (hd0,0)/grub/splash.xpm.gz is in werkelijkheid /boot/grub/splash.xpm.gz omdat (hd0,0) gewoon /boot is.

Verder geldt dat wanneer u een andere partitie indeling gebruikt en de /boot niet in een aparte partitie heeft geplaatst, de /boot prefix in de eerdere code voorbeelden echt nodig is. Wanneer u de standaard partitie indeling heeft gevolgt, is de /boot prefix niet nodig, maar een werkt alles toch via een boot symlink. Kort samengevat, de bovenstaande voorbeelden horen te werken, of u nu een aparte /boot hebt aangemaakt of niet.

Indien u extra opties aan de kernel wilt toevoegen, zet u die simpelweg aan het einde van het kernel commando. We hebben nu al een optie toegevoegd (root=/dev/hda3 of real_root=/dev/hda3), maar u kunt ook andere argumenten meegeven, zo kunt u voor de eerder besproken framebuffer de video en/of vga argumenten toevoegen.

Als u een een 2.6.7 of nieuwere kernel draait en u heeft de harde schrijf gejumperd omdat uw BIOS geen grote harde schijven aan kan, dient u hdX=stroke als optie toevoegen.

genkernel gebruikers moeten weten dat hun kernels dezelfde boot opties gebruiken als de Installatie CD gebruikt. Bijvoorbeeld, als u SCSI apparaten hebt, moet u doscsi als kernel optie toevoegen.

Sla nu het grub.conf bestand op en sluit af. Nu moeten we nog wel GRUB in de MBR (Master Boot Record) installeren zodat GRUB daadwerkelijk start wanneer u het systeem start.

De GRUB ontwikkelaars raden het gebruik van grub-install aan. Als echter grub-install mislukt, zijn er nog steeds mogelijkheden om het handmatig te doen.

Ga verder met Standaard: GRUB installeren met grub-install of Alternatief: GRUB handmatig installeren.

Standaard: GRUB installeren met grub-install

Om GRUB te installeren, moet u het commando grub-install gebruiken. grub-install zal echter niet direct werken omdat we in een chroot zitten. We zullen eerst /etc/mtab (het bestand met de informatie over alle gemounte bestandssystemen) moeten aanmaken. Gelukkig is er een makkelijke manier om dit te doen: kopieer gewoon /proc/mounts naar /etc/mtab, waarbij u de rootfs regel weglaat indien u geen aparte boot partitie heeft aangemaakt. Het volgende commando werkt voor beide gevallen:

Codevoorbeeld 2.5: /etc/mtab aanmaken

# grep -v rootfs /proc/mounts > /etc/mtab

Nu kunnen we GRUB installeren met behulp van grub-install:

Codevoorbeeld 2.6: grub-install draaien

# grub-install --no-floppy /dev/hda

Als u verder nog vragen heeft over GRUB, lees dan de GRUB FAQ (Engelstalig) of de GRUB Handleiding(Engelstalig).

Ga verder met Het systeem herstarten.

Alternatief: GRUB handmatig installeren

Om de configuratie van GRUB te starten, typt u grub in. Je zult begroet worden met de grub> grub command-line prompt. Nu kunt u de commando's intypen om GRUB in uw MBR te krijgen.

Codevoorbeeld 2.7: De GRUB shell starten

# grub

Nota: Als uw systeem geen floppy drive heeft, voeg de --no-floppy optie toe aan het bovenstaande commando zodat grub niet gaat zoeken naar (niet bestaande) floppy drives.

In de voorbeeld configuratie willen we GRUB zo installeren zodat het zijn informatie leest vanaf de boot partitie /dev/hda1, en dat het de GRUB boot record op de MBR van de harde schijf zet zodat het eerste wat we zien als de computer opstart GRUB is. Als u niet de voorbeelden hebt gevolgd, zorg wel dat u de commando's daarop aanpast.

Het tab aanvullingsmechanisme van GRUB kan worden gebruikt binnen GRUB. Bijvoorbeeld, als u "root (" typt, gevold door een TAB, zult u een lijst met apparaten (zoals hd0) terugkrijgen. Als u "root (hd0," intypt, gevolgd door een TAB zult u een lijst krijgen met beschikbare partities (zoals hd0,0).

Nu met behulp van tab aanvulling, zou GRUB installeren niet zo moeilijk moeten zijn. Ga nu verder, configureer GRUB, zullen we? :-)

Codevoorbeeld 2.8: GRUB in de MBR installeren

grub> root (hd0,0)          (Geef op waar uw /boot partitie is)
grub> setup (hd0)           (Installeer GRUB in de MBR)
grub> quit                  (Verlaat de GRUB shell)

Nota: Als u GRUB op een bepaalde partitie wil installeren in plaats van de MBR, dan zult u het setup commando aan moeten passen zodat hij naar de juiste partitie verwijst. Bijvoorbeeld, als u GRUB wil installeren in /dev/hda3, dan zal het commando er zo uit ziet: setup (hd0,2). Sommige gebruikers zullen dit willen doen.

Als u verder nog vragen hebt over GRUB, lees dan de GRUB FAQ (Engelstalig) of de GRUB Handleiding(Engelstalig).

Nota: Wanneer u een nieuwe kernel installeert, hoeft u geen bestanden meer te kopiëren. Draai gewoon make install na het compileren van de kernel en de juiste bestanden worden gekopieerd en de GRUB configuratie wordt aangepast.

Ga verder met Het systeem herstarten.

10.c. Alternatief: LILO gebruiken

LILO installeren

LILO, de LInuxLOader, is het geteste en echte werkpaard van de Linux bootloaders. Helaas mist het enkele mogelijkheden die GRUB wel heeft (en wat de reden is dat GRUB nu veel aan populariteit wint). De reden dat LILO nog steeds gebruikt wordt, is dat GRUB soms niet werkt en LILO wel. Natuurlijk zijn er ook mensen die LILO kennen en daarom niet over willen stappen. Hoe dan ook, Gentoo ondersteunt beide, en blijkbaar heeft u gekozen om LILO te gebruiken.

LILO installeren is een eitje; gebruik gewoon emerge.

Codevoorbeeld 3.1: LILO installeren

# emerge lilo

LILO configureren

Om LILO te configureren moet u /etc/lilo.conf aanmaken. Start uw favoriete editor (in dit handboek gebruiken we nano voor continuïteit) en maak het bestand.

Codevoorbeeld 3.2: /etc/lilo.conf aanmaken

# nano -w /etc/lilo.conf

Enkele secties geleden hebben we u gevraagd de naam van het door u gemaakte kernel-image te onthouden. In het volgende voorbeeld lilo.conf gebruiken we de standaard partitie indeling. Er zijn twee verschillende delen:

  • Eén voor diegene die geen genkernel hebben gebruikt voor hun kernel
  • Eén voor diegene die wel genkernel hebben gebruikt voor hun kernel

Zorg dat u uw eigen kernel image bestandsnaam en, indien van toepassing, uw eigen initrd images bestandsnaam gebruikt.

Nota: Als uw root bestandssysteem JFS is, moet "ro" aan de kernel regel toevoegen. Hier door kan JFS zijn log naspelen voordat hij schrijven toelaat.

Codevoorbeeld 3.3: Voorbeeld /etc/lilo.conf

boot=/dev/hda             # Installeer LILO in de MBR
prompt                    # Geef de gebruiker de kans een andere keuze te maken
timeout=50                # Wacht 5 (vijf) seconden voor het booten van de standaard keuze
default=gentoo            # Als de timeout voobij is, boot de "gentoo" keuze

# Voor niet-genkernel gebruikers
image=/boot/kernel-2.6.12-gentoo-r10
  label=gentoo            # De naam die we deze keuze geven
  read-only               # Start met een read-only root. Pas niet dit niet aan!
  root=/dev/hda3          # Plaats van het root bestandssysteem

image=/boot/kernel-2.6.17-gentoo-r5
label=gentoo.rescue     # De naam die we deze keuze geven
  read-only               # Start met een read-only root. Pas niet dit niet aan!
  root=/dev/hda3          # Plaats van het root bestandssysteem
append="init=/bin/bb"   # De Gentoo Static nood shell starten

# Voor genkernel gebruikers
image=/boot/kernel-genkernel-x86-2.6.17-r5
  label=gentoo
  read-only
  root=/dev/ram0
  append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev"
  initrd=/boot/initramfs-genkernel-2.6.17-r5

# De volgende twee regels zijn alleen voor dual-boot gebruikers met een Windows systeem.
# In dit geval, Windows is geïnstalleerd op /dev/hda6.
other=/dev/hda6
  label=windows

Nota: Het udev aan het einde van de kernel regel is nodig om langs een bug in enkele genkernel versies te werken. Dit is alleen nodig als u udev gebruikt (wat standaard is).

Nota: Indien u een andere partitie indeling en/of kernel image gebruikt, pas dit dan op de juiste plaatsen aan.

Indien u nog andere opties wilt toevoegen aan de kernel, voeg append toe aan de sectie. Als voorbeeld zullen we het video argument toevoegen zodat we framebuffer kunnen gebruiken:

Codevoorbeeld 3.4: append gebruiken om kernel opties toe te voegen

image=/boot/kernel-2.6.17-r5
  label=gentoo
  read-only
  root=/dev/hda3
  append="video=vesafb:mtrr,ywrap,1024x768-32@85"

Indien u een een 2.6.7 of nieuwere kernel draait en u heeft de harde schrijf gejumperd omdat uw BIOS geen grote harde schijven aan kan, moet u hdX=stroke als optie toevoegen.

genkernel gebruikers moeten weten dat hun kernels dezelfde boot opties gebruiken als de Installatie CD gebruikt. Bijvoorbeeld, als u SCSI apparaten heeft, moet u doscsi als kernel optie toevoegen.

Sla nu het bestand op en sluit af. Om het nog af te maken, moet u /sbin/lilo nog starten zodat LILO /etc/lilo.conf kan toepassen op uw systeem (zoals zichzelf installeren op de schijf). Onthoud dat u /sbin/lilo opnieuw moet starten als u een nieuwe kernel installeert of het menu van LILO verandert.

Codevoorbeeld 3.5: De LILO installatie afmaken

# /sbin/lilo

Nota: Als u de kernel opnieuw installeert, hoeft u niet alle bestanden opnieuw te kopiëren. Draai gewoon make install nadat u uw kernel hebt gecompileerd; hij zal dan automatisch de benodigde bestanden kopiëren en de LILO configuratie aanpassen.

Je kunt nu verder gaan met Het systeem herstarten.

10.d. Het systeem herstarten

Verlaat de chroot en unmount alle gemounte partities. Typ dan het magische commando waarop u heeft gewacht: reboot.

Codevoorbeeld 4.1: Unmount alle partities en reboot

# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

Vergeet natuurlijk niet de Gentoo CD er uit te halen, anders start u de CD op in plaats van uw nieuwe Gentoo systeem.

Eenmaal opnieuw opgestart en in uw Gentoo installatie, ga verder met De Gentoo installatie afmaken.

11. Afmaken van uw Gentoo Installatie

11.a. Gebruikersbeheer

Gebruiker toevoegen voor dagelijks gebruik

Als root werken op een Unix/Linux systeem is riskant en moet zoveel mogelijk vermeden worden. Daarom raden wij zeer sterk aan een gebruiker toe te voegen voor dagelijks gebruik.

De groepen waar de gebruiker lid van is bepalen welke activiteiten de gebruiker mag uitvoeren. De volgende tabel geeft een aantal belangrijke groepen die u mogelijk wilt gebruiken:

Groep Beschrijving
audio toegang tot de audio apparaten
cdrom directe toegang tot de optische apparaten
floppy directe toegang tot de floppy drives
games de mogelijkheid om spellen te spelen
portage als gewone gebruiker emerge --pretend kunnen gebruiken
usb toegang tot de USB apparaten
plugdev de mogelijkheid om verwisselbare schijven zoals camera's en USB sticks te mounten en gebruiken
video de toegang tot video capturing hardware en hardware acceleratie uit te voeren
wheel mogelijkheid om su te gebruiken

Om een gebruiker john die lid is van de groepen wheel, users en audio aan te maken dient u eerst als root in te loggen (alleen root kan gebruikers aan maken) en useradd te draaien:

Codevoorbeeld 1.1: Gebruiker voor dagelijks gebruik toevoegen

Login: root
Password: (Uw root wachtwoord)

# useradd -m -G users,wheel,audio -s /bin/bash john
# passwd john
Password: (Wachtwoord voor john invoeren)
Re-enter password: (Wachtwoord opnieuw invoeren ter controle/bevestiging)

Als een gebruiker ooit iets als root moeten uitvoeren kan hij su - gebruiken om tijdelijk root privileges te krijgen. Een andere manier is om het sudo pakket te gebruiken dat, mits goed geconfigureerd, zeer veilig is.

12. Hoe nu verder?

12.a. Documentatie

Gefeliciteerd! U hebt nu een werkend Gentoo systeem. Maar wat nu? Wat zijn nu uw mogelijkheden? Welke dingen als eerste ontdekken? Gentoo geeft haar gebruikers talloze mogelijkheden en heeft daarom ontzettend veel gedocumenteerde (en minder gedocumenteerde) opties.

U zou zeker even moeten kijken in het volgende deel van het Gentoo Handboek, getiteld Werken met Gentoo dat uitlegt hoe u uw software up-to-date houdt, hoe u meer software installeert, wat USE vlaggen zijn, hoe het Gentoo Init systeem werkt, etc.

Als u geïnteresseerd bent in het optimaliseren van uw systeem voor desktop gebruik of wanneer u wilt leren hoe u uw systeem configureert tot een volledig werkend desktop systeem, zie dan onze uitgebreide Gentoo Linux desktop configuratie handleidingen. Daarnaast kunt u onze landinstellingen handleiding kunnen gebruiken, om uw systeem specifiek uw eigen taal klaar te maken.

We hebben ook een Gentoo veiligheidshandboek (Engelstalig) welke het waard is om te lezen.

Voor een volledige lijst van al onze beschikbare documentatie, bekijk onze Gentoo Documentatie pagina.

12.b. Gentoo Online

U bent natuurlijk altijd welkom op onze Gentoo Forums of een van onze Gentoo IRC kanalen (Engelstalig).

We hebben ook verschillende mailinglists (Engelstalig), toegankelijk voor al onze gebruikers. Ook informatie over het lid worden van een mailinglist staat op die pagina.

Nu zijn we even stil en laten u van uw nieuwe installatie genieten :)

B. Werken met Gentoo

1. Een introductie van Portage

1.a. Welkom bij Portage

Portage is waarschijnlijk Gentoo's meest opmerkelijke innovatie in softwarebeheer. Met zijn hoge flexibiliteit en zijn enorme hoeveelheid aan mogelijkheden wordt het vaak gezien als de beste softwarebeheertool die voor Linux beschikbaar is.

Portage is geheel geschreven in Python en Bash en is daardoor heel zichtbaar voor gebruikers omdat het beide script talen zijn.

De meeste gebruikers zullen met Portage werken via de emerge tool. Dit hoofdstuk is niet bedoeld om de beschikbare informatie uit de emerge handleiding te herhalen. Voor een complete lijst met emerge's mogelijkheden, lees de handleiding:

Codevoorbeeld 1.1: De emerge handleiding lezen

$ man emerge

1.b. De Portageboom

Ebuilds

Als we over pakketten praten, bedoelen we meestal softwaretitels die beschikbaar zijn via de Portageboom. De Portageboom is een verzameling van ebuilds, bestanden die alle informatie bevatten die Portage nodig heeft (om te installeren, te zoeken, uit te lezen, ...). Deze ebuilds staan standaard in /usr/portage.

Op het moment dat u Portage vraagt een taak met betrekking tot softwaretitels uit te voeren, zal het de ebuilds op uw systeem als basis gebruiken. Daarom is het belangrijk dat u regelmatig de ebuilds op uw systeem vernieuwt zodat Portage weet over nieuwe software, beveiligingsupdates, etc.

De Portageboom updaten

De Portageboom wordt meestal bijgewerkt met rsync, een snel werkend bestandsoverdrachtprogramma. Bijwerken is zeer simpel omdat het emerge commando een front-end voor rsync biedt:

Codevoorbeeld 2.1: De Portageboom bijwerken

# emerge --sync

Indien u door firewall-beperkingen geen rsync kunt gebruiken, kunt u nog steeds de Portageboom updaten door onze dagelijks gegenereerde Portageboom snapshots te gebruiken. De emerge-webrsync tool haalt deze automatisch op en installeert deze meteen:

Codevoorbeeld 2.2: Emerge-webrsync draaien

# emerge-webrsync

1.c. Software beheren

Zoeken naar software

Om door de Portageboom naar softwaretitels te zoeken, kunt u de in emerge ingebouwde zoekfunctie gebruiken. Standaard geeft emerge --search de naam terug van de pakketten waarbij de titel (volledig of deels) overeenkomt met de opgegeven zoekterm.

Om bijvoorbeeld te zoeken naar alle pakketten met "pdf" in hun naam:

Codevoorbeeld 3.1: Zoeken naar pdf-genaamde pakketten

$ emerge --search pdf

Indien u ook door de beschrijvingen wil zoeken, kunt u --searchdesc (of -S) gebruiken:

Codevoorbeeld 3.2: zoeken naar pdf-gerelateerde pakketten

$ emerge --searchdesc pdf

Als we kijken naar de resultaten, ziet u dat er veel informatie wordt weergegeven. De velden hebben een duidelijke naam dus daar gaan we niet verder op in:

Codevoorbeeld 3.3: Voorbeeld van de emerge --search resultaten

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Software installeren

Wanneer u een softwaretitel gevonden hebt die u wilt installeren, kunt u dit simpel doen met emerge: voeg gewoon de pakket naam toe. Om bijvoorbeeld gnumeric in installeren:

Codevoorbeeld 3.4: gnumeric installeren

# emerge gnumeric

Omdat veel applicaties op elkaar steunen (afhankelijkheden), is het heel goed mogelijk dat enkele andere applicaties ook worden geïnstalleerd. Geen zorgen, Portage kan deze afhankelijkheden prima aan. Als u wilt weten wat Portage zou installeren als u vraagt een bepaald pakket te installeren, voeg --pretend toe:

Codevoorbeeld 3.5: Doe alsof u gnumeric installeert

# emerge --pretend gnumeric

Als u Portage vraagt een pakket te installeren, zal het, indien nodig, de benodigde broncode van internet downloaden en standaard opslaan in /usr/portage/distfiles. Hierna zal het pakket worden uitgepakt, gecompileerd en geinstalleerd. Als u wilt dat Portage de broncode alleen downloadt zonder ze te installeren, voeg de --fetchonly optie toe aan het emerge commando:

Codevoorbeeld 3.6: Alleen de broncodes downloaden voor gnumeric

# emerge --fetchonly gnumeric

De documentatie bij een geïnstalleerd programma vinden

Veel pakketten komen met eigen documentatie. Soms wordt de doc USE vlag gebruikt om te bepalen of de documentatie wel of niet mee geïnstalleerd moet worden. U kunt controleren of een pakket een doc USE vlag heeft door emerge -vp <naam van het pakket> te gebruiken.

Codevoorbeeld 3.7: Controleren of er een doc USE vlag aanwezig is

(alsa-lib is hier natuurlijk gewoon een voorbeeld.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

U kunt de doc USE vlag voor het hele systeem aanzetten in het /etc/make.conf bestand, of dit per pakket aangeven in het /etc/portage/package.use bestand. Je kunt ook de map, /etc/portage/package.use, genaamd aanmaken en de zelfde lijst maken in een bestand in deze map. Het USE vlaggen hoofdstuk geeft meer uitleg over dit onderwerp.

Wanneer een pakket is geïnstalleerd, kunt u de documentatie meestal vinden in een submap in /usr/share/doc, genaamd naar het pakket. U kunt ook een lijst van alle geïnstalleerde bestanden opvragen met behulp van het equery programma, dat onderdeel is van de app-portage/gentoolkit pakket (Engelstalig).

Codevoorbeeld 3.8: De documentatie bij een pakket vinden

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Alternatief: gebruik equery om de bestanden te vinden:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
(Resultaten ingekort)

Software verwijderen

Als u een softwarepakket van uw systeem wilt verwijderen, gebruikt u emerge --unmerge. Dit vertelt Portage dat het alle bestanden van dat pakket moet verwijderen behalve de configuratie bestanden van die applicatie als u ze gewijzigd heeft na de installatie. De configuratie bestanden laten staan heeft het voordeel dat u direct verder kunt werken als u besluit het pakket opnieuw te installeren.

Echter, een grote waarschuwing is van toepassing: Portage zal niet controleren of het pakket dat u wilt verwijderen vereist is voor een ander pakket. Het zal echter wel waarschuwen als u een belangrijk pakket wilt verwijderen wat tot gevolg heeft dat het systeem niet meer kan draaien.

Codevoorbeeld 3.9: Gnumeric van het systeem verwijderen

# emerge --unmerge gnumeric

Als u een pakket van het systeem verwijdert, blijven de afhankelijkheden van dat pakket op uw systeem geïnstalleerd. Om Portage al deze afhankelijkheden te laten vinden, kun u de emerge --depclean functie gebruiken. We gaan het hier later over hebben.

Uw systeem updaten

Om uw systeem in vorm te houden (en niet te vergeten de meest recente beveiligingsupdates te installeren), dient u het systeem regelmatig te updaten. Omdat Portage alleen de ebuilds in de Portageboom controleert, dient u eerst de Portageboom te updaten. Als dat klaar is, kunt u het systeem updaten met emerge --update world. In het volgende voorbeeld zullen we ook de --ask optie gebruiken, die portage een lijst met te updaten pakketten laat tonen, met de vraag of u verder wilt gaan of niet:

Codevoorbeeld 3.10: Uw systeem updaten

# emerge --update --ask world

Portage zal dan zoeken naar een nieuwere versie van de applicaties die u heeft geïnstalleerd. Het zal echter alleen de versies controleren van de applicaties die u specifiek hebt geïnstalleerd - niet de afhankelijkheden. Als u ieder pakket op uw systeem wil updaten, voeg het --deep argument toe:

Codevoorbeeld 3.11: Uw gehele systeem updaten

# emerge --update --deep world

Omdat beveiligingsupdates ook nogal eens voorkomen in pakketten die u niet expliciet zelf hebt geïnstalleerd (maar dus door het installeren van andere pakketten), is het aan te raden om af en toe dit commando te gebruiken.

Als u een van uw USE vlaggen recent heeft gewijzigd wilt u misschien ook --newuse toevoegen. Portage controleert dan of er nieuwe pakketten geïnstalleerd moeten worden of hercompilatie van reeds geïnstalleerde pakketten nodig is:

Codevoorbeeld 3.12: Een complete update uitvoeren

# emerge --update --deep --newuse world

Mini pakketten

Sommige pakketten in de Portageboom hebben niet echt inhoud maar worden gebruikt om een verzameling van pakketten te installeren. Het kde pakket zal bijvoorbeeld de hele KDE-omgeving op uw systeem installeren door KDE-gerelateerde pakketten als afhankelijkheden op uw systeem te installeren.

Als u zo'n pakket wilt verwijderen, zal emerge --unmerge weinig zin hebben omdat de afhankelijkheden op uw systeem blijven staan.

Portage heeft de functionaliteit om zogenaamde wezen (programma's die zijn achtergebleven na het verwijderen van een ander programma) te verwijderen, maar omdat de beschikbaarheid van software dynamisch afhankelijk is, dient u eerst het gehele systeem te updaten, inclusief veranderingen die u heeft doorgevoerd door uw USE vlaggen aan te passen. Hierna kunt u emerge --depclean gebruiken om de wezen te verwijderen. Als dit klaar is, dient u de applicaties te herbouwen die gelinkt waren aan de nu verwijderde software titels.

Dit gebeurt met de drie volgende commando's:

Codevoorbeeld 3.13: Wezen verwijderen

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

revdep-rebuild wordt geleverd door het gentoolkit pakket; vergeet dit niet eerst te emergen:

Codevoorbeeld 3.14: Het gentoolkit pakket installeren

# emerge gentoolkit

1.d. Als Portage klaagt ...

Over SLOTs, virtuals, branches, architecturen en profielen

Zoals eerder gezegd, Portage is extreem krachtig en ondersteunt veel mogelijkheden die andere softwarebeheer tools niet hebben. Om dit te begrijpen zullen we enkele aspecten van Portage uitleggen zonder er te diep op in te gaan.

Met Portage kunnen verschillende versies van een enkel pakket gelijktijdig op het systeem staan. Terwijl andere distributies de gewoonte hebben hun pakketten te noemen naar de versie (zoals freetype en freetype2) gebruikt Portage een technologie genaamd SLOTs. Een ebuild stelt een bepaald SLOT voor zijn versie vast. Ebuilds met verschillende SLOTs kunnen gelijktijdig op het systeem staan. Het freetype pakket heeft bijvoorbeeld ebuilds met SLOT="1" en SLOT="2".

Er zijn ook pakketten die dezelfde functionaliteit bieden, maar op een andere manier geïmplementeerd zijn. metalog, sysklogd en syslog-ng zijn bijvoorbeeld allemaal systeemloggers. Applicaties die steunen op de beschikbaarheid van "een systeemlogger" kunnen bijvoorbeeld niet steunen op metalogd omdat andere systeemloggers net zo goed er op kunnen staan. Portage staat daarom virtuals toe: iedere systeemlogger biedt virtual/syslog zodat applicaties op virtual/syslog kunnen steunen.

Software in de Portageboom kan in verschillende branches zitten. Standaard accepteert uw systeem alleen pakketten die Gentoo stabiel acht. De meeste nieuwe softwaretitels zitten nadat ze worden toegevoegd in de testing branch, wat betekent dat er meer getest moet worden voordat ze stabiel worden bevonden. Hoewel u de ebuilds wel zult zien in de Portageboom, zal Portage ze niet updaten voordat ze in de stable branch worden gezet.

Bepaalde software is slechts beschikbaar voor enkele architecturen. Of de software werkt niet op andere architecturen of het moet verder getest worden of de ontwikkelaar die de software in de Portageboom heeft gezet kan niet controleren of de software op andere architecturen werkt.

Iedere Gentoo installatie volgt een bepaald profiel wat, onder andere, de lijst met voor het systeem noodzakelijke software bevat.

Blokkerende pakketten

Codevoorbeeld 4.1: Portage waarschuwing over blokkerende pakketten (met --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Codevoorbeeld 4.2: Portage waarschuwing over blokkerende pakketten (zonder --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers.

Ebuilds bevatten specifieke velden die Portage vertellen over zijn afhankelijkheden. Er zijn twee mogelijke afhankelijkheden: build afhankelijkheden, bepaald in DEPEND en run-time (draai) afhankelijkheden, bepaald in RDEPEND. Als een van deze afhankelijkheden uitdrukkelijk een pakket of virtual als niet compatibel markeert, volgt er een blokkade.

Om een blokkade op te lossen, kunt u kiezen om het pakket niet te installeren of het pakket wat problemen geeft te unmergen. In het gegeven voorbeeld kunt u kiezen om postfix niet te installeren of ssmtp eerst te verwijderen.

Het is ook mogelijk dat twee pakketten twee pakketten die u wilt installeren elkaar blokkeren. In dit uitzonderlijke geval kunt het beste kijken of u wel echt beide pakketten nodig heeft of ook met slechts één van de twee verder kunt. Zo niet, vul dan een bugrapport in op Gentoo's bugtracking systeem.

Verborgen pakketten

Codevoorbeeld 4.3: Portage waarschuwing over verborgen pakketten

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Codevoorbeeld 4.4: Portage waarschuwing over verborgen pakketten - reden

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Wanneer u een pakket wil installeren dat niet voor uw systeem beschikbaar is, zult u een foutmelding zien. U kunt een andere applicatie die wel voor u beschikbaar is installeren of wachten tot het pakket wel voor u beschikbaar komt. Er is altijd een reden waarom een pakket verborgen is:

  • ~arch keyword betekent dat de applicatie niet voldoende is getest om in de stabiele branch gezet te worden. Wacht een paar dagen of weken en probeer het opnieuw.
  • -arch keyword of -* keyword betekent dat de applicatie niet werkt op uw architectuur. Als u gelooft dat het pakket prima werkt, vul dan een bug in op onze bugzilla website. Doe dit alstublieft wel in het Engels.
  • missing keyword betekent dat de applicatie nog niet op uw architectuur is getest. Vraag het architectuur porting team om het te testen of test het pakket voor ze en vertel uw bevindingen op onze bugzilla website. Ook dit graag in het Engels.
  • package.mask betekent dat het pakket corrupt, onstabiel (of erger) bevonden is en daarom met opzet verborgen is, gebruik dit dus niet.
  • profile betekent dat het pakket niet geschikt bevonden is voor uw profiel. De applicatie kan uw systeem beschadigen als u het installeert of het is gewoon niet compatibel met het door u gebruikte profiel.

Afwezige afhankelijkheden

Codevoorbeeld 4.5: Portage waarschuwing over afwezige afhankelijkheden

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.

De applicatie die u probeert te installeren steunt op een ander pakket dat niet beschikbaar is voor uw systeem. Controleer bugzilla of het bekend is en zo niet, meldt het dan alstublieft. Tenzij u branches combineert zou dit niet voor mogen komen en is dus een bug.

Overkoepelende ebuild naam

Codevoorbeeld 4.6: Portage waarschuwing over overkoepelende ebuild namen

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

De applicatie die u probeert te installeren heeft een naam die overeenkomt met andere pakketten. U dient de categorienaam ook op te geven. Portage zal u meerdere opties geven waaruit u kunt kiezen.

Circulaire afhankelijkheden

Codevoorbeeld 4.7: Portage waarschuwing over Circulaire afhankelijkheden

!!! Error: circular dependencies:

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

Twee (of meer) pakketten die u wilt installeren hangen af van elkaar en kunnen daarom niet geïnstalleerd worden. Dit is zeer waarschijnlijk een fout in de Portageboom. Resync na een tijdje en probeer het opnieuw. U kunt ook op bugzilla kijken of het een bekend probleem is, zo niet, vertel het ons dan alstublieft. Ook nu weer graag in het Engels.

Fetch faalde

Codevoorbeeld 4.8: Portage waarschuwing over fetch failed

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage was niet in staat om de broncode van de gegeven applicatie te downloaden en zal (indien mogelijk) proberen door te gaan met andere applicaties te installeren. Deze fout kan ontstaan doordat een mirror nog niet volledig gesynchroniseerd is of omdat de ebuild naar de verkeerde locatie verwijst. De server waar de broncodes staan kan ook om een of andere reden down zijn.

Probeer het na een uur opnieuw om te zien of het probleem nog steeds bestaat.

Systeem profiel beveiliging

Codevoorbeeld 4.9: Portage waarschuwing over profiel-beveiligde pakketten

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

U heeft gevraagd om een pakket wat deel uitmaakt van de hoofd pakketten van uw systeem te verwijderen. Het staat in uw profiel als noodzakelijk en zou daarom niet van uw systeem verwijderd moeten worden.

2. USE variabelen

2.a. Wat zijn USE vlaggen?

Het idee achter USE vlaggen

Als u Gentoo (of een willekeurige andere distributie, of zelfs besturingssysteem) installeert, maakt u, afhankelijk van de bestemming ervan, keuzes. Een setup voor een server verschilt van een setup voor een workstation. Een spelletjes-pc verschilt van een 3D-rendering workstation.

Dit is niet alleen waar voor de keuzes qua pakketten die u wilt installeren, maar ook welke mogelijkheden een bepaald pakket moet hebben. Als u geen OpenGL nodig heeft, waarom zou u dan OpenGL willen installeren en OpenGL-ondersteuning in de meeste van uw pakketten bouwen? Als u geen KDE wilt gebruiken, waarom zou u pakketten willen compileren met KDE-ondersteuning terwijl ze perfect zonder werken?

Om u te helpen kiezen wat wel en wat niet te installeren en activeren, willen we u op een eenvoudige manier uw omgeving laten definiëren. Dit dwingt u een keuze te maken wat u echt wilt en maakt het voor Portage, ons pakketbeheersysteem, makkelijker om nuttige beslissingen te maken.

Definitie van een USE vlag

Voer de USE vlaggen in. Zo'n vlag is een sleutelwoord dat staat voor de ondersteunings- en afhankelijkheidsinformatie voor een bepaald concept. Als u een bepaalde USE-vlag definieert, zal Portage weten dat u ondersteuning voor het gekozen sleutelwoord wil. Natuurlijk verandert dit ook de afhankelijkheden van een pakket.

Laten we kijken naar een specifiek voorbeeld: het kde sleutelwoord. Als u dit sleutelwoord niet in uw USE variabele hebt, zullen alle pakketten met optionele KDE-ondersteuning zonder KDE-ondersteuning gecompileerd worden. Alle pakketten met een optionele KDE-afhankelijkheid zullen zonder de KDE-bibliotheken (als afhankelijkheid) geïnstalleerd worden. Als u het kde sleutelwoord wel gebruikt, zullen die pakketten wel met KDE-ondersteuning gecompileerd worden, en de KDE-bibliotheken zullen als afhankelijkheid geïnstalleerd worden.

Door de sleutelwoorden op de correcte wijze te kiezen, kunt u een systeem krijgen dat precies aan uw eisen voldoet.

Welke USE vlaggen bestaan?

Er zijn twee typen USE vlaggen: globale en lokale USE vlaggen.

  • Een globale USE vlag wordt door meerdere pakketten gebruikt, over het hele systeem. Dit is wat de meeste mensen als een USE vlag zien.
  • Een lokale USE vlag wordt gebruikt door één enkel pakket om pakket specifieke keuzes te maken.

Een lijst met beschikbare globale USE vlaggen kan online (Engelstalig) of lokaal in /usr/portage/profiles/use.desc worden gevonden.

Een lijst met beschikbare lokale USE vlaggen kan worden gevonden in /usr/portage/profiles/use.local.desc.

2.b. USE vlaggen gebruiken

Permanente USE vlaggen vaststellen

In de hoop dat u overtuigd bent van het belang van USE vlaggen, zullen we u nu vertellen hoe u USE vlaggen definieert.

Zoals eerder vermeld, alle USE vlaggen zijn gedefinieerd binnen de USE variabele. Om het voor gebruikers makkelijker te maken om USE vlaggen te kiezen, bieden we een standaard USE-instelling. Deze instelling is een verzameling van USE vlaggen waarvan wij denken dat ze algemeen gebruikt worden door Gentoo-gebruikers. Deze standaardinstelling is vastgesteld in de make.defaults bestanden, die deel uitmaken van uw profiel.

Naar het profiel waarnaar u systeem luistert, wordt verwezen door de /etc/make.profile symlink. Ieder profiel werkt boven een ander, groter, profiel wat resulteert in een optelsom van alle profielen. Het bovenste profiel is het basis-profiel (/usr/portage/profiles/base).

Laten we een blik werpen op deze standaard instelling:

Codevoorbeeld 2.1: Cumulatieve make.defaults USE variabele voor het 2004.3 profiel

(Dit voorbeeld is de optelsom van de instelling in base, default-linux,
 default-linux/x86 en default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Zoals u kunt zien bevat deze variabele al een redelijk aantal sleutelwoorden. Verander geen make.defaults bestand om de USE variabele naar uw wens aan te passen: veranderingen worden ongedaan gemaakt zodra u Portage update!

Om deze standaard instelling aan te pasen, dient u sleutelwoorden toe te voegen of te verwijderen uit de USE variabele. Dit wordt globaal gedaan door de USE variabele in /etc/make.conf te definiëren. In deze variabele kunt u benodigde extra USE vlaggen toevoegen, of ongewenste USE vlaggen verwijderen. Dit laatste wordt gedaan door een min-teken ("-") voor het sleutelwoord te zetten.

Om bijvoorbeeld ondersteuning voor KDE en QT te verwijderen maar ondersteuning voor ldap toe te voegen, kan de volgende USE vastgesteld worden in /etc/make.conf:

Codevoorbeeld 2.2: Een voorbeeld USE instelling in /etc/make.conf

USE="-kde -qt ldap"

USE vlaggen voor individuele pakketten

Soms wilt u een bepaalde USE-vlag voor een (of een paar) applicaties vaststellen, maar niet voor het hele systeem. Om dit te bereiken, zult u de map /etc/portage moeten aanmaken (indien deze nog niet bestaat) en /etc/portage/package.use aanpassen.

Wanneer u bijvoorbeeld globaal geen ondersteuning wilt voor berkdb, maar u wilt wel dat mysql het ondersteunt, kunt u dit toevoegen:

Codevoorbeeld 2.3: /etc/portage/package.use voorbeeld

dev-db/mysql berkdb

U kunt natuurlijk ook expliciet USE vlaggen uit zetten voor een bepaalde applicatie. Bijvoorbeeld, indien u geen java ondersteuning in PHP wil:

Codevoorbeeld 2.4: /etc/portage/package.use tweede voorbeeld

dev-php/php -java

Tijdelijk USE vlaggen vaststellen

Soms wilt u slechts één keer een bepaalde USE instelling gebruiken. In plaats van twee keer /etc/make.conf aan te passen (instellen en weer er uit halen), kunt u ook de USE variabele als omgevingsvariabele instellen. Onthoud dat de veranderingen verloren gaan wanneer u deze applicatie remerget of update (expliciet of als deel van een systeem update)!

Als voorbeeld zullen we tijdelijk java uit de USE instelling halen tijdens de installatie van Mozilla.

Codevoorbeeld 2.5: USE als omgevings variabele gebruiken

# USE="-java" emerge mozilla

Automatische USE vlaggen

Sommige pakketten voegen automatisch USE vlaggen toe wanneer u deze niet expliciet uitschakeld. Een lijst van pakketten die automatisch USE vlaggen toevoegen is te vinden in /etc/make.profile/use.defaults en in de use.defaults bestanden van de onderliggende profielen.

Codevoorbeeld 2.6: Een stukje van /etc/make.profile/use.defaults

gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif

Prioriteiten

Natuurlijk is er een bepaalde voorrang die bepaalt welke USE-vlag ingesteld zal staan. U wilt niet USE="-java" instellen om er dan achter te komen dat java sowieso gebruikt wordt omdat er een instelling met een hogere prioriteit is. De voorkeur voor de USE-instelling is op volgorde van prioriteit (eerste heeft de laagste prioriteit):

  1. Standaard USE instelling, vastgesteld in de make.defaults bestanden die deel uitmaken van uw profiel
  2. Geërfde USE instelling als een pakket uit /etc/make.profile/use.defaults geïnstalleerd is.
  3. Door de gebruiker ingestelde USE instelling in /etc/make.conf
  4. Door de gebruiker ingestelde USE instelling in /etc/portage/package.use
  5. Door de gebruiker als omgevingsvariabele ingestelde USE instelling

Om de uiteindelijke USE instelling te zien zoals Portage die ziet, draai emerge --info. Dit zal alle relevante variabelen met hun inhoud laten zien (inclusief de USE variabele).

Codevoorbeeld 2.7: Emerge --info draaien

# emerge --info

Uw hele systeem aanpassen aan nieuwe USE vlaggen

Als u de USE vlaggen hebt aangepast en u wilt het hele systeem updaten zodat de nieuwe USE vlaggen worden gebruikt, gebruik dan emerge's --newuse optie:

Codevoorbeeld 2.8: Je hele systeem updaten

# emerge --update --deep --newuse world

Draai nu Portage's depclean om de voorwaardelijke afhankelijkheden die zijn gemerged op uw "oude" systeem, maar nu niet meer nodig zijn, te verwijderen.

Waarschuwing: emerge --depclean draaien is een gevaarlijke operatie en dient met zorg behandeld te worden. Double-check de lijst met "oude" pakketten om er zeker van te zijn dat het geen benodigde pakketten verwijdert. In het volgende voorbeeld voegen we de -p optie toe zodat hij alleen de lijst met pakketten geeft zonder ze te verwijderen.

Codevoorbeeld 2.9: Oude pakketten verwijderen

# emerge -p --depclean

Als depclean klaar is, draai revdep-rebuild om applicaties te herbouwen die dynamisch gelinkt zijn met gedeelde objecten die mogelijk werden geleverd door verwijderde pakketten. revdep-rebuild is een deel van het gentoolkit pakket; vergeet dit niet eerst te emergen.

Codevoorbeeld 2.10: Revdep-rebuild draaien

# revdep-rebuild

Als dit klaar is, gebruikt uw systeem de nieuwe USE vlag instellingen.

2.c. Pakket specifieke USE vlaggen

Beschikbare USE vlaggen bekijken

Laten we het voorbeeld van mozilla nemen: naar welke USE vlaggen luistert het? Om dit uit te vinden gebruiken we emerge met de --pretend en --verbose opties:

Codevoorbeeld 3.1: De gebruikte USE vlaggen bekijken

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/mozilla-1.7.12-r2  USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB

emerge is niet het enige gereedschap voor deze job. Sterker nog, we hebben een speciale tool om pakketinformatie te zien. Deze heet equery en is onderdeel van het gentoolkit pakket. Installeer eerst gentoolkit:

Codevoorbeeld 3.2: Gentoolkit installeren

# emerge gentoolkit

Draai nu equery met het uses argument om de USE vlaggen van een bepaald pakket te zien. Voor het gnumeric pakket bijvoorbeeld:

Codevoorbeeld 3.3: Etcat gebruiken om de gebruikte USE vlaggen te zien

# equery uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

3. Functionaliteiten van Portage

3.a. De Portage Functies

Portage heeft verschillende functies die uw Gentoo-ervaring nog beter kunnen maken. Veel van deze functies zijn afhankelijk van softwaretools die onder andere de prestaties, de betrouwbaarheid en de veiligheid verbeteren.

Om bepaalde Portage-functies in of uit te schakelen moet de FEATURES variabele in /etc/make.conf gewijzigd worden. Deze bevat de verschillende feature keywords, gescheiden door een spatie. In enkele gevallen moet ook software geïnstalleerd worden waar de functie afhankelijk van is.

Niet alle functies die Portage ondersteunt, worden hier besproken. Raadpleeg voor een volledig overzicht de make.conf manpage:

Codevoorbeeld 1.1: De make.conf manpage raadplegen

$ man make.conf

Voer emerge --info uit om te achterhalen welke FEATURES standaard ingeschakeld zijn en zoek naar de FEATURES-variabele. Of gebruik grep om de FEATURES variabele eruit te filteren:

Codevoorbeeld 1.2: Uitvinden welke FEATURES momenteel ingeschakeld zijn

$ emerge --info | grep FEATURES

3.b. De compilaties verdelen

distcc gebruiken

distcc is een programma om te compileren bestanden te verdelen over meerdere, niet perse identieke, computers in een netwerk. De distcc client zendt alle nodige informatie naar de beschikbare distcc-servers (distccd) zodat deze delen van de broncode kunnen compileren voor de client. Het resultaat is een kortere compileertijd.

Meer informatie over distcc (en het met Gentoo laten werken) is te vinden in onze Gentoo Distcc Documentatie (Engelstalig).

Distcc installeren

Distcc wordt geleverd met een grafische schil om te kunnen zien welke taken door de computer worden verzonden om gecompileerd te worden. Als u Gnome gebruikt, dan kunt u 'gnome' in uw USE variabele opnemen. Als u geen Gnome gebruikt en toch graag de grafische schil wilt gebruiken zult u 'gtk' in de USE variabele op moeten nemen.

Codevoorbeeld 2.1: Distcc installeren

# emerge distcc

Portage ondersteuning activeren

Voeg distcc toe aan de FEATURES variabele in /etc/make.conf. Pas daarna de MAKEOPTS variabele aan naar eigen wens. Een vuistregel zegt "-jX" in te vullen, waarbij X het aantal CPU's is waarop distccd draait (inclusief de huidige host) plus een. Maar het zou kunnen zijn dat betere resultaten behaald worden met andere getallen.

Start nu distcc-config en vul de lijst met beschikbare distcc-servers in. Als simpel voorbeeld nemen we aan dat de beschikbare distcc-servers 192.168.1.102 (de huidige host), 192.168.1.103 en 192.168.1.104 (twee "remote" hosts) zijn:

Codevoorbeeld 2.2: Distcc configureren om drie distcc servers te gebruiken

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Vergeet niet om zelf ook de distccd deamon te starten:

Codevoorbeeld 2.3: De distccd daemon starten

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Compileren met gebruik van cache

Over ccache

ccache is een snelle compiler cache. Wanneer een programma gecompileerd wordt, zal het de resultaten cachen zodat iedere keer dat hetzelfde programma opnieuw gecompileerd wordt, de compileertijd flink gereduceerd wordt. Over het algemeen kan dit resulteren in 5 tot 10 maal snellere compilaties.

Als u geïnteresseerd bent in de ins en outs van ccache, bezoek dan de ccache homepage (Engelstalig).

Ccache installeren

Voer emerge ccache uit om ccache te installeren:

Codevoorbeeld 3.1: Ccache installeren

# emerge ccache

Portage-ondersteuning activeren

Open /etc/make.conf en voeg ccache toe aan de FEATURES variabele. Voeg daarna een nieuwe variabele toe met de naam CCACHE_SIZE en geef deze de waarde "2G":

Codevoorbeeld 3.2: CCACHE_SIZE instellen /etc/make.conf

CCACHE_SIZE="2G"

Om ccache-functies te controleren, kunnen er statistieken opgevraagd worden, maar omdat Portage een andere ccache map gebruikt dan de standaard ccache installatie, moet u de CCHACHE_DIR variabele gebruiken:

Codevoorbeeld 3.3: Ccache statistieken bekijken

# CCACHE_DIR="/var/tmp/ccache" ccache -s

De map /var/tmp/ccache is de standaard ccache lokatie voor Portage; wanneer u dit wilt veranderen, kunt u de variabele CCACHE_DIR toevoegen in /etc/make.conf.

Wanneer u echter ccache buiten Portage om gebruikt, wordt de standaard lokatie ${HOME}/.ccache gebruikt. Daarom moet u de variabele CCACHE_DIR ingeven wanneer u de (Portage-)ccache statistieken wilt zien.

Ccache gebruiken voor niet-Portage-compilaties

Om ccache te gebruiken voor niet-Portage-compilaties, dient /usr/lib/ccache/bin aan het begin van de PATH-variabele opgenomen te worden (voor /usr/bin). Dit kan bereikt worden door /etc/env.d/00basic aan te passen, omdat dit het eerste bestand is dat wordt gebruikt om de PATH variabele te definieren:

Codevoorbeeld 3.4: /etc/profile aanpassen

PATH="/usr/lib/ccache/bin:/opt/bin"

3.d. Ondersteuning voor binaire pakketten

Binaire pakketten maken

Portage ondersteunt de installatie van binaire pakketten. Hoewel Portage zelf niet voorziet in binaire pakketten (afgezien van de GRP-snapshots) kan Portage er wel mee omgaan.

Om een binair pakket te maken, kan voor reeds geïnstalleerde pakketten gebruik worden gemaakt van quickpkg. Als het pakket nog niet geïnstalleerd is, kan emerge met behulp van de --buildpkg of --buildpkgonly opties een binair pakket gemaakt worden.

Om van elk pakket dat geïnstalleerd wordt een binair pakket te maken, kan buildpkg aan de FEATURES-variabele toegevoegd worden.

Meer uitgebreide ondersteuning voor het maken van binaire pakketten kan worden verkregen met catalyst. Voor meer informatie over catalyst, lees de Catalyst Reference Manual (Engelstalig) en de Catalyst Veelgestelde Vragen (Engelstalig).

Binaire pakketten installeren

Hoewel Gentoo er geen biedt, kan er een centrale plaats aangemaakt worden waar de binaire pakketten opgeslagen worden. Om Portage hiervan op de hoogte te stellen, dient de variabele PORTAGE_BINHOST te verwijzen naar deze plek. Als bijvoorbeeld de binaire pakketten zich op ftp://buildhost/gentoo bevinden:

Codevoorbeeld 4.1: PORTAGE_BINHOST in /etc/make.conf instellen

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Om een binair pakket te installeren moet de --getbinpkg optie na de --usepkg optie aan het emerge-commando meegegeven worden. De eerste vertelt emerge om het binaire pakket te downloaden van de eerder ingestelde server. De laatste vraagt emerge om eerst te proberen een binair pakket te installeren voordat de broncode gedownload en gecompileerd wordt.

Om bijvoorbeeld gnumeric met een binair pakket te installeren:

Codevoorbeeld 4.2: Het gnumeric binaire pakket installeren

# emerge --usepkg --getbinpkg gnumeric

Meer informatie over emerge's binaire pakket mogelijkheden kan gevonden worden in de manpage van emerge:

Codevoorbeeld 4.3: De emerge manpage lezen

$ man emerge

4. Initialisatie scripts

4.a. Runlevels

Het starten van het Systeem

Als uw systeem opstart, ziet u steeds regels tekst voorbij schieten. Wanneer u heel goed kijkt, zult u zien dat deze tekst steeds dezelfde zijn. De volgorde waarin alles voorbij komt wordt de boot sequence genoemd, is ligt (min of meer) vast.

Allereerst laadt uw bootloader de kernel image die u hebt aangegeven in het configuratie bestand in het geheugen. Daarna vertelt het de processor om de kernel uit te voeren. Wanneer de kernel is geladen en uitgevoerd, worden alle kernel specifieke onderdelen en taken geïnitialiseerd en wordt het init proces gestart.

Dit proces zorgt ervoor dat alle bestandssystemen (als gedefinieerd in /etc/fstab) aangekoppeld en klaar gemaakt worden. Daarna voert het verschillende scripts uit die terug te vinden zijn in /etc/init.d. Deze scripts starten de hulpmiddelen die nodig zijn om uw systeem volledig te starten.

Als alle scripts zijn uitgevoerd, activeert init de terminals (in de meeste gevallen alleen de consoles die achter Alt-F1, Alt-F2, etc zijn verborgen) met agetty dat als toepassing wordt mee gestart, zodat u kunt inloggen via login.

Init Scripts

Echter, init voert de scripts in /etc/init.d niet in willekeurige volgorde uit. Sterker nog, het voert alleen de scripts in /etc/init.d uit die uitgevoerd moeten worden. Het bepaalt welke scripts dat zijn door te kijken naar /etc/runlevels.

Als eerste voert init de scripts uit in /etc/init.d met een symlink naar /etc/runlevels/boo. Meestal worden de scripts in alfabetische volgorde gestart, maar sommige scripts hebben informatie bijgevoegd waarin staat dat een ander script gestart moet zijn voordat zijzelf kunnen starten.

Wanneer alles met een link naar /etc/runlevels/boot is gestart, gaat init verder met de scripts met een symlink naar /etc/runlevels/default. Ook deze worden in alfabetische volgorde gestart, tenzij een script vraagt om een ander script eerder te starten, waarna de volgorde wordt verandert.

Hoe Init Werkt

Natuurlijk kan init dit niet allemaal zelf. Het heeft een configuratie bestand nodig waarin staat wat er moet gebeuren. Dit configuratie bestand is /etc/inittab.

Als u zich de boot volgorde nog kunt herinneren, dan weet u dat init eerst alle bestandssystemen aankoppelt. Dit wordt bepaald door de volgende regel in /etc/inittab:

Codevoorbeeld 1.1: De initialisatie regel in /etc/inittab

si::sysinit:/sbin/rc sysinit

Deze regel laat init sbin/rc sysinit draaien om het systeem te initialiseren. Het /sbin/rc script zorgt voor de initialisatie, dus eigenlijk doet init zelf niet zo veel -- het besteed de taak van het initialiseren uit aan een andere toepassing.

Hierna voert init dus de scripts met symlinks naar /etc/runlevels/boot uit. Dit wordt bepaald door de volgende regel:

Codevoorbeeld 1.2: Verder met het systeem initialiseren

rc::bootwait:/sbin/rc boot

Hier voert eigenlijk rc de benodigde taken uit. Het valt misschien op dat de optie bij rc (boot) hetzelfde is als de submap van /etc/runlevels.

Nu checkt init het configuratie bestand om te bepalen welke runlevel het moet draaien. Hiervoor lijst het de volgende regel in /etc/inittab:

Codevoorbeeld 1.3: De initdefault regel

id:3:initdefault:

In de meeste gevallen (dus voor het overgrote deel van de Gentoo gebruikers) zal het runlevel hier het nummer 3 zijn. Daarom zal init nu kijken wat er gestart moet worden in runlevel 3:

Codevoorbeeld 1.4: De definities voor de runlevels

l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

De regel die runlevel 3 definieert, roept opnieuw het rc script aan om toepassingen te starten (nu met het argument default). Ook hier is het argument bij rc gelijk aan de naam van de submap van /etc/runlevels.

Wanneer rc klaar is, bepaalt init welke consoles geactiveerd worden en welke commando's gegeven moeten worden in die consoles:

Codevoorbeeld 1.5: De definities voor de consoles

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Wat is een runlevel?

U hebt nu kunnen zien dat init een genummerde lijst gebruikt om te bepalen welk runlevel als eerste wordt geactiveerd. Een runlevel is een vooraf ingestelde staat waarin uw systeem draait en bevat enkele scripts (runlevel scripts of initscripts) die moeten worden uitgevoerd wanneer u het runlevel start of beëindigt.

Binnen Gentoo zijn zeven runlevels gedefinieerd: drie interne runlevels, en vier gebruikersrunlevels. De interne runlevels zijn sysinit, shutdown en reboot en doen wat hun name impliceert: respectievelijk het systeem initialiseren, afsluiten en herstarten.

De gebruikersrunlevels hebben een /etc/runlevels submap: boot, default, nonetwork en single. Het boot runlevel start alle systeem toepassingen, die door de andere runlevels gebruikt worden. De drie andere runlevels verschillen door welke toepassingen ze starten: default wordt gebruikt voor dagelijkse toepassingen, nonetwork indien er geen netwerk wordt gebruikt, en single wanneer het systeem gerepareerd moet worden.

Werken met de Init Scripts

De scripts die door rc worden gestart noemen we init scripts. Elk script in /etc/init.d kan worden uitgevoerd met de argumenten start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme of broken.

Om een toepassing te starten, stoppen or herstarten (inclusief afhankelijke toepassingen), kunt u start, stop en restart gebruiken:

Codevoorbeeld 1.6: Start Postfix

# /etc/init.d/postfix start

Nota: Alleen wanneer een toepassing een andere toepassing nodig heeft, wordt deze opnieuw gestart of gestopt. Toepassingen die een andere toepassing blijven gewoon draaien.

Wanneer u een toepassing wilt stoppen, maar de toepassingen die er op steunen niet, dan kunt u het pause argument gebruiken:

Codevoorbeeld 1.7: Postfix stoppen, maar de afhankelijke toepassingen laten door draaien

# /etc/init.d/postfix pause

Wanneer u wilt zien wat de status van een toepassing is (gestart, gestopt, gepauzeerd, ...), kunt u status gebruiken:

Codevoorbeeld 1.8: Status van postfix opvragen

# /etc/init.d/postfix status

Als de informatie aangeeft dat de toepassing draait, maar u weet zeker dat het niet zo is, dan kunt u de status informatie resetten met behulp van het zap argument:

Codevoorbeeld 1.9: Resetten van de status voor postfix

# /etc/init.d/postfix zap

Om te kunnen zien welke afhankelijkheden een toepassing heeft, kunt u iuse of ineed gebruiken. Met ineed kunt u zien welke toepassing nodig zijn om correct te kunnen functioneren. iuse geeft aan welke toepassing gebruikt kunnen worden, maar niet nodig zijn voor het correct functioneren.

Codevoorbeeld 1.10: Een lijst met benodigde toepassing opvragen voor postfix

# /etc/init.d/postfix ineed

Op dezelfde manier kunt u opvragen welke toepassing een bepaalde toepassing gebruiken (needsme) of kunnen gebruiken (usesme):

Codevoorbeeld 1.11: Een lijst met toepassing opvragen die postfix nodig hebben

# /etc/init.d/postfix needsme

Als laatste kunt u opvragen welke afhankelijkheden een toepassing nodig heeft en mist:

Codevoorbeeld 1.12: Een lijst met missende afhankelijkheden opvragen voor postfix

# /etc/init.d/postfix broken

4.b. Werken met rc-update

Wat is rc-update?

Gentoo's init systeem gebruikt een lijst met afhankelijkheden om te bepalen welke toepassing als eerste moet worden gestart. Aangezien dit een arbeidsintensieve taak is, willen we u als gebruiker dit niet handmatig laten doen. Daarom hebben we hulpprogramma's ontwikkeld die het beheer van runlevels en init scripts vergemakkelijken.

Met rc-update kunt u init scripts toevoegen en verwijderen bij een runlevel. Het rc-update programma zal steeds automatisch het depscan.sh script de lijst met afhankelijkheden laten updaten.

Het toevoegen en verwijderen van toepassingen

Tijdens de installatie hebt u al init scripts toegevoegd aan het "default" runlevel. Toen wist u misschien nog niet waar "default" voor stond, maar dat zou u nu moeten weten. Het rc-update script heeft een tweede argument nodig, dat de actie definieert: add, del of show.

Om een init script toe te voegen of te verwijderen, voegt u gewoon add of del als optie toe aan rc-update. Dit wordt gevolgd door het te gebruike init script en het aan te passen runlevel. Bijvoorbeeld:

Codevoorbeeld 2.1: Postfix verwijderen uit het default runlevel

# rc-update del postfix default

Het rc-update show commando geeft u alle beschikbare init scripts en een lijst van de runlevels waarin zij draaien:

Codevoorbeeld 2.2: Init script informatie opvragen

# rc-update show

4.c. Toepassingen configureren

Waarom extra configuraties?

Init scripts kunnen redelijk complex zijn. Daarom is het niet echt wenselijk dat gebruikers de scripts direct moeten aanpassen, de kans op fouten is gewoonweg te groot. Het is echter wel belangrijk om een toepassing te kunnen configureren. U kunt bijvoorbeeld extra opties aan een toepassing willen toevoegen.

Een tweede reden voor configuratie buiten het init script om, is om de mogelijkheid te hebben init scripts te updaten zonder uw configuratie kwijt te raken.

De /etc/conf.d map

Gentoo heeft een simpele manier om toepassingen te configureren: elk init script heeft een configuratiebestand in /etc/conf.d. Het apache2 init script (/etc/init.d/apach2 heeft bijvoorbeeld een configuratiebestand /etc/conf.d/apache2, waarmee u verschillende opties aan de Apache2 server kunt meegeven, als deze wordt gestart:

Codevoorbeeld 3.1: Variabele in /etc/conf.d/apache2

APACHE2_OPTS="-D PHP4"

Deze configuratiebestanden bevatten alleen variabelen (net als /etc/make.conf, waardoor het gemakkelijk is om toepassingen te configureren. Het geeft ons ook de mogelijkheid om meer informatie te geven over de variabelen (als commentaar).

4.d. Init Scripts scrhijven

Moet ik dat doen?

Nee, het schrijven van een init script is normaal niet nodig, omdat Gentoo voor alle toepassingen init scripts mee levert. Wanneer u echter een toepassing installeert zonder Portage te gebruiken, is het heel goed waarschijnlijk dat u wel zelf een init script moet schrijven.

Let op dat u niet het init script gebruikt dat door een toepassing zelf wordt meegeleverd, indien dit niet speciaal voor Gentoo is geschreven: Gentoo's init scripts zijn namelijk niet compatible met init scripts voor andere linux distributies.

Indeling

De basis indeling van een init script wordt hieronder gegeven.

Codevoorbeeld 4.1: Basis indeling van een init script

#!/sbin/runscript

depend() {
  (informatie over afhankelijkheden)
}

start() {
  (Commando's voor het starten van de toepassing)
}

stop() {
  (Commando's voor het stoppen van de toepassing)
}

restart() {
  (Commando's voor het herstarten van de toepassing)
}

Elk init script moet een start() functie hebben. De andere delen zijn niet verplicht.

Afhankelijkheden

Er zijn twee soorten afhankelijkheden die u kunt definiëren: use en need. Zoals eerder uitgelegd, need is stricter dan use. Met behulp van deze afhankelijkheden voert u de toepassing toe waar u van afhankelijk bent, of de virtuele afhankelijkheid.

Een virtuele afhankelijkheid is een afhankelijkheid die door verschillende toepassingen kan worden geleverd. Uw init script kan bijvoorbeeld een systeem logger nodig hebben, maar er zijn meerdere systeem loggers beschikbaar (metalogd, syslog-ng, sysklogd, ...). Aangezien u niet elke logger afzonderlijk moet hebben (het is niet echt logisch om drie systeem loggers te installeren), zorgen we er voor dat deze toepassingen een virtuele afhankelijkheid leveren (provide).

We kijken naar de afhankelijkheden voor de postfix toepassing.

Codevoorbeeld 4.2: Afhankelijkheden voor Postfix

depend() {
  need net
  use logger dns
  provide mta
}

Zoals u kunt zien, geldt dat postfix:

  • de (virtuele) net afhankelijkheid nodig heeft (bijvoorbeeld geleverd door /etc/init.d/net.eth0
  • de (virtuele) logger gebruikt (bijvoorbeeld geleverd door /etc/init.d/syslog-ng)
  • de (virtuele) dns afhankelijkheid gebruikt (bijvoorbeeld geleverd door /etc/init.d/named)
  • een (virtuele) mta afhankelijkheid levert (wat alle mail servers doen)

De volgorde instellen

In sommige gevallen hebt u een toepassing niet direct nodig, maar wilt u de toepassing starten voor (of na) een andere toepassing indien de toepassing op het systeem aanwezig is (let op de voorwaarde - dit is geen afhankelijkheid meer) en laten draaien in dezelfde runlevel (let weer op de voorwaarde - er zijn alleen toepassingen in hetzelfde runlevel bij betrokken). U kunt dit doen met before en after.

Als voorbeeld kijken we naar de instellingen van portmap:

Codevoorbeeld 4.3: De depend() functie in de Portmap toepassing

depend() {
  need net
  before inetd
  before xinetd
}

U kunt ook het sterretje "*" gebruiken om uw toepassing voor alle andere toepassingen in hetzelfde runlevel te plaatsen, maar dit is niet aan te raden.

Codevoorbeeld 4.4: Het draaien van een init script als eerste in een runlevel

depend() {
  before *
}

Standaard functies

Naast de depend functie moet u ook de start functie definiëren. Deze functie bevat alle commando's die nodig zijn om de toepassing te starten. Het is verder aan te raden om de ebegin en eend functies te gebruiken om te laten weten wat er gebeurt tijdens het uitvoeren van de toepassing.

Codevoorbeeld 4.5: Voorbeeld start() functie

start() {
  ebegin "Starting my_service"
  start-stop-daemon --start --quiet --exec /path/to/my_service
  eend $?
}

Indien u meer voorbeelden nodig hebt van de start() functie, kunt u de init scripts uit de map /etc/init.d er op na slaan. En voor de start-stop-daemon is een goede handleiding beschikbaar, die u op elk moment kunt bekijken voor meer informatie:

Codevoorbeeld 4.6: De handleiding voor de start-stop-daemon bekijken

# man start-stop-daemon

Andere functies die u kunt gebruiken zijn: stop() en restart(). U bent echter niet verplicht deze functies aan te roepen! Het init systeem kan zelf deze functies aanvullen wanneer u de start-stop-daemon gebruikt.

De Gentoo init script programmeertaal is gebaseerd op de Bourne Again Shell (bash). U kunt daarom zonder meer bash commando's gebruiken in uw init script.

Eigen functies toevoegen

Wanneer u in uw init script andere functies wilt gebruiken dan de eerder genoemde, kunt u die functie toevoegen via de variabele opts. U kunt dan een functie maken met dezelfde naam, bijvoorbeeld om een functie restartdelay te gebruiken:

Codevoorbeeld 4.7: De restartdelay functie aanmaken

opts="${opts} restartdelay"

restartdelay() {
  stop
  sleep 3    # Wacht drie seconden voor opnieuw te starten
  start
}

Configuratie variabelen voor uw toepassing

U hoeft niets extra te doen om een configuratie bestand in de map /etc/conf.d te kunnen gebruiken: wanneer uw init script wordt gestart worden de volgende bestanden automatisch ingelezen:

  • /etc/conf.d/<Uw init script>
  • /etc/conf.d/basic
  • /etc/rc.conf

Wanneer uw init script een virtuele afhankelijkheid bevat (zoals net) zal het bestand dat hierbij hoort (in dit geval /etc/conf.d/net) ook ingelezen worden.

4.e. Het gedrag van het runlevel veranderen

Wie hebben hier iets aan?

Veel laptop gebruikers zullen de volgende situatie herkennen: thuis wilt u net.eth0 starten, maar onderweg wilt u het netwerk juist niet starten (omdat er toch geen netwerk beschikbaar is). Binnen Gentoo kunt u het gedrag van het runlevel daarom aanpassen naar uw eigen wensen.

U kunt bijvoorbeeld een tweede "default" runlevel aanmaken, met daarin andere init scripts. U kunt dan tijdens het opstarten kiezen welk default runlevel u wilt gebruiken.

Softlevel gebruiken

Allereerst maakt u een map aan voor uw tweede "default" runlevel. Hier maken we als voorbeeld het runlevel offline aan:

Codevoorbeeld 5.1: Een map maken voor een runlevel

# mkdir /etc/runlevels/offline

Nu kunt u de init scripts toevoegen die u wilt gebruiken in het nieuwe runlevel. Een exacte kopie van uw huidige default runlevel, maar dan zonder net.eth0 maakt u zo:

Codevoorbeeld 5.2: Het toevoegen van de juiste init scripts

(Kopieer alle toepassing van "default" naar "offline")
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Verwijder de toepassingen die u niet wilt gebruiken in "offline")
# rc-update del net.eth0 offline
(Laat de toepassingen voor "offline" zien)
# rc-update show offline
(Een gedeelte van de resultaten)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

Nu kunt u het configuratie bestand van uw bootloader aanpassen en het runlevel offline toevoegen. Voor Grub past u /boot/grub/grub.conf aan:

Codevoorbeeld 5.3: Het runlevel offline toevoegen voor Grub

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

En voilà, u bent klaar. U kunt nu tijdens het opstarten kiezen voor uw nieuwe offline runlevel. Dit wordt dan gestart in plaats van default.

Bootlevel gebruiken

Het gebruik van bootlevel is gelijk aan softlevel. Het enige verschil is dat u nu geen tweede runlevel "default" aanmaakt, maar een tweede runlevel "boot".

5. Omgevingsvariabelen

5.a. Omgevingsvariabelen?

Wat zijn dat

Een omgevingsvariabele is een ding dat een naam heeft en informatie bevat die wordt gebruikt door één of meer toepassingen. Veel gebruikers (met name degenen die nieuw zijn binnen Linux) vinden dit vreemd en onhandig. Niets is minder echter waar: door omgevingsvariabelen te gebruiken kunt u eenvoudig de instellingen voor één of meer toepassingen veranderen.

Belangrijke voorbeelden

De onderstaande tabel laat enkele variabelen zien die een Linux systeem gebruikt en geeft daar een korte uitleg bij. Voorbeelden van bruikbare waarden zullen na de tabel worden gegeven.

Variabele Beschrijving
PATH Deze variabele bestaat uit een lijst van mappen waarin een systeem zoekt naar programma's. Wanneer u de naam van een programma in typt (zoals ls, rc-update of emerge) en het programma staat niet in de lijst, zal het programma niet worden uitgevoerd. Tenzij u natuurlijk de volledig naam van de map en het programma opgeeft (zoals /bin/ls).
ROOTPATH Deze variabele doet hetzelfde als PATH, maar dan voor mappen die worden doorzocht wanneer de root een commando intypt.
LDPATH Deze variabele bevat de mappen waar wordt gezocht naar bibliotheken, door de zogenaamde dynamische linker.
MANPATH Deze variabele bevat een lijst met mappen waar het commando man zoekt naar handleidingen.
INFODIR Deze variabele bevat een lijst met mappen waar het commando info zoekt naar info pagina's.
PAGER Deze variabele bevat de verwijzing naar een programma dat de inhoud van bestanden kan weergeven (zoals less of more).
EDITOR Deze variabele bevat de verwijzing naar uw (favoriete) editor (zoals nano of vi).
KDEDIRS Deze variabele bevat een lijst met mappen die door KDE worden gebruikt.
CLASSPATH Deze variabele bevat een lijst met mappen waarin Java classes zijn opgeslagen.
CONFIG_PROTECT Deze variabele bevat een lijst met mappen die beveiligd worden door Portage tijdens updates (let op, spaties in plaats van dubbele punten).
CONFIG_PROTECT_MASK Deze variabele bevat een lijst met mappen die niet beveiligd worden door Portage tijden updates (let op, spaties in plaats van dubbele punten).

Hieronder worden enkele voorbeelden gegeven voor deze variabelen:

Codevoorbeeld 1.1: Voorbeelden

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

5.b. Variabelen globaal definiëren

De map /etc/env.d

Om de definities bij elkaar te kunnen houden, heeft Gentoo de map /etc/env.d. In deze map bevinden zich een aantal bestanden, waaronder bijvoorbeeld 00basic en 05gcc, waarin de variabelen voor de toepassing waar ze naar vernoemd zijn worden ingesteld.

Toen u gcc hebt geïnstalleerd is bijvoorbeeld het bestand 05gcc aangemaakt door de ebuild, met daarin de volgende variabelen:

Codevoorbeeld 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Andere distributies hebben deze variabelen bijvoorbeeld in /etc/profile. Gentoo maakt het eenvoudiger voor u (en voor Portage) door zelf de omgevingsvariabelen bij te houden, zonder dat u de verschillende bestanden moet aanpassen waarin omgevingsvariabelen kunnen staan.

Wanneer u gcc update wordt het bestand/etc/env.d/05gcc automatisch ge-update, zonder dat u iets hoeft te doen.

Dit is niet alleen een voordeel voor Portage, maar ook voor uzelf. Toch moet u soms zelf een omgevingsvariabele invoeren. Als voorbeeld nemen we hier de variabele http_proxy. Deze kunt u eenvoudig definiëren door een bestand /etc/env.d/99local aan te maken met de variabele daarin:

Codevoorbeeld 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Wanneer u alle variabelen toevoegt in hetzelfde bestand zet, hebt u een goed overzicht van de variabelen die u zelf instelt.

Het env-update Script

De verschillende bestanden in /etc/env.d definieren samen de variabelePATH: op deze manier kunt u door env-update te draaien de verschillende definities toevoegen, waardoor het eenvoudiger is voor pakketten (en gebruikers) om hun eigen variabelen toe te voegen, zonder daarbij met de reeds bestaande waarden aan te hoeven passen.

Het env-update script voegt de waarden in alfabetische volgorde toe. De bestandsnamen moeten daarom beginnen met twee getallen.

Codevoorbeeld 2.3: Volgorde om toe te voegen door env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Niet alle variabelen worden op de bovenstaande manier samengevoegd. Dit geldt alleen voor: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH en PRELINK_PATH_MASK. Voor de rest van de variabelen wordt de laatst gedefinieerde waarde gebruikt die in /etc/env.d is gedefinieerd (op alfabetische volgorde).

Wanneer u env-update draait, worden alle omgevingsvariabelen aangemaakt en in het bestand /etc/profile.env geplaatst (wat dan gebruikt wordt door /etc/profile). Het bestand /etc/ld.so.conf wordt aangemaakt met de informatie uit LDPATH. Daarna wordt ldconfig gedraaid om /etc/ld.so.cache overnieuw aan te maken, voor gebruik door de dynamische linker.

Wanneer u direct gebruik wilt maken van de omgevingsvariabelen die door env-update zijn toegevoegd, moet u het onderstaande commando uitvoeren. Indien u Gentoo zelf hebt geïnstalleerd, herinnert u zich dit waarschijnlijk nog wel uit de installatie instructies:

Codevoorbeeld 2.4: De omgevingsvariabelen updaten

# env-update && source /etc/profile

Nota: Het bovenstaande commando werkt alleen voor de variabelen in uw huidige terminal en voor nieuwe consoles. Dus wanneer u X11 draait, moet u in elke nieuwe terminal source /etc/profile draaien of X herstarten. Wanneer u een login manager gebruikt kunt u /etc/init.d/xdm restart draaien als root. Als u dit niet doet, moet u uitloggen en overnieuw inloggen om de nieuwe variabelen te kunnen gebruiken.

5.c. Variabelen lokaal definiëren

User Specific

Soms wilt u een omgevingsvariabele niet globaal definiëren. U kunt bijvoorbeeld de map /home/my_user/bin en de map waarin u werkt aan de variabele PATH willen toevoegen, zonder dat alle andere gebruikers deze mappen in hun PATH hebben staan. Dit kan door een variabele lokaal te definiëren in ~/.bashrc of ~/.bash_profile:

Codevoorbeeld 3.1: PATH lokaal uitbreiden via ~/.bashrc

(Een dubbele punt zonder een map erachter wordt gezien als de huidige map)
PATH="${PATH}:/home/my_user/bin:"

Zodra u overnieuw inlogt wordt uw PATH variabele bijgewerkt.

Per sessie

Soms wilt u een omgevingsvariabele helemaal niet permanent gebruiken. U kunt bijvoorbeeld een tijdelijke map hebben, waarvoor u de niet steeds de hele map wilt intypen en niet ~/.bashrc wilt aanpassen, omdat u de verwijzing maar tijdelijk nodig heeft.

In zo'n geval kunt u de variabele PATH in de huidige sessie aanpassen met het commando export. De variabele blijft dan actief totdat u uitlogt.

Codevoorbeeld 3.2: Een omgevingsvariabele definieren voor één sessie

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. Werken met Portage

1. Bestanden en mappen

1.a. Portage bestanden

Configuratie Instellingen

Portage komt met een standaard configuratie die opgeslagen is in /etc/make.globals. Als u er naar kijkt, zult u zien dat de configuratie afgehandeld wordt door middel van variabelen. Welke variabelen Portage gebruikt en wat deze betekenen, zal later beschreven worden.

Omdat veel configuratie instellingen verschillen per architectuur, heeft Portage tevens standaard configuratie bestanden die deel uitmaken van uw profiel. Naar uw profiel wordt verwezen door de /etc/make.profile symlink; Portage configuraties worden gezet in de make.defaults bestanden van uw profiel en alle bovenliggende profielen. We zullen later meer uitleggen over profielen en de /etc/make.profile map.

Als u van plan bent een wijziging aan te brengen in een configuratie variabele, pas dan niet /etc/make.globals of make.defaults aan. Gebruik in plaats daarvan /etc/make.conf die voorrang heeft boven de eerder genoemde bestanden. U kunt ook het voorbeeld bestand /etc/make.conf.example bekijken. Zoals de naam aangeeft, is dit een voorbeeld bestand, Portage leest de gegevens in dit bestand niet.

U kunt ook een Portage configuratie variabele als een omgevingsvariabele definiëren, maar we raden dit niet aan.

Profiel Informatie

We zijn de map /etc/make.profile reeds tegen gekomen. Het is niet echt een map, maar een symbolische link naar een profiel, standaard degene die in /usr/portage/profiles staat, hoewel u ook uw eigen profielen kunt aanmaken en naar deze profielen kunt verwijzen. Het profiel waar deze symbolische link naar verwijst is het profiel die uw systeem gebruikt.

Een profiel bevat architectuur-gebonden informatie voor Portage, zoals een lijst van pakketten die bij het systeem behoren overeenkomstig met het profiel, een lijst van pakketten die niet werken (of gemaskeerd zijn) voor dat profiel, etc.

Gebruikers Configuratie

Als het nodig is het gedrag van Portage te veranderen betreffende de installatie van applicaties, zult u de bestanden binnen /etc/portage moeten aanpassen. We raden u streng aan de bestanden binnen /etc/portage te gebruiken en raden het streng af om het gedrag aan te passen door middel van omgevingsvariabelen!

Binnen /etc/portage kunt u de volgende bestanden aanmaken:

  • package.mask waarin de pakketten staan waarvan u wilt dat Portage ze nooit zal installeren.
  • package.unmask waarin de pakketten staan die u wilt installeren, zelfs als dit door de Gentoo ontwikkelaars streng afgeraden wordt.
  • package.keywords waar de pakketten staan die u wilt installeren, zelfs als deze pakketten (nog) niet geschikt zijn bevonden voor uw architectuur.
  • package.use welke de USE argumenten staan die u wilt gebruiken voor bepaalde pakketten zonder dat het hele systeem deze argumenten zal gebruiken.

Meer informatie over de map /etc/portage en een volledige lijst van mogelijke bestanden die u kunt aanmaken, kan gevonden worden in de Portage man pagina:

Codevoorbeeld 1.1: Het lezen van de Portage man pagina

$ man portage

Het veranderen van Portage bestanden & mappen lokaties

De eerder genoemde configuratie bestanden kunnen niet ergens anders geplaatst worden - Portage zal altijd op deze lokaties naar deze configuratie bestanden zoeken. Portage gebruikt echter ook vele andere lokaties voor verschillende doeleinden: build map, opslag van broncodes, Portage boom lokatie, ...

Al deze doeleinden hebben bekende standaard lokaties maar kunnen aangepast worden naar eigen smaak door /etc/make.conf. De rest van dit hoofdstuk zal uitleggen welke lokaties Portage voor speciale doeleinden gebruikt en hoe de plaats van deze lokaties gewijzigd kunnen worden binnen uw bestandssysteem.

Dit document is niet bedoeld als naslag. Als u 100% van de informatie wilt lezen, neem dan de Portage en make.conf man pagina's door:

Codevoorbeeld 1.2: Het lezen van de Portage en make.conf man pagina's

$ man portage
$ man make.conf

1.b. Bestanden opslaan

De Portage Boom

De standaard lokatie van de Portage boom is /usr/portage. Dit is gedefinieerd door middel van de variabele PORTDIR. Als u de Portage boom ergens anders opslaat (door de eerder genoemde variabele aan te passen), vergeet dan niet ook de symbolische link /etc/make.profile aan te passen.

Als u de variabele PORTDIR aanpast, zult u de volgende variabelen waarschijnlijk ook aan willen passen, anders zullen deze niet op de hoogte zijn van de nieuwe lokatie van PORTDIR. Dit komt door de manier waarop Portage de volgende variabelen behandelt: PKGDIR, DISTDIR, RPMDIR.

Voorgecompileerde pakketten

Ondanks het feit dat Portage geen voorgecompileerde paketten gebruikt, is er wel ondersteuning voor ze. Wanneer u Portage instelt om te werken met voorgecompileerde pakketten, zoekt het deze in de map /usr/portage/packages. Deze map is gedefinieerd in de variabele PKGDIR.

Broncodes

De broncodes voor alle pakketten worden standaard opgeslagen in de map /usr/portage/distfiles. Deze lokatie wordt gedefinieerd door de variabele DISTDIR.

RPM Bestanden

Hoewel Portage geen RPM bestanden kan gebruiken, is het in staat deze bestanden te genereren door gebruik te maken van het ebuild commando (De Ebuild applicatie). De standaard lokatie waar Portage RPM bestanden opslaat is /usr/portage/rpm, dit is gedefinieerd door de RPMDIR variabele.

1.c. Applicaties compileren

Tijdelijke Portage Bestanden

Tijdelijke bestanden van Portage worden standaard opgeslagen in de map /var/tmp. Dit is gedefinieerd door de variabele PORTAGE_TMPDIR.

Als u de PORTAGE_TMPDIR variabele aanpast, zult u tevens de volgende variabelen willen aanpassen, omdat deze anders de verandering van de PORTAGE_TMPDIR niet zullen opmerken. Dit komt door de manier waarop Portage omgaat met deze variabele: BUILD_PREFIX.

Build mappen

Portage maakt per pakket dat het installeert een specifieke build map aan in /var/tmp/portage. Deze lokatie is gedefinieerd door de BUILD_PREFIX variabele.

Lokatie in het bestandssysteem

Portage installeert standaard alle bestanden in het huidige bestandssysteem (/), maar u kunt dit veranderen door de ROOT omgevingsvariabele aan te passen. Dit is handig als u nieuwe installaties wilt compileren.

1.d. Mogelijkheden om te loggen

Loggen per Ebuild

Portage kan per ebuild log bestanden aanmaken, maar alleen als de variabele PORT_LOGDIR is ingesteld op een lokatie die schrijfbaar is voor Portage (de portage gebruiker). Standaard is deze variabele niet ingesteld.

2. Configuratie via variabelen

2.a. Portage Configuratie

Zoals eerder gezegd is Portage in te stellen door verschillende variabelen die je kunt wijzigen in /etc/make.conf. Lees de make.conf man pagina voor meer informatie:

Codevoorbeeld 1.1: Lezen van de make.conf man pagina

$ man make.conf

2.b. Installatie specifieke instellingen

Configuratie en compileeropties

Als Portage applicaties installeert, geeft het de waarde van de volgende variabelen door aan de compiler en het configuratie script:

  • CFLAGS & CXXFLAGS definiëren de gewenste compileeropties voor C en C++ compilatie.
  • CHOST definieert de systeeminstallatie informatie voor het configuratie script van de betreffende applicatie.
  • MAKEOPTS wordt doorgegeven aan het make commando en wordt meestal gebruikt om de mate van parallelliteit te definiëren tijdens de compilatie. Meer informatie over de 'make' opties kan gevonden worden in de man pagina van make.

De USE variabele wordt gebruikt tijdens de configuratie en compilatie, maar is in eerdere hoofdstukken reeds uitgebreid besproken.

Merge Opties

Als Portage een nieuwere versie van een bepaald stuk software geïnstalleerd heeft, zal het de oude bestanden of de oude versie van je systeem verwijderen. Portage geeft de gebruiker 5 seconden de tijd voordat het verwijderen van de oude versie begint. Deze 5 seconden zijn gedefinieerd door de CLEAN_DELAY variabele.

2.c. Configuratie van bestandsbescherming

Beschermde lokaties van Portage

Portage overschrijft bestanden door nieuwere versies als de bestanden niet opgeslagen zijn in een beschermde lokatie. Deze beschermde lokaties zijn gedefinieerd door de CONFIG_PROTECT variabele en zijn voornamelijk lokaties waar configuratie bestanden staan. De mappen in de lijst worden door een spatie gescheiden.

Een bestand dat in een beschermde lokatie wordt geschreven wordt van naam veranderd en de gebruiker wordt gewaarschuwd over de aanwezigheid van een nieuwere versie van het (waarschijnlijke) configuratie bestand.

Je kunt meer te weten komen over de huidige CONFIG_PROTECT instellingen via de emerge --info informatie:

Codevoorbeeld 3.1: Verkrijgen van de CONFIG_PROTECT instellingen

$ emerge --info | grep 'CONFIG_PROTECT='

Meer informatie over de bestand bescherming configuratie van Portage is beschikbaar via emerge:

Codevoorbeeld 3.2: Meer informatie over de configuratie van de bestandsbescherming

$ emerge --help config

Mappen uitsluiten

Om de bescherming van bepaalde submappen van beschermde lokaties op te heffen, kun je de CONFIG_PROTECT_MASK variabele gebruiken.

2.d. Download Opties

Server Lokaties

Als de gevraagde informatie of data niet beschikbaar is op je systeem, zal Portage deze informatie van het internet halen. De serverlokaties voor de verschillende informatie en data kanalen zijn gedefinieerd door de volgende variabelen:

  • GENTOO_MIRRORS definieert een lijst van server lokaties die broncode bevatten (distfiles)
  • PORTAGE_BINHOST definieert een specifieke server lokatie die reeds gebouwde bestanden voor je systeem bevat.

Een derde instelling betreft de lokatie van de rsync server die je gebruikt om je Portage-boom te vernieuwen.

  • SYNC definieert een specifieke server die Portage gebruikt om de Portage boom vandaan te halen.

De GENTOO_MIRRORS en SYNC variabelen kunnen automatisch worden ingesteld met behulp van de applicatie mirrorselect. Voer eerst emerge mirrorselect uit voordat je het kan gebruiken. Kijk voor meer informatie, in de online hulp van mirrorselect:

Codevoorbeeld 4.1: Meer informatie over mirrorselect

# mirrorselect --help

Als het voor jou omgeving nodig is om een proxyserver te gebruiken, kun je de HTTP_PROXY, FTP_PROXY en RSYNC_PROXY variabelen gebruiken om je proxy server bekend te maken.

Commando's voor het ophalen

Als het nodig is dat Portage broncode ophaalt, gebruikt deze standaard wget. Dit kan veranderd worden via de FETCHCOMMAND variabele.

Portage kan verder gaan met eerder gedeeltelijk opgehaalde bron code. Het gebruikt standaard wget, maar dit kan aangepast worden door middel van de RESUMECOMMAND variabele.

Zorg ervoor dat FETCHCOMMAND en RESUMECOMMAND de bron code in de juiste lokatie opslaan. Binnen de variabelen kunnen \${URI} en \${DISTDIR} gebruikt worden om de locatie van de broncode en de lokatie van de distfiles aan te geven.

Protocol-gebonden eigenschappen kunnen worden gedefinieerd door middel van FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, etc.

Rsync instellingen

Het rsync commando dat gebruikt wordt door Portage om de Portage-boom te vernieuwen kan niet aangepast worden, maar sommige variabelen die gerelateerd zijn aan het rsync commando kunnen wel aangepast worden:

  • RSYNC_EXCLUDEFROM verwijst naar een bestand met de softwarepakketten en/of categorieën die rsync dient te negeren tijdens het update proces.
  • RSYNC_RETRIES definieert hoe vaak rsync zal proberen contact te maken met de server waarnaar verwezen wordt door de SYNC variabele, voordat opgegeven wordt. De standaard waarde van deze variabele is 3.
  • RSYNC_TIMEOUT definieert het aantal seconden dat een rsync connectie inactief kan zijn voordat rsync deze als verbroken ziet. De standaard waarde van deze variabele is 180, maar mensen met een inbelverbinding zullen het waarschijnlijk op 300 of hoger willen zetten.

2.e. Gentoo configuratie

Branch selectie

De standaard branch kan aangepast worden met de ACCEPT_KEYWORDS variabele. De standaard is de stabiele branche van de architectuur die gebruikt wordt. Meer informatie over de branches van Gentoo kan in het volgende hoofdstuk gevonden worden.

Portage mogelijkheden

Bepaalde mogelijkheden van Portage kunnen geactiveerd worden door de FEATURES variabele. De Portage mogelijkheden zijn besproken in eerdere hoofdstukken, zoals Portage Mogelijkheden.

2.f. Portage gedrag

Hulpbronnen beheer

Met de PORTAGE_NICENESS variabele kan de vriendelijkheidswaarde van Portage worden aangepast. De PORTAGE_NICENESS waarde wordt toegevoegd aan de huidige vriendelijkheidswaarde.

Voor meer informatie over vriendelijkheidswaarden, zie de nice man pagina:

Codevoorbeeld 6.1: Meer informatie over nice

$ man nice

Schrijf Gedrag

De NOCOLOR, welke standaard de waarde "false" heeft, bepaalt of Portage wel of geen kleuren gebruikt.

3. Software takken door elkaar gebruiken

3.a. Het gebruik van verschillende software takken door elkaar

De stabiele tak

De ACCEPT_KEYWORDS variabele definieert welke software tak op uw systeem wordt gebruikt. Gebruik van de standaard, stabiele software voor de gebruikte architectuur, wordt aangeduid met bijvoorbeeld x86.

We raden u aan alleen de stabiele tak te gebruiken. Indien u echter niet zoveel geeft om stabiliteit en u wilt Gentoo helpen door het zenden van BUG rapporten naar http://bugs.gentoo.org, lees dan verder.

De Test Tak

Als u de meest recente applicaties wilt gebruiken, kunt u overwegen de test tak te gebruiken. Om Portage de test tak te laten gebruiken, plaats een ~ voor uw architectuur.

De pakketten in de test tak is bedoeld om te testen - zoals de naam al doet vermoeden. Het geeft aan dat de ontwikkelaars het pakket functioneel vinden, maar dat het nog niet genoeg getest is. U kunt de eerste zijn die een fout vindt, die u dan kunt rapporteren op bugzilla. Laat de ontwikkelaars weten wat er fout gaat, zodat ze er iets aan kunnen doen (aub wel in het engels invullen).

U moet er wel rekening mee houden dat uw systeem onstabiel kan worden, pakketten verkeerd instelt (bijvoorbeeld de afhankelijkheden), erg vaak een update wordt gemaakt (de resultaten van het testen) of dat een pakket helemaal niet werkt. Als u nog niet goed weet hoe Gentoo werkt en de bovenstaande problemen niet zelf kunt oplossen, dan raden we aan om alleen de stabiele tak van Gentoo te gebruiken.

Om bijvoorbeeld de test tak voor de x86 architectuur te kiezen, wijzig /etc/make.conf en zet:

Codevoorbeeld 1.1: Het zetten van de ACCEPT_KEYWORDS variabele

ACCEPT_KEYWORDS="~x86"

Als u nu uw systeem vernieuwt, zult u zien dat veel pakketten worden vernieuwd. Vergeet echter niet: als u het systeem vernieuwd hebt, zodat de test tak gebruikt wordt, is er meestal geen gemakkelijke weg terug naar de stabiele, officiële tak (tenzij u van te voren een back-up gemaakt hebt natuurlijk).

3.b. Combineren van stabiel met test

De locatie van het package.keywords bestand

Portage kan gevraagd worden om de test tak voor specifieke pakketten te gebruiken en de stabiele tak voor de rest van het systeem te gebruiken. Om dit voor elkaar te krijgen, dient de pakket categorie en de naam die u wilt gebruiken in de test tak toegevoegd te worden aan /etc/portage/package.keywords. Je kunt ook een map maken (met de zelfde naam) en een lijst van de pakketten van de bestanden in die map. Bijvoorbeeld om de test tak toe te passen voor gnumeric:

Codevoorbeeld 2.1: /etc/portage/package.keywords instellingen voor gnumeric, volledige regel

app-office/gnumeric ~x86

Specifieke versies gebruiken om te testen

Als u een specifieke versie van een applicatie wilt gebruiken van de test tak, maar u wilt niet dat Portage de test tak voor andere versies gebruikt, kunt u de versie toevoegen aan het package.keywords locatie. In dit geval moet u de = operator gebruiken. U kunt ook een versie-reeks opgeven door gebruik te maken van de <=, <, > or >= operators.

Als u versie-informatie toevoegt, moet u altijd een operator gebruiken. Als u de versie-informatie weglaat, kunt u ervoor kiezen geen operator te gebruiken.

In het volgende voorbeeld vragen we Portage om gnumeric-1.2.13 te accepteren:

Codevoorbeeld 2.2: Gebruik van een specifieke gnumeric versie

=app-office/gnumeric-1.2.13 ~x86

3.c. Gebruik van gemaskeerde pakketten

Het package.unmask locatie

De ontwikkelaars van Gentoo geven geen ondersteuning voor het gebruik van deze locatie. Gebruik ze dus voorzichtig. Vragen om hulp met betrekking tot package.unmask en/of package.mask zullen niet worden beantwoord. U bent bij deze gewaarschuwd!

Als een pakket gemaskeerd is door de Gentoo ontwikkelaars en u het, ondanks de reden die genoemd wordt in het package.mask bestand (standaard te vinden in /usr/portage/profiles), toch wilt gebruiken, plaats dan exact dezelfde regel in /etc/portage/package.unmask (of in een bestand in die map, moest het een map zijn).

Bijvoorbeeld, als =net-mail/hotwayd-0.8 gemaskeerd is, kun u dit masker eraf halen door exact dezelfde regel te plaatsen in het package.unmask locatie:

Codevoorbeeld 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

Het package.mask locatie

Als u niet wilt dat Portage een bepaald pakket of een specifieke versie van een pakket gebruikt, kunt u deze zelf maskeren door de betreffende regel op te nemen in het /etc/portage/package.mask locatie (of in dat bestand of een bestand in die map).

Bijvoorbeeld, als u niet wilt dat Portage een nieuwere kernelversie dan gentoo-sources-2.6.8.1 installeert, kunt u de volgende regel toevoegen aan het package.mask locatie:

Codevoorbeeld 3.2: /etc/portage/package.mask voorbeeld

>sys-kernel/gentoo-sources-2.6.8.1

4. Extra Portage hulpmiddelen

4.a. etc-update

etc-update is programma dat helpt bij het installeren van ._cfg0000_<naam> bestanden. Het levert een interactieve installatie setup en kan ook belangrijke wijzigingen automatisch installeren. ._cfg0000_<naam> bestanden worden aangemaakt door Portage als het een bestand wil plaatsen in een door de CONFIG_PROTECT variabele beschermde map.

Starten van etc-update is vrij eenvoudig:

Codevoorbeeld 1.1: Het starten van etc-update

# etc-update

Na het installeren van de eenvoudige veranderingen, zult u een lijst met beschermde bestanden te zien krijgen. Deze wachten met een verandering. Onderaan zult u begroet worden door de mogelijke keuzes:

Codevoorbeeld 1.2: etc-update keuzes

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

Als u -1 geeft, zal etc-update stoppen zonder een wijziging uit te voeren. Bij -3 of -5 zullen alle getoonde configuratie bestanden overschreven worden door de nieuwere versies. Het is daar om erg belangrijk om eerst de bestanden te kiezen die niet gewijzigd dienen te worden. Dit kan door eenvoudig het nummer links van een configuratie bestand op te geven.

Als voorbeeld kiezen we het configuratie bestand /etc/pear.conf:

Codevoorbeeld 1.3: Vernieuwen van een specifiek configuratie bestand

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

U kunt nu de verschillen tussen beide bestanden zien. Als u denkt dat het nieuwe configuratie bestand zonder problemen gebruikt kan worden, geef dan 1. Als u denkt dat het nieuwe bestand niet nodig is, of geen nieuwe of bruikbare informatie bevat, kies dan een 2. Als u het huidige configuratie bestand interactief wilt vernieuwen, kies dan 3.

Er is geen reden om het interactief samenvoegen hier verder uit te leggen. Om compleet te zijn, zullen we nu de mogelijke commando's bespreken die u tot uw beschikking hebt tijdens het interactief samenvoegen van twee bestanden. U zult begroet worden met twee regels (de originele regel en de nieuwe, voorgestelde, regel) en een regel waar u één van de volgende commando's op kan geven:

Codevoorbeeld 1.4: Commando's die beschikbaar zijn voor het interactief samenvoegen

ed:     Pas aan en gebruik dan beide versies, elk voorzien van een commentaar.
eb:     Pas aan en gebruik dan beide versies.
el:     pas aan en gebruik dan de linkse versie.
er:     Pas aan en gebruik dan de rechtse versie.
e:      Pas een nieuwe versie aan.
l:      Gebruik de linkse versie.
r:      Gebruik de rechtse versie.
s:      Voeg stil de overeenkomstige regels toe.
v:      Voeg, uitgebreid overeenkomstige regels toe.
q:      Einde.

Als u klaar bent met het vernieuwen van belangrijke configuratie bestanden, kunt u automatisch de andere configuratie bestanden vernieuwen. etc-update zal sluiten als het geen te wijzigen configuratie bestanden meer kan vinden.

4.b. dispatch-conf

Door dispatch-conf te gebruiken, bent u in staat de vernieuwingen toe te passen en tegelijkertijd alle wijzigingen bij te houden. dispatch-conf slaat de verschillen tussen de configuratie bestanden als patches of door gebruik te maken van het RCS versie systeem.

Net als etc-update kunt u vragen om het configuratie bestand te behouden, het nieuwe configuratie bestand te gebruiken, het huidige aan te passen of om alle wijzigingen interactief samen te voegen. Tevens heeft dispatch-conf enkele extra mogelijkheden:

  • Voeg automatisch configuratie bestanden toe die enkel vernieuwingen in het commentaar bevatten.
  • Voeg automatisch configuratie bestanden toe die enkel verschillen in de hoeveelheid lege ruimte.

Wees er zeker van dat u /etc/dispatch-conf.conf eerst aanpast en de map aanmaakt waar naar verwezen wordt door de archive-dir variabele

Kijk voor meer informatie naar de dispatch-conf man pagina:

Codevoorbeeld 2.1: Het lezen van de dispatch-conf man pagina

$ man dispatch-conf

4.c. quickpkg

Met quickpkg kunt u bestanden maken van pakketten die al op uw systeem geïnstalleerd zijn. Deze bestanden kunnen dan gebruikt worden als voorgecompileerde pakketten. Het starten van quickpkg is eenvoudig: Voeg de namen van de pakketten die u wilt bewaren als bestanden.

Om bijvoorbeeld, curl, arts en procps om te zetten:

Codevoorbeeld 3.1: Voorbeeld gebruik quickpkg

# quickpkg curl arts procps

Het voorgecompileerde bestand zal opgeslagen worden in /usr/portage/packages/All. Symbolische links die naar deze bestanden verwijzen worden geplaatst in de map $PKGDIR/<category>.

5. Afwijken van de officiële boom

5.a. Het gebruik van een deel van de Portage boom

Uitsluiten van pakketten en/of categorieën

U kunt bepaalde categorieën en/of pakketten selectief vernieuwen en andere categorieën/pakketten negeren. We doen dit door rsync bepaalde categorieën/pakketten te laten negeren gedurende de emerge --sync fase.

rsync zal normaal de inhoud van /etc/portage/rsync_excludes controleren, indien aanwezig. Hierin staan de categorieën en/of pakketten waarvan u niet wilt dat rsync ze vernieuwt.

Codevoorbeeld 1.1: De variabele RSYNC_EXCLUDEFROM in /etc/make.conf

RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes

Codevoorbeeld 1.2: Alle spellen in /etc/portage/rsync_excludes zetten

games-*/*

Vergeet echter niet dat dit tot afhankelijkheidsproblemen kan leiden omdat nieuwe, toegevoegde pakketten wellicht afhankelijk zijn van nieuwe, maar genegeerde pakketten.

5.b. Toevoegen van niet-Gentoo ebuilds

Definiëren van de map Portage_overlay

U kunt Portage vragen om ebuilds te gebruiken die niet beschikbaar zijn gesteld via de Portage boom. Maak een nieuwe map aan (bijvoorbeeld /usr/local/portage) waarin u deze ebuilds in plaatst. Gebruik dezelfde mappenstructuur als in de officiële Portage-boom!

Vervolgens definieert u PORTDIR_OVERLAY in /etc/make.conf en laat deze verwijzen naar de eerder aangemaakte map. Als u nu Portage gebruikt, zal het deze ebuilds ook gebruiken zonder deze ebuilds de volgende keer dat u emerge --sync gebruikt te verwijderen of te overschrijven.

Met meerdere overlays werken

Sommige gebruikers zullen meerdere overlays willen gebruiken, om pakketten te kunnen testen voordat ze officieel in de Portage boom komen of omdat ze niet ondersteunde ebuilds willen gebruiken. Zij kunnen gebruik maken van gensync uit het pakket app-portage/gentoolkit-dev, waarmee ze hun overlays kunnen bijhouden.

Met gensync kunt u een verzameling eigen ebuild op een eenvoudige manier bijhouden. Elke verzameling heeft een bestand .syncsource in de map /etc/gensync/. Dit bestand bevat de lokatie van de verzameling, naam, ID, etc.

Stel dat u twee extra ebuild verzamelingen hebt, die u java (voor het testen van java ebuilds) en entapps (voor applicaties voor uw eigen bedrijf) noemt. U kunt deze dan updaten met het volgende commando:

Codevoorbeeld 2.1: Gebruiken van gensync om te updaten

# gensync java entapps

5.c. Niet door Portage onderhouden applicaties

Het gebruik van Portage met zelf onderhouden applicaties

Soms wilt u applicaties zelf configureren, installeren en onderhouden zonder dat Portage dit proces voor u automatiseert, ook al kan Portage de applicaties leveren. Bekende gevallen zijn de kernel nvidia drivers. Je kunt Portage zo configureren dat het weet dat een bepaalde applicatie handmatig geïnstalleerd is op uw systeem. Dit proces wordt injecting genoemd en wordt door Portage ondersteund via het /etc/portage/profile/package.provided bestand.

Als u bijvoorbeeld Portage wilt informeren over vanilla-sources-2.6.11.6 die u zelf handmatig geïnstalleerd hebt, neem dan de volgende regel op in /etc/portage/profile/package.provided:

Codevoorbeeld 3.1: Voorbeeld regel voor package.provided

sys-kernel/vanilla-sources-2.6.11.6

D. Gentoo Netwerk Configuraties

1. Meteen beginnen

1.a. Beginnen

Nota: We gaan er in deze handleiding vanuit dat u uw kernel op een juiste manier hebt geconfigureerd. Verder nemen we aan dat u de juiste hardware modules heeft en dat u weet wat voor netwerkkaart u heeft. We gaan er verder vanuit dat u eth0 wilt configureren, maar voor eth1, wlan0 is de methode natuurlijk hetzelfde.

Nota: Om deze handleiding goed te kunnen gebruiken met u gebruik maken van baselayout-1.11.11 of hoger.

Om uw netwerkkaart in te kunnen stellen moet u Gentoo's RC systeem op de hoogte brengen van de aanwezigheid van de kaart. Dit doet u met een symbolische link vanuit net.lo naar net.eth0 in /etc/init.d

Codevoorbeeld 1.1: Symlinken van net.eth0 naar net.lo

# cd /etc/init.d
# ln -s net.lo net.eth0

Gentoo's RC systeem is nu op de hoogte van het bestaan van uw netwerkkaart. Het moet nu weten hoe de kaart in te stellen. Alle netwerkkaarten worden ingesteld in /etc/conf.d/net. Hieronder staat een voorbeeld voor het gebruik van DHCP en voor vaste IP adressen.

Codevoorbeeld 1.2: Voorbeeld /etc/conf.d/net

# Voor DHCP
config_eth0=( "dhcp" )

# Voor vaste IP adressen met CIDR
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )

# Voor vaste IP adressen met netmask
config_eth0=( "192.168.0.7 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.0.1" )

Nota: Indien u niets instelt wordt automatisch DHCP gekozen.

Nota: CIDR staat voor Classless InterDomain Routing. Van oudsher werden IPv4 adressen opgedeeld in A, B of C. Deze eerste verdeling was niet bedoeld voor een massaal gebruik van internet, waardoor er al snel een te kort aan unieke IP adressen dreigde te ontstaan. CIDR zorgt ervoor dat één IP adressen veel meer gebruikers kan voorzien. Een CIDR IP adres ziet er hetzelfde uit, alleen eindigt het met een schuine streep en een nummer, bijvoorbeeld 192.168.0.0/16. CIDR wordt beschreven in RFC 1519.

Nu dat uw netwerkkaart is geconfigureerd, kunt u die opstarten en weer stoppen met de onderstaande commando's:

Codevoorbeeld 1.3: Starten en stoppen van netwerk scripts

# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop

Belangrijk: Indien u problemen hebt met het netwerk, is het aan te raden om de optie RC_VERBOSE="yes" te gebruiken in /etc/conf.d/rc zodat u meer informatie krijgt over wat er eventueel fout gaat.

Nu dat u de netwerkkaart kunt opstarten en afsluiten, kunt u deze automatisch laten opstarten wanneer Gentoo opstart. Hieronder wordt beschreven hoe u dit in kunt stellen. En met het "rc" commando start u alle scripts in het huidige runlevel die nog niet gestart zijn.

Codevoorbeeld 1.4: Netwerkkaart instellen om te starten bij het opstarten van de PC

# rc-update add net.eth0 default
# rc

2. Geavanceerde configuratie

2.a. Geavanceerde configuratie

De variabele config_eth0 is het hart van een netwerkkaart configuratie. Het is een geavanceerde instructielijst om de netwerkkaart (eth0 in dit geval) in te stellen. Elk commando wordt na het vorige uitgevoerd en wanneer tenminste één commando werkt zal de netwerkkaart zijn werk kunnen uitvoeren.

Hieronder volgt een lijst met ingebouwde instructies.

Commando Beschrijving
null Doe niets
noop Wanneer de netwerkkaart het doet en er een IP adres is, breek dan de verdere configuratie af
Een IPv4 of IPv6 adres Voeg het adres toe aan de netwerkkaart
dhcp, adsl of apipa (of een ander commando van een ander programma) Start de module die het commando opgeeft. Zo zal dhcp een module starten die DHCP beschikbaar maakt, bijvoorbeeld dhcpcd, udhcpc, dhclient of pump.

Voor het geval een commando niet werkt, kunt u een tweede keus opgeven. Deze tweede keus moet de structuur van de configuratie bestanden uiteraard ook volgen.

U kunt verschillende commando's achter elkaar gebruiken. Hieronder volgen enkele voorbeelden.

Codevoorbeeld 1.1: Voorbeeld instellingen

# Drie IPv4 adressen instellen
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# Een IPv4 adres en twee IPv6 adressen instellen
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Gebruik van het door uw kernel bepaalde adres, tenzij het
# netwerk plaat gaat, gebruik dan DHCP. Als DHCP niet werkt, gebruik dan een
# vast IP adres, bepaald door APIPA
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

Nota: Wanneer u de module ifconfig gebruikt en meer dan één adres toevoegt, worden er aliassen gecreëerd voor de extra adressen. Dus met de bovenstaande voorbeelden krijgt u de netwerk interfaces eth0, eth0:1 en eth0:2. U kunt verder niets met deze interfaces; de kernel en alle toepassing zullen ze als eth0 beschouwen.

Belangrijk: Het instellen van de tweede keus is heel belangrijk. Indien we de optie null niet instellen, zal apipa alleen starten wanneer noop niet werkt namelijk.

Nota: APIPA en DHCP worden later besproken.

2.b. Netwerk afhankelijkheden

De init scripts in de map /ect/init.d kunnen op een specifieke netwerkkaart zijn toegespitst of in het algemeen op de netwerkkaarten. net kunt u definiëren in /etc/conf.d/rc. Hier kunnen verschillende instellingen worden gekozen via RC_NET_STRICT_CHECKING.

Waarde Beschrijving
none De service net wordt geacht altijd online te zijn
no Dit betekent dat er tenminste één service van het type net.* moet werken naast net.lo. Dit is handig voor laptop gebruikers die een WIFI en een vaste netwerkverbinding hebben en slechts één van beiden tegelijk online willen hebben.
lo Dit een zelfde optie als de optie no, alleen wordt nu net.lo ook meegeteld. Dit is handig voor mensen die niet altijd een netwerkkaart willen opstarten.
yes In dit geval moeten ALLE netwerkkaarten werken om de service net als online te laten zien.

Maar hoe werkt het nu wanneer u net.br0 heeft, die afhankelijk is van net.eth0 en net.eth1? net.eth1 kan in dit geval bijvoorbeeld een wireless of PPP verbinding zijn, die moet worden ingesteld voordat deze wordt toegevoegd aan de netwerkbrug. Dit kan niet gebeuren in /etc/init.d/net.br0, aangezien dit een symlink naar net.lo is.

Hiervoor zult u een eigen depend() functie in /etc/conf.d/net moeten aanmaken.

Codevoorbeeld 2.1: net.br0 afhankelijkheden in /etc/conf.d/net

# U kunt afhankelijkheid gebruiken, zoals gevonden in andere scripts
depend_br0() {
  need net.eth0 net.eth1
}

Voor een uitgebreidere uitleg over afhankelijkheden, kunt u het hoofdstuk Initialisatie Scripts lezen uit het Gentoo handboek.

2.c. Namen en waarden van variabelen

Namen van variabelen veranderen. Meestal volgen ze een gelijke structuur als variable_${interface|mac|essid|apmac}. Zo bevat de variabele dhcpcd_eth0 de waarde voor de dhcpcd opties voor eth0 en bevat dhcpcd_essid de waarde voor de dhcpcd opties met betrekking tot de interface die verbinding maakt met de ESSID "essid".

Er zijn echter geen vaste regels voor het benoemen van netwerk interfaces. Ze dus ethx heten, maar veel draadloze interfaces heten bijvoorbeeld wlanx, rax of toch gewoon ethx. Sommige interfaces, zoals netwerkbruggen, kunnen een willekeurige naam hebben. En wireless Acces Points kunnen zelfs namen hebben met niet alpha-numerieke karakters erin - dit is belangrijk om te weten, omdat u parameters voor uw netwerk kunt instellen per ESSID.

Er is echter één maar: Gentoo gebruikt bash variabelen voor het netwerk - en bash kan alleen Engelse alpha-numerieke karakters gebruiken. Daarom worden alle niet alpha-numerieke karakters omgezet in een _.

Een ander nadeel van bash, is de inhoud van de variabelen - sommige karakters moeten vooraf gegaan worden door een \, het zogenaamde escapen. Dit geldt voor de volgende karakters: ", ' en \.

In het volgende voorbeeld zullen we verschillende karakters gebruiken. We noemen daarom de ESSID My "\ NET:

Codevoorbeeld 3.1: Voorbeeld naam voor variabele

# Dit werkt wel, maar het domein is niet geldig
dns_domain_My____NET="My \"\\ NET"

# Het bovenstaande stelt het dns domein in op My "\ NET voor een
# voor een draadloos netwerk waarvan de ESSID My "\ NET is

3. Netwerken in modules

3.a. Netwerk Modules

Omdat we tegenwoordig modulaire netwerk scripts gebruiken, kunnen we eenvoudig nieuwe interfaces en configuratie modules toevoegen, terwijl de oude interfaces ondersteund blijven.

De modules worden automatisch geladen indien een pakket geïnstalleerd wordt dat ze nodig heeft. Als u een module instelt om te gebruiken waarvan u het pakket niet hebt geïnstalleerd krijgt u een waarschuwing, dat u het pakket moet installeren. In principe hoeft u modules alleen in te stellen wanneer u meer dan één pakket hebt geïnstalleerd voor dezelfde functie en u er één prefereert boven de andere.

Nota: Alle instellingen worden opgeslagen in /etc/conf.d/net tenzij anders wordt aangegeven.

Codevoorbeeld 1.1: Module instellen

# iproute2 gebruiken in plaats van ifconfig
modules=( "iproute2" )

# U kunt ook modules per interface instellen
# In dit geval gebruiken we udhcpc in plaats van dhcpcd
modules_eth0=( "udhcpc" )

# U kunt ook aangeven welke modules u niet wilt gebruiken - bijvoorbeeld
# omdat u supplicant of linux-wlan-ng gebruikt voor uw draadloze instellingen,
# maar u toch uw netwerk per ESSID wilt instellen.
modules=( "!iwconfig" )

3.b. Interface Handlers

Op dit moment worden twee hulpprogramma's ondersteund: ifconfig en iproute2. U moet één van beide gebruiken indien u een netwerk op wilt zetten.

ifconfig is Gentoo's standaard en wordt met het systeem mee geïnstalleerd. iproute2 heeft meer mogelijkheden, maar wordt niet standaard mee geleverd.

Codevoorbeeld 2.1: Het installeren van iproute2

# emerge sys-apps/iproute2

# Om iproute2 te gebruiken in plaats van ifconfig
modules=( "iproute2" )

ifconfig en iproute2 doen ongeveer hetzelfde, daarom kunnen beide naast elkaar draaien. De onderstaande code zou bijvoorbeeld voor beide programma's gebruikt kunnen worden.

Codevoorbeeld 2.2: ifconfig en iproute2 voorbeelden

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# Instellen van broadcast
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP

DHCP is een manier om netwerk informatie te verkrijgen (IP adres, DNS servers, een gateway, etc) van een DHCP server. Wanneer er dus een DHCP server op uw netwerk aanwezig is, kunt u elke client instellen om DHCP te gebruiken en op die manier automatisch het netwerk in te stellen. U moet dan natuurlijk wel nog zaken als wireless en PPP zelf instellen voor u gebruik kunt maken van DHCP via deze protocollen.

DHCP kan geleverd worden door dhclient, dhcpcd, pump of udhcpc. Ieder van deze pakketten heeft zo zijn voor- en nadelen, die hieronder op een rijtje worden gezet.

DHCP Module Pakket Voordelen Nadelen
dhclient net-misc/dhcp Ontwikkeld bij ISC, dezelfde mensen die de BIND DNS software maken. Heel veel instellingen mogelijk Instellingen zijn betrekkelijk complex, de software heeft misschien te veel functies. Kan geen gebruik maken van NTP via DHCP, stuurt de hostnaam niet automatisch door
dhcpcd net-misc/dhcpcd Sinds lang de standaard in Gentoo. Geen andere toepassingen nodig Wordt niet meer bijgehouden door zijn ontwikkelaars, kan traag zijn. Werkt niet als daemon wanneer de verbinding oneindig is
pump net-misc/pump Weinig resources nodig, geen andere toepassingen nodig Wordt niet meer bijgehouden door zijn ontwikkelaars, onbetrouwbaar, met name over modems. Kan niet met NIS servers overweg via DHCP
udhcpc net-misc/udhcp Weinig resources nodig - kleinste DHCP cliënt, ontwikkeld voor embedded systems Unbekend - geen enkele distributie gebruikt deze client standaard. Moet elke 3 seconden de verbinding checken (geen andere instelling mogelijk)

Wanneer u meer dan één DHCP cliënt hebt geïnstalleerd moet u aangeven welke u wilt gebruiken - indien u dat niet doet wordt dhcpcd gebruikt, indien aanwezig.

Om opties aan een DHCP module mee te geven, gebruiken we module_eth0="..." (Verander module in de DHCP module die u gebruikt - bijv. dhcpcd_eth0

We hebben geprobeerd DHCP zo eenvoudig mogelijk te maken - daarom worden de volgende commando's ondersteund via de variabele dhcp_eth0. Standaard hoeven deze niet ingesteld:

  • release - IP adressen vernieuwen
  • nodns - overschrijf /etc/resolv.conf niet
  • nontp - overschrijf /etc/ntp.conf niet
  • nonis - overschrijf /etc/yp.conf niet

Codevoorbeeld 3.1: Voorbeeld DHCP instellingen in /etc/conf.d/net

# Alleen nodig wanneer u meer dan één DHCP module hebt
modules=( "dhcpcd" ) 

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # Na 10 seconden stoppen met proberen
dhcp_eth0="release nodns nontp nonis" # Alleen een IP adres vragen

Nota: dhcpcd, udhcpc en pump sturen automatisch de huidige hostnaam naar de DHCP server. Dit hoeft u dus niet meer in te stellen.

3.d. ADSL Modem

Allereerst moeten we de ADSL software installeren.

Codevoorbeeld 4.1: Installeer het rp-pppoe pakket

# emerge net-dialup/rp-pppoe

Waarschuwing: baselayout-1.11.x ondersteunt alleen PPPoE. In de toekomst hopen we dat ook PPPoA wordt ondersteund.

Nu moeten we aangeven dat eth0 een ADSL interface is en onze gebruikersnaam invullen door /etc/conf.d/net aan te passen.

Codevoorbeeld 4.2: Instellen van eth0 voor ADSL in /etc/conf.d/net

config_eth0=( "adsl" )
adsl_user_eth0="gebruikersnaam"

Tot slot moet u uw gebruikersnaam en wachtwoord in /etc/ppp/pap-secrets zetten.

Codevoorbeeld 4.3: Voorbeeld /etc/ppp/pap-secrets

# De asterisk (*) is belangrijk
"gebruikersnaam"  *  "wachtwoord"

3.e. APIPA (Automatic Private IP Addressing)

APIPA probeert een vrij adres te vinden binnen het bereik van 169.254.0.0 tot 169.254.255.255, door willekeurig een adres aan te spreken. Als er geen antwoord komt, wordt het adres gebruikt voor de interface.

Dit is alleen handig voor LAN's zonder DHCP server, wanneer u niet direct met internet verbonden bent en de andere computers in het netwerk ook APIPA gebruiken.

Om APIPA te kunnen gebruiken, typt u emerge net-misc/iputils of net-analyzer/arping.

Codevoorbeeld 5.1: APIPA instellen in /etc/conf.d/net

# Probeer eerst DHCP - als dat niet werkt, probeer dan APIPA
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# Alleen APIPA gebruiken
config_eth0=( "apipa" )

3.f. Bonding (samenvoegen van netwerkverbindingen)

Om gebruik te maken van link bonding/trunking, typt u emerge net-misc/ifenslave.

Bonding wordt gebruikt om meer bandbreedte te creëren. Als u twee netwerkkaarten in hetzelfde netwerk hebt, kunt u die samenvoegen zodat uw toepassingen ze als één kaart zien, maar wel beide kaarten gebruiken.

Codevoorbeeld 6.1: bonding instellen in /etc/conf.d/net

# Interfaces samenvoegen
slaves_bond0="eth0 eth1 eth2"

# Indien u geen IP adres wilt toekennen aan de samengevoegde interface
config_bond0=( "null" )

# Maak afhankelijk van eth0, eth1 en eth2, omdat er extra instellingen nodig kunnen zijn
depend_bond0() {
  need net.eth0 net.eth1 net.eth2
}

3.g. Netwerkbrug instellen (802.1d ondersteuning)

Voor het gebruiken van een netwerkbrug typt u emerge net-misc/bridge-utils.

Een netwerkbrug voegt netwerken samen. U kunt bijvoorbeeld een server instellen die via een ADSL modem verbinding heeft met internet en via een wireless kaart de andere computers in uw netwerk in staat stelt via het ADSL modem verbinding te maken met het internet. Met een netwerkbrug kunt u de twee netwerkkaarten verbinden.

Codevoorbeeld 7.1: Netwerkbrug instellingen in /etc/conf.d/net

# Instellen van de netwerkbrug - typ "man btctl" voor details
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# Voeg netwerkkaarten toe aan br0
bridge_br0="eth0 eth1"

# U moet de netwerkkaarten instellen op null, zodat ze geen DHCP gebruiken
config_eth0=( "null" )
config_eth1=( "null" )

# Tot slot geeft u de netwerkbrug een IP adres - DHCP kan hier ook
config_br0=( "192.168.0.1/24" )

# Maak de netwerkbrug afhankelijk van eth0 en eth1
depend_br0() {
  need net.eth0 net.eth1
}

Belangrijk: Voor meer informatie over netwerkbruggen kunt u kijken in de handleiding het benoemen van variabelen.

3.h. MAC Adres

Wanneer u sys-apps/baselayout-1.11.14 of nieuwer gebruikt, hoeft u geen extra software te installeren om uw MAC adres te veranderen. Wanneer u echter een willekeurig MAC adres wilt of een oudere versie van de baselayout gebruikt, dan kunt u net-analyzer/macchanger installeren om gebruik te maken van deze mogelijkheid.

Codevoorbeeld 8.1: MAC Adres veranderen

# Het MAC adres instellen
mac_eth0="00:11:22:33:44:55"

# De laatste 3 bytes willekeurig instellen
mac_eth0="random-ending"

# Willekeurige adressen van hetzelfde type gebruiken (bijv. glasvezel,
# koper, wireless) , voor alle typen kaarten
mac_eth0="random-samekind"

# Willekeurige adressen van willekeurige typen gebruiken
mac_eth0="random-anykind"

# Volledig willekeurig - PAS OP: sommige gegenereerde MAC adressen
# kunnen niet werken
mac_eth0="random-full"

3.i. Tunnelen

Om de functie tunnelen te gebruiken hoeft u niets te doen, dit is een standaard functie.

Codevoorbeeld 9.1: Tunnelen instellen in /etc/conf.d/net

# GRE tunnels
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# IPIP tunnels
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Instellen van de interface
config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) 

3.j. VLAN (802.1q ondersteuning)

Voor VLAN ondersteuning typt u emerge net-misc/vconfig.

Een virtueel LAN is een groep netwerk apparaten die zich gedragen alsof ze samen in een netwerk zitten - ook al hoeft dit niet het geval te zijn. VLAN leden kunnen alleen leden van hetzelfde VLAN zien, ook al gebruiken ze dezelfde netwerk verbinding.

Codevoorbeeld 10.1: VLAN instellen in /etc/conf.d/net

# Geef de interface een VLAN nummer
# Zorg ervoor dat u het VLAN niet instelt met voorloop nullen
vlans_eth0="1 2"

# U kunt ook het VLAN instellen
# Kijk in de vconfig handleiding voor meer details
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# Stel de netwerkkaart in als normaal
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Belangrijk: Voor het gebruik van VLAN kunt u ook kijken in de handleiding het benoemen van variabelen

4. Draadloos netwerk

4.a. Inleiding

Op dit moment wordt het instellen van een wireless netwerk ondersteunt voor wireless-tools en wpa_supplicant. Het belangrijkste om te onthouden is dat een wireless netwerk niet ingesteld wordt op basis van de interface, maar globaal.

wpa_supplicant is de beste keus voor uw netwerk, maar niet alle drivers worden ondersteund. Voor een lijst van ondersteunde drivers kijkt u op wpa_supplicant site. Ook kan wpa_supplicant op dit moment alleen ingestelde SSID's aan.

wireless-tools ondersteund praktisch elke netwerkkaart, maar het kan geen verbinding maken met Acces Points die alleen WPA gebruiken.

Waarschuwing: De driver van linux-wlan-ng wordt op dit moment niet ondersteund door baselayout. Dit komt omdat linux-wlan-ng een geheel eigen manier heeft om de netwerkkaart in te stellen. Er gaan geruchten dat de ontwikkelaars van linux-wlan-ng een soort gelijke instelling willen gaan gebruiken als de wireless-tools. Als dit gebeurt kunt u linux-wlan-ng gebruiken met baselayout.

4.b. WPA Supplicant

WPA Supplicant is een pakket waarmee u verbinding kunt maken met WPA Access Points. Het is redelijk eenvoudig in te stellen en hoewel het nog in de beta fase is werkt bijna alles zoals het moet.

Codevoorbeeld 2.1: Het installern wpa_supplicant

# emerge net-wireless/wpa_supplicant

Belangrijk: U moet CONFIG_PACKET aan hebben staan in uw kernel om wpa_supplicant te kunnen gebruiken.

We moeten nu /etc/conf.d/net instellen, zodat we wpa_supplicant gebruiken in plaats van wireless-tools (als beiden geïnstalleerd zijn, is wireless-tools eerste keus).

Codevoorbeeld 2.2: /etc/conf.d/net instellen voor wpa_supplicant

# wpa_supplicant gebruiken in plaats van wireless-tools
modules=( "wpa_supplicant" )

# Het is belangrijk wpa_supplicant aan te geven welke driver te
# gebruiken, omdat de automatische herkenning nog niet zo goed is
wpa_supplicant_eth0="-Dmadwifi"

Nota: Als u de host-ap driver gebruikt moet u de kaart in Managed mode zetten, voordat deze gebruikt kan worden met wpa_supplicant. U doet dit door de variabee iwconfig_eth0="mode managed" toe te voegen in /etc/conf.d/net.

Dit was eenvoudig, niet? We moeten wpa_supplicant echter nog in stellen, en dat is wat moeilijker, al is dit afhankelijk van de beveiliging van het Access Point waarmee u de verbinding wilt maken. Het onderstaande voorbeeld komt rechtstreeks uit /etc/wpa_supplicant.conf.example. Dit bestand komt met wpa_supplicant mee wanneer u het installeert.

Codevoorbeeld 2.3: Een voorbeeld /etc/wpa_supplicant.conf

# De onderstaande regel mag niet aangepast
ctrl_interface=/var/run/wpa_supplicant

# Zorg er voor dat alleen de root de WPA instelling kan lezen
ctrl_interface_group=0

# Laat wpa_supplicant het scannen en kiezen van het AP doen
ap_scan=1

# Eenvoudig: WPA-PSK, PSK als een ASCII wachtwoord, sta alle beveiligingen toe
network={
  ssid="simple"
  psk="very secret passphrase"
  # Hoe hoger de prioriteit, hoe sneller dit netwerk wordt gekozen
  priority=5
}

# Hetzelfde, maar nu met SSID-specifieke scan (voor AP's die geen
# broadcast SSID toestaan)
network={
  ssid="second ssid"
  scan_ssid=1
  psk="very secret passphrase"
  priority=2
}

# Alleen WPA-PSK gebruiken. Elke beveiliging is goed
network={
  ssid="example"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Platte tekst verbinding (Geen WPA, geen IEEE 802.1X)
network={
  ssid="plaintext-test"
  key_mgmt=NONE
}

# Gedeelde WEP sleutel (geen WPA, geen IEEE 802.1X)
network={
  ssid="static-wep-test"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Gedeelde WEP sleutel (geen WPA, geen IEEE 802.1X) met Shared Key
# IEEE 802.11 authenticatie
network={
  ssid="static-wep-test2"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# IBSS/ad-hoc netwerk met WPA-None/TKIP
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="secret passphrase"
}

4.c. Wireless Tools

Basis instelling en Managed Mode

Wireless Tools geeft een eenvoudige methode om een eenvoudig wireless netwerk via WEP op te zetten. Hoewel WEP een zwakke beveiliging is, is het wel de meest gebruikte.

Het instellen van wireless tools gebeurd via enkele variabelen. Het onderstaande voorbeeld beschrijft alles wat u nodig heeft. Wat u moet onthouden is dat geen configuratie betekent dat u verbinding zoekt met het sterkste onbeveiligde netwerk in de buurt - er wordt altijd geprobeerd u ergens mee te verbinden.

Codevoorbeeld 3.1: Installeren van wireless-tools

# emerge net-wireless/wireless-tools

Nota: U kunt de instellingen voor uw draadloos netwerk in /etc/conf.d/wireless opslaan, maar we raden aan om /etc/conf.d/net te gebruiken.

Belangrijk: U moet kijken in het hoofdstuk benoemen van variabelen voor meer informatie.

Codevoorbeeld 3.2: Voorbeeld van een iwconfig setup in /etc/conf.d/net

# Prefer iwconfig over wpa_supplicant
modules=( "iwconfig" )

# Stel WEP sleutels in voor Access Points ESSID1 en ESSID2
# U kunt maximaal 4 WEP sleutels instellen, maar slechts 1 kan actief zijn
# op elk moment. Daarom stellen we standaard [1] in als sleutel en zetten [1] ook
# weer aan, na het veranderen van de actieve sleutel.
# We doen dit voor het geval u ander ESSID's instelt met een andere WEP sleutel
#
# Als er een s voor de sleutel staat is het een ASCII sleutel, anders is het HEX
#
# enc open geeft open security (beste beveiliging)
# enc restricted geeft restricted security (minder veilig)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# Het onderstaande werkt allen als we scannen naar AP's

# Soms zijn er meerdere Access Points beschikbaar, dus geven we een
# voorkeurslijst met de volgorde waarin verbinding wordt gezocht
preferred_aps=( "ESSID1" "ESSID2" )

Verdere instellingen voor de keuze van een Access Point

U kunt extra optie toevoegen om een Acces Point te kiezen, maar meestal is dit niet nodig.

U kunt zelf beslissen of u alleen verbindingen wilt met door u gekozen Access Points of niet. Standaard zal altijd geprobeerd worden om een verbinding te maken met een onbeveiligd Access Point, indien alle ingestelde opties werkten. U kunt dit instellen met de variabele associate_order. De onderstaande tabel laat de mogelijkheden zien.

Waarde Beschrijving
any Standaard instelling
preferredonly Alleen verbinding maken met zichtbare AP's uit de voorkeurslijst
forcepreferred Probeer toch een verbinding te maken met de AP's uit de voorkeurslijst, ook als ze niet worden gevonden tijdens een scan
forcepreferredonly Scan niet naar AP's - probeer de AP's in de voorkeurslijst één voor één
forceany Hetzelfde als forcepreferred + verbinden met elk ander beschikbaar AP

Tot slot hebben we een de lijsten van de blacklist_aps en unique_ap. blacklist_aps werkt op eenzelfde manier als preferred_aps. unique_ap is altijd ja of nee en bepaald of een tweede wireless interface een verbinding mag leggen met hetzelfde Access Point als de eerste interface.

Codevoorbeeld 3.3: Voorbeeld met blacklist_aps en unique_ap

# Soms wilt u een Access Point nooit gebruiken
blacklist_aps=( "ESSID3" "ESSID4" )

# Als u meer dan één wireless kaart hebt, kunt u aangeven
# of er meer dan één verbinding met één Access Point gemaakt mag worden
# De waarde kan "yes" of "no" zijn
# Standaard is "yes"
unique_ap="yes"

Ad-Hoc en Master Modes

Als u een Ad-Hoc knooppunt wilt opzetten als u geen Access Point kunt bereiken in managed mode, dan kan dat.

Codevoorbeeld 3.4: Terugvallen op ad-hoc mode

adhoc_essid_eth0="This Adhoc Node"

U wilt verbinding maken met Ad-Hoc netwerken of als in Master mode draaien om zelf een Access Point te worden? De instelling om dat te doen staan hieronder. U kunt WEP sleutels instellen zoals hierboven is beschreven.

Codevoorbeeld 3.5: Voorbeeld van een ad-hoc/master instelling

# Stel de mode in - dit kan managed (standaard), ad-hoc of master zijn
# Niet alle drivers ondersteunen alle modes
mode_eth0="ad-hoc"

# Stell de ESSID van de interface in
# In managed mode, zorgt dit er voor dat de interface alleen één specifieke
# ingestelde ESSID probeert te vinden en geen enkele andere
essid_eth0="This Adhoc Node"

# Indien we niets opgeven gebruiken we kanaal 3
channel_eth0="9"

Belangrijk: Het onderstaande tekst is letterlijk overgenomen uit de BSD wavelan documentatie. Er zijn 14 kanalen mogelijk. In Noord Amerika is het gebruik van de kanalen 1-11 toegestaan, in het grootste gedeelte van Europa de kanalen 1-13, in Frankrijk de kanalen 10-13 en in Japan alleen kanaal 14. Als u twijfelt, kijk dan in de documentatie van uw netwerkkaart of Acces Point. Zorg er in ieder geval voor dat u hetzelfde kanaal gebruik als uw Acces Point. Voor de meeste in Noord Amerika en Europa verkochte kaarten is dit kanaal 3; In Frankrijk is de standaard 11 en in Japan uiteraard kanaal 14.

Problemen met Wireless Tools

Er zijn nog enkele variabelen die u kunnen helpen wanneer u wireless kaart niet naar behoren werkt. In de onderstaande tabel staan mogelijke oplossingen.

Variabele Standaard Instelling Beschrijving
iwconfig_eth0 Kijk in de iwconfig handleiding voor de mogelijke opties voor iwconfig
iwpriv_eth0 Kijk in de iwpriv handleiding voor de mogelijke opties voor iwpriv
sleep_scan_eth0 0 Het aantal seconden dat gewacht wordt voor een scan. Dit is nodig wanneer de driver/firmware meer tijd nodig om te activeren.
sleep_associate_eth0 5 Het aantal seconden dat gewacht wordt op een verbinding voordat wordt gezocht naar een volgend Access Point
associate_test_eth0 MAC Sommige drivers resetten het MAC adres niet naar een geldig alternatief wanneer er iets fout gaat. Andere drivers resetten de kwaliteit van de verbinding niet wanneer ze de verbinding verliezen. Mogelijke instellingen zijn MAC, quality en all.
scan_mode_eth0 Sommige drivers moeten scannen in ad-hoc mode, dus als het fout gaat bij het scannen, stel hier dan ad-hoc in.
iwpriv_scan_pre_eth0 Stuur iwpriv commando's naar de interface voor het scannen. Kijk in de iwpriv handleiding voor de mogelijkheden.
iwpriv_scan_post_eth0 Stuur iwpriv commando's naar de interface na het scannen. Kijk in de iwpriv handleiding voor de mogelijkheden.

4.d. Instellen van de netwerk instellingen per ESSID

Het kan zijn dat u met een vast IP adres werkt als u verbinding heeft met ESSID1 en dat u DHCP wilt gebruiken bij ESSID2. De meeste module variabelen kunt u dan ook instellen per ESSID. Dat doen we als volgt.

Nota: Dit werkt indien u wpa_supplicant of Wireless Tools gebruikt.

Belangrijk: U kunt ook moeten kijken in deBenoemen van variabelen documentatie.

Codevoorbeeld 4.1: Instelling per ESSID instellen

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )

# We kunnen naam servers en dergelijke definiëren
# LET OP: DHCP past alles aan, tenzij ingesteld om dat niet te doen
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# Instellen per MAC adres of Access Point
# Dit is handig als u op meerdere plaatsen dezelfde ESSID gebruikt
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

5. Extra functies toevoegen

5.a. Standaard functies en hun mogelijkheden

Er kunnen vier functies rondom start en stop worden aangeroepen. Deze functies worden aangeroepen met een verwijzing naar een interface naam, zo kunt u meedere adapters aansturen met één functie.

Zowel preup() als predown() geven de waarde 0 als resultaat wanneer ze hun werk goed hebben gedaan. Het instellen van de interface kan dan verder gaan. Als preup() een andere waarde dan nul als resultaat heeft, wordt het instellen van de interface gestopt. Als dit bij predown gebeurt wordt het uitschakelen van de interface gestopt.

De resultaten die postup() en postdown() geven worden genegeerd omdat met deze informatie niets kan worden gedaan.

${IFACE} is wordt ingesteld op de interface die u wilt starten. ${IFVAR} is de waarde van ${IFACE}, maar dan in een formaat dat bash kan gebruiken.

Codevoorbeeld 1.1: Voorbeelden van pre/post up/down functies

preup() {
  # Probeer eerst een verbinding te maken voor deze wordt vastgelegd.
  # Dit werkt niet voor alle adapters en heeft het pakket mii-diag nodig
  # om gebruikt te kunnen worden.
  if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Probeer eerst een verbinding te maken voor deze wordt vastgelegd.
  # Dit werkt niet voor alle adapters en heeft het pakket ethtool nodig om
  # gebruikt te kunnen worden.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Vergeet niet om een 0 als resultaat door te sturen indien succesvol
  return 0
}

predown() {
  # Standaard wordt getest of de root op een NFS bestandssysteem staat en
  # mogen de interfaces niet stoppen als dat zo is. Wanneer u de functie
  # predown() instelt is deze standaard overschreven. Hier is de code, voor
  # als u die nog steeds wilt gebruiken...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Vergeet niet om een 0 als resultaat door te sturen indien succesvol
  return 0
}

postup() {
  # Deze functie kunt u onder ander gebruiken om contact te maken met een
  # dynamic DNS service. Een ander mogelijkheid zou zijn om email te
  # verzenden/ontvangen zodra de interface is gestart.
       return 0
}

postdown() {
  # Deze functie staat hier om de handleiding compleet te houden, maar
  # we hebben er nog geen mogelijkheden bij bedacht ;-)
  return 0
}

5.b. Wireless Tools functies en hun mogelijkheden

Nota: Het onderstaande werkt niet met WPA Supplicant - maar de variabelen ${ESSID} en ${ESSIDVAR} wel beschikbaar voor postup().

De twee onderstaande functies ondersteuning de functie associate. De functies roepen een interface aan en u kunt zodoende meerdere interfaces met één functie aansturen.

De functie preassociate() geeft een 0 als resultaat wanneer alles werkt. Het instellen van de interface kan dan verder gaan. Indien preassociate() een andere waarde dan 0 als resultaat geeft, kan het instellen van de interface niet verder gaan.

Het resultaat van de functie postassociate() wordt weer genegeerd, omdat u niets hoeft te doen indien de functie niet werkt.

${ESSID} wordt ingesteld op de exacte ESSID van het access poaint waar u verbinding mee wilt maken. ${ESSIDVAR} is de variabele ${ESSID}, maar dan bruikbaar gemaakt voor bash.

Codevoorbeeld 2.1: pre/post association functions

preassociate() {
  # Het onderstaande voorbeeld voegt twee variabelen toe, leap_user_ESSID
  # en leap_pass_ESSID. Als deze zijn ingesteld voor uw ESSID, wordt het script
  # CISCO LEAP gedraaid.

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login Failed for ${user}"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # Deze functie staat hier om de handleiding compleet te houden, maar
  # we hebben er nog geen mogelijkheden bij bedacht ;-)
  return 0
}

Nota: ${ESSID} en ${ESSIDVAR} zijn niet te gebruiken in de functies predown() en postdown().

6. Netwerk management

6.a. Netwerk Beheer

Als u vaak met uw computer onderweg bent, hebt u lang niet altijd een netwerk, kabel of via een access point, tot uw beschikking. Ook kan het handig zijn wanneer het netwerk automatisch start zodra u een netwerkkabel in de computer steekt of wanneer er een access point wordt gevonden.

In dit hoofdstuk vindt u enkele toepassingen die u hierbij kunnen helpen.

Nota: Deze handleiding bespreekt alleen ifplugd, maar er zijn ook alternatieven als quickswitch beschikbaar.

6.b. ifplugd

ifplugd is een daemon die uw netwerk interfaces opstart en stopt wanneer de netwerkkabel in of uit de computer gaat. Het kan ook access points detecteren wanneer u in de buurt komt.

Codevoorbeeld 2.1: Installeren van ifplugd

# emerge sys-apps/ifplugd

Het instellen van ifplugd is eenvoudig. Het bestand met de instellingen staat in /etc/conf.d/ifplugd. Voor meer details kunt u kijken in de handleiding op uw pc, man ifplugd.

Codevoorbeeld 2.2: Voorbeeld instellingen voor ifplug

# Geef aan welke interfaces in de gaten worden gehouden
INTERFACES="eth0"

AUTO="no"
BEEP="yes"
IGNORE_FAIL="yes"
IGNORE_FAIL_POSITIVE="no"
IGNORE_RETVAL="yes"
POLL_TIME="1"
DELAY_UP="0"
DELAY_DOWN="0"
API_MODE="auto"
SHUTDOWN="no"
WAIT_ON_FORK="no"
MONITOR="no"
ARGS=""

# Extra instellingen voor ifplugd, per interface in te stellen. De
# globale instellingen worden genegeerd als u hier een instelling plaatst
# voor een interface
MONITOR_wlan0="yes"
DELAY_UP_wlan0="5"
DELAY_DOWN_wlan0="5"

Print

Upgedate op 1 april 2008

De originele versie van dit document was laatst geupdate om 13 april 2014

Korte inhoud: Dit is het Gentoo Handboek, een poging om de Gentoo/Linux informatie te centraliseren. Dit handboek bevat instructies voor een internet installatie op x86 systemen en delen over werken met Gentoo en Portage.

Sven Vermeulen
Author

Roy Marples
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Dimitry Bradt
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.