Gentoo Logo

Gentoo Linux AMD64 Handbuch

Inhalt:

  • Gentoo installieren
    In diesem Abschnitt lernen Sie, wie Sie Gentoo Linux auf Ihrem System installieren können.
    1. Über die Gentoo Linux Installation
      Dieses Kapitel ist eine Einleitung in den Installationsansatz, welcher in diesem Handbuch beschrieben wird.
    2. Auswählen des richtigen Installationsmediums
      Sie können Gentoo auf viele Arten installieren. Dieses Kapitel erläutert wie Sie Gentoo mit der minimalen Installations-CD installieren.
    3. Konfiguration des Netzwerks
      Um in der Lage zu sein, den aktuellsten Quellcode herunterladen zu können, müssen Sie vorher das Netzwerk einrichten.
    4. Vorbereiten der Festplatte(n)
      Um in der Lage zu sein Gentoo installieren zu können, müssen Sie die notwendigen Partitionen erstellen. Dieses Kapitel beschreibt, wie man eine Festplatte für den Gebrauch partitioniert.
    5. Installation der Gentoo Installationsdateien
      Installationen von Gentoo funktionieren mit einem stage3-Archiv. In diesem Kapitel wird beschrieben, wie Sie ein stage3-Archiv entpacken und Portage konfigurieren.
    6. Installation des Gentoo Basissystem
      Nach der Installation und Konfiguration der stage3 steht Ihnen ein Gentoo Basissystem zur Verfügung. Dieses Kapitel beschreibt wie Sie zu diesem Punkt kommen.
    7. Konfiguration des Kernels
      Der Linux-Kernel ist der Kern einer jeden Distribution. Dieses Kapitel erläutert, wie man den Kernel konfiguriert.
    8. Konfiguration des Systems
      Sie werden einige wichtige Konfigurationsdateien editieren müssen. In diesem Kapitel erhalten Sie eine Übersicht über diese Dateien und eine Anleitung wie man fortfahren sollte.
    9. Installation der benötigten Systemtools
      In diesem Kapitel helfen wir Ihnen bei der Auswahl und Installation einiger wichtiger Tools.
    10. Konfiguration des Bootloaders
      In diesem Kapitel beschreiben wir den GRUB Bootloader und führen Sie durch die Anpassung von GRUB an Ihre Bedürfnisse.
    11. Abschließen Ihrer Gentoo Installation
      Sie sind fast fertig. Wir werden nur noch einen (oder mehrere) Benutzer für Ihr System erstellen.
    12. Wie geht es weiter?
      Nun haben Sie Ihr Gentoo System. Was nun?
  • Arbeiten mit Gentoo
    Lernen Sie mit Gentoo zu arbeiten, wie Sie Software installieren, Variablen anpassen, das Verhalten von Portage ändern, etc.
    1. Eine Portage Einführung
      Dieses Kapitel erklärt die "einfachen" Schritte, die ein Benutzer definitiv kennen muss, um Software auf seinem System zu betreuen.
    2. USE Flags
      USE-Flags sind ein sehr wichtiger Aspekt von Gentoo. In diesem Kapitel erfahren Sie wie man mit USE-Flags arbeitet und wie USE-Flags mit Ihrem System interagieren.
    3. Portage Features
      Entdecken Sie die Funktionen von Portage, wie Unterstützung für verteilte Kompilierung, ccache und mehr.
    4. Initskripte
      Gentoo benutzt ein spezielles Initskriptformat, welches, neben weiteren Funktionen, abhängigkeitsbezogene Entscheidungen und virtuelle Initskripte ermöglicht. Dieses Kapitel erklärt diese Aspekte und erklärt, wie Sie mit diesen Skripten umgehen.
    5. Umgebungsvariablen
      Mit Gentoo können Sie die Umgebungsvariablen Ihres Systems ganz einfach bearbeiten. Dieses Kapitel erklärt häufig gebrauchte Umgebungsvariablen und wie Sie mit diesen umgehen.
  • Arbeiten mit Portage
    "Arbeiten mit Portage" bietet eine tiefergehende Behandlung von Portage, Gentoos Software Management Tool.
    1. Dateien und Verzeichnisse
      Wenn Sie Portage ein wenig näher kennenlernen wollen, sollten Sie wissen, wo welche Daten und Dateien abgelegt werden.
    2. Konfiguration durch Variablen
      Portage ist vollständig durch verschiedene Variablen konfigurierbar, die Sie in der Konfigurationsdatei oder als Umgebungsvariablen setzen können.
    3. Mischen von Softwarezweigen
      Gentoo bietet Software eingeteilt in verschiedenen Zweigen an, abhängig von der Architektur und Stabilität. "Mischen von Softwarezweigen" informiert Sie darüber wie man diese Zweige verwendet und wie man individuell diese Aufteilung außer Kraft setzt.
    4. Zusätzliche Portage Tools
      Portage bringt zusätzliche Tools mit, die Ihnen das Gentoo Erlebnis etwas vereinfachen sollen. Lesen Sie weiter um herauszufinden wie man dispatch-conf und andere Tools benutzt.
    5. Abweichen vom Offiziellen Tree
      "Abweichen vom Offiziellen Tree" gibt Ihnen einige Tipps und Tricks, wie Sie Ihren eigenen Portage Tree nutzen können, wie Sie nur Kategorien aktualisieren, die Sie möchten, "inject" von Paketen und mehr.
    6. Erweiterte Portage-Funktionen
  • Gentoo Netzwerk Konfiguration
    Eine verständliche Anleitung zur Netzwerknutzung in Gentoo.
    1. Zu Beginn
      Ein Leitfaden um Ihre Netzwerkschnittstellen zügig für die häufigsten Umgebungen einzurichten.
    2. Fortgeschrittene Konfiguration
      Hier lernt man wie die Konfiguration funktioniert. Sie werden dies brauchen, bevor Sie sich mit der modularen Netzwerkkonfiguration vertraut machen.
    3. Modulare Vernetzung
      Gentoo ermöglicht flexible Netzwerkkonfiguration. Hier wird erläutert wie Sie einen DHCP-Client auswählen, Bonding, VLANS und mehr einrichten.
    4. Drahtlose Netzwerkfunktionalität
      Wireless kann eine heikle Angelegenheit sein. Mit etwas Glück kriegen Sie es zum Laufen!
    5. Funktionalität hinzufügen
      Wenn Sie etwas Zeit mitbringen können Sie Ihre eigenen Funktionen zum Netzwerk hinzufügen.
    6. Netzwerkmanagement
      Für Laptop-Benutzer oder Menschen die Ihre Computer zwischen verschiedenen Netzwerken hin- und herbewegen.

A. Gentoo installieren

1. Über die Gentoo Linux Installation

1.a. Einleitung

Willkommen

Zuallererst, Willkommen bei Gentoo. Sie sind dabei, in die Welt der Wahlmöglichkeiten und Performance einzusteigen. Bei Gentoo dreht sich vieles um Auswahlmöglichkeiten. Während der Installation von Gentoo wird Ihnen das mehrfach bewusst werden -- Sie haben die Wahl, wie viele Pakete Sie selber kompilieren, wie Sie Gentoo installieren, welche Systemlogger Sie benutzen und so weiter...

Gentoo ist eine schnelle, moderne Metadistribution mit einem klaren und flexiblen Design. Gentoo ist rund um freie Software gebaut und versteckt das, was unter der Haube steckt, nicht vor seinen Benutzern. Portage, das von Gentoo benutzte Paketmanagementsystem, ist in Python geschrieben, was bedeutet, dass Sie sich die Quelltexte einfach anschauen und nach Belieben verändern können. Gentoos Paketsystem benutzt den Quelltext (obwohl auch Unterstützung für vorkompilierte Pakete vorhanden ist) und die Konfiguration von Gentoo findet in normalen Textdateien statt. Mit anderen Worten: Offenheit überall.

Es ist sehr wichtig, das Sie verstehen, dass Auswahlmöglichkeiten das sind, was Gentoo ausmacht. Wir fordern Sie nicht auf, irgendetwas zu tun, was Sie nicht möchten.

Wie ist die Installation strukturiert?

Die Installation von Gentoo kann als eine Prozedur von 10 Schritten gesehen werden, was den Kapiteln 2 bis 11 entspricht. Jeder Schritt führt zu einem bestimmten Ergebnis:

  • Nach Schritt 1 befinden Sie sich in einer funktionierenden Umgebung aus der Sie Gentoo installieren können
  • Nach Schritt 2 haben Sie Ihre Internet-Verbindung hergestellt
  • Nach Schritt 3 sind Ihre Festplatten für die Installation vorbereitet
  • Nach Schritt 4 ist Ihre Installationsumgebung vorbereitet und Sie sind bereit zum Chroot in die neue Umgebung
  • Nach Schritt 5 sind die wichtigsten Pakete, die in allen Gentoo Installationen gleich sind, installiert
  • Nach Schritt 6 haben Sie Ihren Linux-Kernel kompiliert
  • Nach Schritt 7 haben Sie die meisten Ihrer Gentoo Systemkonfigurationsdateien geschrieben
  • Nach Schritt 8 sind notwendige System-Tools (die Sie aus einer netten Liste auswählen können) installiert
  • Nach Schritt 9 ist der Bootloader Ihrer Wahl installiert und konfiguriert und Sie haben sich in Ihre neue Gentoo Installation eingeloggt
  • Nach Schritt 10 ist Ihre neue Gentoo Linux Umgebung bereit entdeckt zu werden

Wenn Ihnen verschiedene Auswahlmöglichkeiten vorgestellt werden, geben wir unser Bestes, Ihnen die Vor- und Nachteile vorzustellen. Wir werden mit einer Standardauswahl fortfahren, die im Titel durch "Standard:" gekennzeichnet ist. Die anderen Wahlmöglichkeiten werden als "Alternativ:" gekennzeichnet. Denken Sie nicht, dass Standard das ist, was wir empfehlen. Es ist der Weg, von dem wir denken, dass ihn die meisten Benutzer gehen werden.

Manchmal können Sie optionalen Schritten folgen. Solche Schritte sind als "Optional:" gekennzeichnet und nicht unbedingt notwendig, um Gentoo zu installieren. Dennoch können optionale Schritte von vorherigen Entscheidungen abhängen. Wir informieren Sie, wenn das passiert. Sowohl wenn Sie die Entscheidung treffen, als auch wenn der optionale Schritt beschrieben wird.

Was sind meine Optionen?

Sie können Gentoo auf vielen verschiedenen Wegen installieren. Sie können eine Installations-CD herunterladen und von dieser CD aus eine Installation durchführen, Sie können eine bereits installierte Distribution nutzen, eine nicht-Gentoo bootbare CD (wie z.B. Knoppix), eine aus dem Netz gestartete Umgebung, eine Rettungsdiskette, etc.

Dieses Dokument beschreibt die Installation mit einer Gentoo Installations-CD, oder, in bestimmten Fällen, Netboot. Wir gehen davon aus, dass Sie die aktuellste Version eines jeden Pakets installieren wollen.

Notiz: Für weitere Hilfe zu den anderen Installationsmöglichkeiten, einschließlich der Nutzung von nicht-Gentoo CDs, lesen Sie bitte unseren Leitfaden über alternative Installationsmöglichkeiten.

Wenn Sie eine netzwerklose Installation durchführen möchten, verweisen wir Sie an dieser Stelle auf die Gentoo 2008.0 Handbücher, die die Installationsanweisungen für netzwerklose Umgebungen beinhalten.

Beachten Sie bitte weiterhin, dass Sie den Anweisungen in den Gentoo 2008.0 Handbüchern folgen müssen, wenn Sie planen GRP (die Gentoo Reference Platform, eine Reihe vorkompilierter Pakete) einzusetzen.

Wir bieten ebenfalls ein Gentoo Installation Tipps & Tricks Dokument, das weitere nützliche Informationen enthält. Wenn Sie ein erfahrener Gentoo-Anwender sind und nur eine kurze Installations-Checkliste benötigen, können Sie auch unsere Schnellinstallationsanleitung verwenden, verfügbar in unserer Dokumentationsübersicht. Nicht jede Architektur verfügt zurzeit über eine Schnellinstallationsanleitung.

Sie haben außerdem verschiedene Möglichkeiten: Sie können das gesamte System von Grund auf kompilieren oder eine vorkompilierte Umgebung nutzen und damit in kürzester Zeit zu einem laufenden System kommen. Außerdem haben Sie noch einen "Mittelweg", in dem Sie nicht alles kompilieren und von einem halbfertigen System starten.

Probleme?

Wenn Sie ein Problem in der Installation (oder in der Dokumentation) entdecken, schauen Sie bitte in unserer Fehlerdatenbank, ob der Fehler bereits bekannt ist. Wenn nicht erstellen Sie bitte einen Fehlerbericht, damit wir uns der Sache annehmen können. Haben Sie keine Angst vor den Entwicklern, denen Ihr Fehlerbericht zugeteilt wird -- für gewöhnlich essen sie keine Menschen.

Beachten Sie aber, dass dieses Dokument, welches Sie gerade lesen, architekturspezifisch ist, auch wenn es Referenzen zu anderen Architekturen enthält. Dies liegt daran, dass große Teile des Gentoo Handbuchs Quellcode verwenden, welcher für alle Architekturen identisch ist (um doppelten Arbeitsaufwand und die Verschwendung von Entwicklungsressourcen zu verhindern). Wir werden versuchen dies auf ein Minimum zu beschränken um Missverständnisse zu vermeiden.

Wenn Sie sich nicht sicher sind, ob ein Problem ein Benutzerproblem ist (ein Fehler, den Sie trotz sorgfältiger Lektüre dieser Dokumentation machen) oder ein Softwareproblem (ein Fehler, den wir trotz sorgfältigen Tests der Installation/Dokumentation begangen haben) sollten Sie #gentoo.de im irc.freenode.net Netz besuchen, ansonsten sind Sie natürlich auch so willkommen, da unser Chat-Channel alle Gentoo-Themen abdeckt. :)

Apropos, wenn Sie eine Frage betreffend Gentoo haben, werfen Sie zunächst einen Blick in die Häufig gestellten Fragen (FAQ), die Teil der Gentoo Dokumentation sind. Sie können auch die FAQs in unserem Forum lesen.

2. Auswählen des richtigen Installationsmediums

2.a. Hardwareanforderungen

Einleitung

Bevor wir loslegen, sollten Sie eine Liste aller Hardwareanforderungen erstellen, um Gentoo erfolgreich auf Ihrem System installieren zu können. Diese Liste hängt natürlich auch von Ihrer Prozessor-Architektur ab.

Hardwareanforderungen

Minimal CD LiveCD
CPU Jede AMD64-CPU oder EM64T-CPU (Core 2 Duo & Quad Prozessoren sind EM64T)
Arbeitsspeicher 256 MB 512 MB
Festplattenspeicher 2.5 GB (ohne Swap-Speicher)
Swap Speicher Mindestens 256 MB

Sie sollten die Gentoo AMD64 Projektseite lesen, bevor Sie fortfahren.

2.b. Die Gentoo Installations-CD

Einleitung

Die Gentoo Installations-CDs sind bootfähige CDs, die eine eigene Gentoo-Umgebung enthalten. Sie erlauben es Ihnen, Linux von der CD zu booten. Während des Bootvorgangs wird Ihre Hardware erkannt und die entsprechenden Treiber geladen. Die Gentoo Installations-CDs werden von den Gentoo-Entwicklern gepflegt.

Alle Installations-CDs ermöglichen es Ihnen, das System zu booten, das Netzwerk aufzusetzen, Ihre Partitionen zu initialisieren und eine Gentoo-Installation über das Internet durchzuführen.

Gentoo Minimal Installations-CD

Die Minimal-Installations-CD heißt install-amd64-minimal-<release>.iso und benötigt ungefähr 200 MB Festplattenspeicher. Sie können diese Installations-CD zur Installation von Gentoo benutzen, aber nur mit einer funktionierenden Internetverbindung.

Gentoo Linux LiveDVDs

Ungefähr alle 6 Monate erstellt das Gentoo Ten Projekt eine spezielle DVD, die auch zur Installation von Gentoo benutzt werden kann. Die weiteren Anweisungen in diesem Kapitel beziehen sich auf die Minimal-Installations-CD und könnten deshalb etwas abweichen. Auf der LiveDVD (oder jeder anderen bootbaren Linux-Umgebung) können Sie einen Root-Prompt durch Ausführen von sudo su - oder sudo -i in einem Terminal erhalten.

Der stage3-Tarball

Ein stage3-Tarball ist ein Archiv, das eine minimale Gentoo-Umgebung enthält. Dieses ist dazu geeignet, die Gentoo-Installation mit den Anweisungen in diesem Handbuch fortzuführen. In der Vergangenheit beschrieb das Gentoo-Handbuch die Installation unter Verwendung eines von drei stage-Tarballs. Obwohl Gentoo weiterhin die stage1- und stage2-Tarballs bereitstellt, verwendet die offizielle Installationsmethode einen stage3-Tarball. Wenn Sie daran interessiert sind, eine Gentoo-Installation mit einem stage1- oder stage2-Tarball durchzuführen, lesen Sie bitte die Gentoo FAQ zu Wie installiere ich Gentoo mit einem stage1- oder stage2-Tarball?

Stage3-Tarballs können aus releases/amd64/autobuilds/current-stage3/ von einem der offiziellen Gentoo Mirror heruntergeladen werden und sind nicht auf der LiveCD vorhanden.

2.c. Downloaden, Brennen und Booten einer Gentoo Installations-CD

Downloaden und Brennen der Installations-CD

Sie haben also entschieden, eine Gentoo Installations-CD zu benutzen. Zuerst werden wir nun die Installations-CD herunterladen und brennen. Wir haben nun einige Worte über die zahlreichen Installations-CDs verloren, vermutlich interessiert Sie nun auch, wo Sie sie herbekommen können?

Sie können jede Installations-CD von einem unserer Mirror herunterladen. Die Installations-CDs finden sich im Verzeichnis releases/amd64/autobuilds/current-iso/.

In diesem Verzeichnis finden Sie ISO-Dateien. Dies sind komplette CD-Abbilder, die Sie auf eine CD-R brennen können.

Um festzustellen, ob eine heruntergeladene Datei fehlerfrei übertragen wurde, können Sie die SHA-2-Prüfsumme der Datei mit der von uns bereitgestellten SHA-2-Prüfsumme (wie z.B. install-amd64-minimal-<release>.iso.DIGESTS) vergleichen. SHA-2-Prüfsummen vergleichen Sie unter Linux/Unix mit dem sha512sum Tool oder mit File Checksum Tool unter Windows.

Ein weiterer Weg, die Validität der heruntergeladenen Datei zu überprüfen, ist die Nutzung von GnuPG, um die kryptografische Signatur (die .asc Datei) zu verifizieren. Laden Sie die Signaturdatei herunter und beschaffen Sie den Public Key, dessen Key-ID auf der Release Engineering Projektseite gefunden werden kann.

Befehlsauflistung 3.1: Beschaffen des Public Keys

(... ersetzen Sie die Key-ID mit der, die auf der Release-Engineering-Seite steht ...)
$ gpg --keyserver subkeys.pgp.net --recv-keys 96D8BF6D 2D182910 17072058

Verifizieren Sie nun die Signatur:

Befehlsauflistung 3.2: Verifizieren der Dateien

(Verifzieren der kryptografischen Signatur)
$ gpg --verify <downloaded iso.DIGESTS.asc>
(Verifzieren der Prüfsumme)
$ sha1sum -c <downloaded iso.DIGESTS.asc>

Um die heruntergeladenen ISO(s) zu brennen, müssen Sie den RAW-Modus wählen. Wie das im einzelnen funktioniert hängt sehr stark vom verwendeten Programm ab. Wir stellen cdrecord und K3B vor; weitere Informationen finden Sie in der Gentoo FAQ.

  • Mit cdrecord schreiben Sie einfach cdrecord dev=/dev/hdc <heruntergeladenes ISO-Image> (ersetzen Sie /dev/hdc durch den Gerätepfad Ihres CD-RW-Laufwerk).
  • Mit K3B wählen Sie Tools > Burn CD Image. Danach können Sie das ISO-Image mit dem 'Image to Burn' Feld auswählen. Schließlich klicken Sie Start.

Booten der Installations-CD

Wenn Sie Ihre Installations-CD erst einmal gebrannt haben, ist es Zeit diese zu booten. Entfernen Sie alle CDs aus den CD-Laufwerken, starten Sie Ihr System neu und gehen Sie ins BIOS. Im Normalfall gelangen sie durch drücken der ENTF-, F1- oder ESC-Taste dorthin. Im BIOS ändern Sie die Bootreihenfolge, so dass zuerst von der CD-ROM gebootet wird. Tun Sie dies nicht, bootet das System nach dem Neustart wieder von der Festplatte.

Jetzt legen Sie die Installations-CD in das CD-ROM Laufwerk und starten neu. Sie sollten einen Bootscreen zu sehen bekommen. An diesem Screen können Sie Enter drücken, um Gentoo mit den standardmäßigen Bootoptionen zu starten. Sie können auch einen anderen Kernel und angepasste Bootoptionen auswählen und erst dann Enter drücken.

Wenn der Boot-Prompt angezeigt wird, haben Sie die Möglichkeit, die verfügbaren Kernel (F1) sowie Bootoptionen (F2) anzuzeigen. Wenn Sie innerhalb von 15 Sekunden keine Wahl treffen (entweder die Informationen anzuzeigen oder einen Kernel zu verwenden), wird die LiveCD einfach von der Platte booten. Das macht es möglich, dass Sie nach der Installation rebooten und das neu installierte System ausprobieren können, ohne die CD aus dem Laufwerk entfernen zu müssen. Das ist insbesondere für Remote-Installationen sehr nützlich.

Wir haben erwähnt, dass Sie einen Kernel angeben können. Auf unseren Installations-CDs bieten wir verschiedene Kernel an. Der Standardkernel heißt gentoo. Die anderen Kernel sind für spezille Hardwareanforderungen und die -nofb-Varianten verwenden keinen Framebuffer.

Nachfolgend finden Sie einen kurzen Überblick über die verfügbaren Kernel:

Kernel Beschreibung
gentoo Standardkernel mit Unterstützung für K8-CPUs (inklusive NUMA-Unterstützung) und EM64T-CPUs
gentoo-nofb Genau wie gentoo nur ohne Framebuffer-Unterstützung
memtest86 Testet Ihren lokalen RAM auf Fehler

Sie können auch noch einige Optionen mitgeben. Diese repräsentieren zusätzliche optionale Einstellungen die Sie (de)aktivieren können.

Hardware options:

acpi=on
Dies lädt Unterstützung für ACPI und führt auch dazu, dass der acpid Dämon von der CD beim Boot gestartet wird. Dies wird nur benötigt, wenn Ihr System ACPI benötigt um korrekt zu funktionieren. Dies wird nicht für Hyperthreading-Unterstützung benötigt.
acpi=off
Deaktiviert ACPI komplett. Dies ist auf einigen älteren Systemen hilfreich und außerdem eine Anforderung für die Verwendung von APM. Dies wird jegliche Hyperthreading-Unterstützung für Ihren Prozessor deaktivieren.
console=X
Dies richtet den seriellen Konsolenzugriff für die CD ein. Die erste Option ist das Gerät, normalerweise ttyS0 auf x86, gefolgt von jeglichen Verbindungsoptionen, welche durch Komma getrennt sind. Die Standardoptionen sind 9600,8,n,1.
dmraid=X
Dies erlaubt die Übergabe von Optionen an das device-mapper RAID-Subsystem. Optionen sollten von Anführungsstrichen umgeben sein.
doapm
Dies lädt APM-Treiberunterstützung. Dies verlangt auch, dass Sie außerdem acpi=off verwenden.
dopcmcia
Dies lädt Unterstützung für PCMCIA- und Cardbus-Hardware und sorgt außerdem dafür, dass der PCMCIA cardmgr von der CD beim Booten gestartet wird. Dies ist nur nötig, wenn von einem PCMCIA/Cardbus-Gerät gebootet wird.
doscsi
Dies lädt Unterstützung für die meisten SCSI-Controller. Dies wird auch benötigt um die meisten USB-Geräte zu booten, da Sie das SCSI-Subsystem des Kernels verwenden.
sda=stroke
Dies erlaubt es Ihnen die gesamte Festplatte zu partitionieren selbst wenn das BIOS nicht in der Lage ist große Festplatten zu verwalten. Diese Option wird nur auf Rechnern mit einem älteren BIOS verwendet. Ersetzten Sie sda durch das Gerät, welches diese Option benötigt.
ide=nodma
Dies erzwingt die Deaktivierung von DMA im Kernel und wird von einigen IDE-Chipsätzen und auch einigen CDROM-Laufwerken benötigt. Wenn Ihr System Probleme hat mit den Lesen von Ihrem IDE-CDROM sollten Sie diese Option ausprobieren. Dies deaktiviert außerdem das Ausführen der Standardeinstellungen von hdparm.
noapic
Dies deaktiviert den Advanced Programmable Interrupt Controller der sich auf neueren Motherboards findet. Er ist bekannt dafür einige Probleme mit älterer Hardware zu verursachen.
nodetect
Dies deaktiviert jegliche Autoerkennung der CD, inklusive der Geräteautoerkennung und der DHCP-Suche. Dies kann hilfreich beim debuggen eines CD- oder Treiberfehlers sein.
nodhcp
Dies deaktiviert die DHCP-Suche auf den erkannten Netzwerkkarten. Dies ist hilfreich in Netzwerken mit nur statischen Adressen.
nodmraid
Deaktiviert Unterstützung für device-mapper RAID, wie das welches für on-board IDE/SATA RAID-Controller verwendet wird.
nofirewire
Dies deaktiviert das Laden der Firewire-Module. Dies sollte nur notwendig sein, wenn Ihre Firewire-Hardware Probleme beim booten der CD verursacht.
nogpm
Dies deaktiviert die Konsolenmaus-Unterstützung gpm.
nohotplug
Dies deaktiviert das Laden der Initskripte hotplug und coldplug beim Boot. Dies kann hilfreich beim debuggen eines CD- oder Treiberfehlers sein.
nokeymap
Dies deaktiviert die Keymap-Auswahl, welche verwendet wird zur Auswahl von nicht-US Tastaturlayouts.
nolapic
Dies deaktiviert den lokalen APIC auf Uniprocessor-Kerneln.
nosata
Dies deaktiviert das Laden der Serial-ATA-Module. Dies ist hilfreich, wenn Ihr System Probleme mit dem SATA-Subsystem hat.
nosmp
Dies deaktiviert SMP, oder Symmetric Multiprocessing, auf SMP-aktiven Kerneln. Dies ist hilfreich beim debuggen von Problemen bezüglich SMP mit bestimmten Treibern und Motherboards.
nosound
Dies deaktiviert Soundunterstützung und Lautstärkeeinstellungen. Dies ist hilfreich bei Systemen, auf denen die Soundunterstützung Probleme verursacht.
nousb
Dies deaktiviert das automatische Laden von USB-Modulen. Dies ist hilfreich beim debuggen von USB-Problemen.
slowusb
Dies fügt einige zusätzliche Pausen zum Bootvorgang hinzu für langsame USB-CDROMs, wie zum Beispiel im IBM-BladeCenter.

Volumen/Gerätemanagement:

dolvm
Dies aktiviert Unterstützung für das Logical Volume Management von Linux.

Andere Optionen:

debug
Aktivieren des Debugging-Codes. Dies kann etwas unübersichtlich werden, da eine Menge Daten auf dem Bildschirm ausgegeben wird.
docache
Dies lädt den gesamten Runtime-Bereich der CD in RAM. Das ermöglicht Ihnen umount /mnt/cdrom zu verwenden und eine andere CDROM zu mounten. Diese Optionen benötigt, dass Sie mindestens doppelt soviel RAM verfügbar haben, wie die Größe der CD.
doload=X
Dies zwingt die initiale Ramdisk dazu jegliche aufgelisteten Module zu laden, wie auch deren Abhängigkeiten. Ersetzen Sie X durch den Modulnamen.
Mehere Module können mit einer durch Kommas separierten Liste spezifiziert werden.
dosshd
Startet sshd beim Boot, was hilfreich ist bei entfernten Installationen.
passwd=foo
Setzt was immer folgt nach dem Gleichheitszeichen als Passwort für root, was benötigt wird für dosshd da das Passwort für root verschlüsselt ist.
noload=X
Dies zwingt die initiale Ramdisk dazu den Ladevorgang eines bestimmten Moduls zu überspringen, welches Probleme verursachen könnte. Die Syntax ist dieselbe wie für doload.
nonfs
Deaktiviert den Start von portmap/nfsmount beim Boot.
nox
Dies zwingt die X-aktivierte LiveCD dazu X nicht automatisch zu starten sondern stattdessen auf die Kommandozeile zurückzufallen.
scandelay
Dies zwing die CD dazu für 10 Sekunden während bestimmter Abschnitte des Bootvorgangs zu warten um bestimmten Geräten, die langsamer sind, Zeit zu geben sich zu initialisieren um verwendet zu werden.
scandelay=X
Dies erlaubt es Ihnen eine beliebige Verzögerung, in Sekunden, zu bestimmten Abschnitten des Bootvorgangs hinzuzufügen um langsameren Geräten die Möglichkeit zu geben sich zu initialisieren, damit sie verwendet werden können. Ersetzen Sie X durch die Anzahl von Sekunden die pausiert werden soll.

Notiz: Die CD wird erst nach "no*" Optionen sehen vor "do*" Optionen so dass Sie jede Option aufheben können, in der exakten Reihenfolge die Sie angeben.

Nun starten Sie Ihre CD, wählen einen Kernel und die Boot Optionen. Wir zeigen Ihnen als Beispiel, wie Sie den gentoo Kernel mit dopcmcia als Kernel Parameter booten:

Befehlsauflistung 3.3: Booten einer Installations-CD

boot: gentoo dopcmcia

Sie werden dann von einem Boot-Screen und einem Fortschrittsbalken begrüßt. Wenn Sie Gentoo nicht an einem System mit einer US-Tastatur installieren, drücken Sie sofort ALT-F1 um in den Verbose-Mode zu wechseln und folgen Sie den Anweisungen. Wenn binnen 10 Sekunden keine Auswahl getroffen wurde, wird das Standard-Tastaturlayout (US) geladen und der Bootvorgang fortgesetzt. Nachdem der Bootvorgang abgeschlossen ist, werden Sie automatisch als Superuser "root" in das "Live" Gentoo Linux eingeloggt. Sie sollten einen root-Prompt ("#") auf der aktuellen Konsole sehen und durch das drücken von Alt-F2, Alt-F3 und Alt-F4 auf andere Konsolen wechseln können. Um wieder zu Ausgangskonsole zu wechseln drücken Sie Alt-F1.

Fahren Sie nun mit der Konfiguration zusätzlicher Hardware fort.

Erweiterte Hardwarekonfiguration

Wenn Sie die Installations-CD starten, versucht diese alle Ihre Hardwaregeräte zu erkennen und die entsprechenden Kernelmodule zu laden. In den allermeisten Fällen funktioniert dies wunderbar. Dennoch kann es in einzelnen Fällen passieren, dass nicht alle benötigten Module automatisch geladen werden. Wenn die PCI-Autoerkennung einen Teil Ihres Systems nicht erkennt, müssen Sie die entsprechenden Kernelmodule manuell laden.

Im nächsten Beispiel versuchen wir das 8139too Modul zu laden (Unterstützung für verschiedene Arten von Netzwerkkarten):

Befehlsauflistung 3.4: Laden von Kernelmodulen

# modprobe 8139too

Optional: Benutzerkonten

Wenn Sie planen, anderen Leuten Zugriff auf Ihre Installation zu geben oder mit irssi ohne root-Rechte chatten möchten (aus Sicherheitsgründen), müssen Sie die notwendigen Benutzerkonten anlegen und das root-Passwort ändern.

Um das root-Passwort zu ändern benutzen Sie das passwd Programm:

Befehlsauflistung 3.5: Ändern des root-Passworts

# passwd
New password: (Geben Sie Ihr neues Passwort ein)
Re-enter password: (Geben Sie Ihr Passwort erneut ein)

Um ein Benutzerkonto zu erstellen geben wir zunächst die Details zur Person ein, gefolgt vom zugehörigen Passwort. Wir benutzen useradd und passwd für diese Aufgaben. Im nächsten Beispiel erstellen wir einen Benutzer namens "john".

Befehlsauflistung 3.6: Erstellen eines Benutzerkontos

# useradd -m -G users john
# passwd john
New password: (Geben Sie das Passwort von john ein)
Re-enter password: (Geben Sie erneut das Passwort von john ein)

Sie können Ihre Benutzer-ID von root zum neu erstellen Benutzer mit su wechseln:

Befehlsauflistung 3.7: Wechseln der Benutzer-ID

# su - john

Optional: Lesen der Dokumentation während der Installation

Wenn Sie das Gentoo Handbuch während der Installation lesen wollen, stellen Sie sicher, dass Sie einen Benutzeraccount angelegt haben (siehe Optional: Benutzerkonten). Drücken Sie dann Alt-F2, um auf ein neues Terminal zu wechseln.

Sie können das Handbuch mit links anschauen, sofern Sie das Kapitel Konfiguration des Netzwerks abgeschlossen haben (ansonsten können Sie nicht in das Internet gehen, um das Dokument anzuschauen):

Befehlsauflistung 3.8: Lesen der Online-Dokumentation

# links http://www.gentoo.org/doc/de/handbook/handbook-amd64.xml

Sie können zurück auf Ihr Ausgangsterminal mittels Alt-F1 wechseln.

Optional: Starten des SSH-Daemons

Wenn Sie anderen Benutzern während der Installation von Gentoo Zugriff auf Ihren Rechner geben wollen (vielleicht weil diese Benutzer Sie bei der Installation von Gentoo unterstützen oder sie diese für Sie durchführen), müssen Sie ein Benutzerkonto für diese Person erstellen und möglicherweise auch das root Passwort geben (machen Sie das nur, wenn Sie diesem Benutzer vollständig Vertrauen).

Um den SSH-Daemon zu starten führen Sie folgenden Befehl aus:

Befehlsauflistung 3.9: Starten des SSH-Daemons

# /etc/init.d/sshd start

Notiz: Wenn Sie (oder ein anderer Benutzer) sich in das System einloggen, werden Sie eine Meldung erhalten, dass der Host-Key für dieses System (anhand eines sogenannten Fingerprints) bestätigt werden muss. Das ist zu erwarten, da dies das erste Mal ist, dass sich jemand in das System einloggt. Wenn Ihr System aber später aufgesetzt ist und Sie sich dann in das neue System einloggen, wird Ihr SSH-Client Sie warnen, dass sich der Host-Key geändert hat. Aus der Sicht Ihres SSH-Clients loggen Sie sich in einen anderen Server ein (nämlich Ihr neu installiertes Gentoo-System anstelle der Live-Umgebung in der Sie sich gerade befinden). Wenn Sie dann diese Warnung erhalten, befolgen Sie die ausgegebenen Anweisungen, um den Host-Key auf dem Client-System zu ersetzen.

Um sshd nutzen zu können, müssen Sie zuerst das Netzwerk einrichten. Setzen Sie die Installation mit der Konfiguration des Netzwerks fort.

3. Konfiguration des Netzwerks

3.a. Automatische Netzwerkerkennung

Vielleicht funktioniert es einfach?

Wenn sich Ihr System in einem Ethernet-Netzwerk mit einem DHCP-Server befindet, ist es sehr wahrscheinlich, dass Ihr Netz bereits konfiguriert ist. Sie können nun die zahlreichen Netzwerktools auf der Installations-CD wie zum Beispiel ssh, scp, ping, irssi, wget und links nutzen.

Wenn das Netzwerk bereits konfiguriert wurde, zeigt Ihnen der Befehl ifconfig weitere Netzwerkschnittstellen neben lo an, wie beispielsweise eth0:

Befehlsauflistung 1.1: ifconfig für eine funktionierende Netzwerkkonfiguration

# 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

Optional: Proxy-Konfiguration

Wenn Sie auf das Internet nur über einen Proxy-Server zugreifen können, müssen Sie während der Installation das System für die Verwendung des Proxy-Servers vorbereiten. Das ist aber recht einfach. Sie müssen dazu lediglich eine Variable mit den Informationen über den Proxy-Server setzen.

In den meisten Fällen können Sie den Hostnamen des Proxy-Servers in die Variable schreiben. Nehmen wir an, der Server ist proxy.gentoo.org und der Port ist 8080.

Befehlsauflistung 1.2: Einrichten des Proxy-Servers

(Wenn der Proxy-Server HTTP-Verkehr filtert)
# export http_proxy="http://proxy.gentoo.org:8080¨
(Wenn der Proxy-Server FTP-Verkehr filtert)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Wenn der Proxy-Server RSYNC-Verkehr filtert)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Wenn der Proxy-Server einen Benutzernamen und Passwort verlangt, sollten Sie die folgende Syntax in der Variable verwenden:

Befehlsauflistung 1.3: Einen Benutzernamen/Passwort zu der Variable hinzufügen

http://Benutzername:Passwort@proxy.gentoo.org:8080

Das Netzwerk testen

Dazu können Sie beispielsweise den DNS-Server Ihres Internetanbieters "anpingen". Die Adresse dieses Servers finden Sie in /etc/resolv.conf. Außerdem sollten Sie eine Webseite Ihrer Wahl "pingen". So stellen Sie sicher, dass Sie sowohl mit dem Internet verbunden sind, als auch, dass Ihre Namensauflösung korrekt arbeitet.

Befehlsauflistung 1.4: Der Netzwerktest

# ping -c 3 www.gentoo.org

Wenn Sie nun in der Lage sind, Ihr Netzwerk zu verwenden, dann können Sie den Rest dieses Kapitels überspringen und mit dem Vorbereiten der Festplatte(n) fortfahren. Wenn nicht, lesen Sie bitte weiter.

3.b. Automatische Netzwerkkonfiguration

Wenn die Netzwerkverbindung nicht gleich zu Stande kommt, beinhalten einige Installationsmedien den Befehl net-setup (für normale und drahtlose Verbindungen) oder pppoe-setup (für ADSL-Verbindungen) bzw. pptp (für PPTP-Benutzer - verfügbar für x86, amd64, alpha, pcc und ppc64).

Wenn Ihr Installationsmedium das entsprechende Tool nicht enthält oder Ihre Netzwerkverbindung noch nicht funktioniert, so fahren Sie bitte mit folgendem Abschnitt fort: Manuelle Netzwerkkonfiguration.

Standard: Verwendung von net-setup

Der einfachste Weg die Netzwerkverbindung zu konfigurieren, falls die automatische Konfiguration fehlgeschlagen sein sollte, ist das Skript net-setup eth0

Befehlsauflistung 2.1: Das Skript net-setup starten

# net-setup eth0

net-setup wird Ihnen einige Fragen bezüglich Ihrer Netzwerkumgebung stellen. Haben Sie alle Fragen beantwortet, sollten Sie eine funktionsfähige Netzwerkverbindung haben. Testen Sie Ihr Netzwerk wieder, wie oben beschrieben. Sollten die Tests funktionieren, so haben Sie es geschafft. Sie können nun mit der Installation von Gentoo fortfahren. Überspringen Sie den Rest dieses Kapitels und fahren Sie mit der Vorbereitung der Festplatte(n) fort.

Sollte Ihr Netzwerk nun immer noch nicht funktionieren, fahren Sie bitte mit Manuelle Netzwerkkonfiguration fort.

Alternativ: Verwendung von PPP

Für den Fall, dass Sie PPPoE benötigen, um eine Verbindung mit dem Internet herzustellen, bringt die Installations-CD (in jeder Version) das Tool ppp mit. Verwenden Sie das Skript pppoe-setup, um Ihre Verbindung zu konfigurieren. Sie werden nach der Netzwerkkarte gefragt, die mit Ihrem DSL-Modem verbunden ist, dem Benutzernamen und nach Ihrem Kennwort. Ferner geben Sie noch die IP-Adressen der DNS-Server des Providers ein und ob Sie eine Firewall benötigen oder nicht.

Befehlsauflistung 2.2: Verwendung von ppp

# pppoe-setup
# pppoe-start

Wenn etwas schief gehen sollte, überprüfen Sie bitte, ob Sie Ihren Benutzernamen und Ihr Passwort richtig eingegeben haben, indem Sie die Datei /etc/ppp/pap-secrets bzw. /etc/ppp/chap-secrets einsehen. Stellen Sie bitte auch sicher, dass Sie die richtige Netzwerkkarte verwenden. Wenn Ihre Netzwerkkarte im System nicht erkannt wird, müssen Sie das entsprechende Kernelmodul laden. In diesem Fall müssen Sie mit der Manuellen Konfiguration des Netzwerks fortfahren. Dort gehen wir näher auf das Laden der entsprechenden Kernelmodule ein.

Wenn alles funktioniert hat, dann fahren Sie mit dem nächsten Kapitel, Vorbereiten der Festplatte(n) fort.

Alternativ: Verwendung von PPTP

Wenn Sie PPTP-Unterstüzung benötigen, können Sie das Programm pptpclient, das Ihnen von der Installations-CD bereitgestellt wird, verwenden. Allerdings müssen Sie vorher sichergehen, dass Ihre Konfiguration korrekt ist. Dazu editieren Sie die Datei /etc/ppp/pap-secrets oder /etc/ppp/chap-secrets, so dass diese die korrekte Benutzername/Kennwort-Kombination beinhalten.

Befehlsauflistung 2.3: /etc/ppp/chap-secrets editieren

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

Wenn nötig, sollten Sie nun noch /etc/ppp/options.pptp anpassen:

Befehlsauflistung 2.4: /etc/ppp/options.pptp editieren

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

Nun geben Sie den Befehl pptp (mit den Optionen, die Sie in options.pptp setzen könnten) ein, um sich mit dem Server zu verbinden.

Befehlsauflistung 2.5: Mit einem Dial-In-Server verbinden

# pptp <server ip>

Wenn alles funktioniert hat, dann fahren Sie mit dem Vorbereiten der Festplatte(n) fort.

3.c. Manuelle Netzwerkkonfiguration

Die richtigen Kernelmodule laden

Wenn die Installations-CD bootet, versucht sie alle Ihre Hardwaregeräte zu erkennen und lädt automatisch die entsprechenden Kernelmodule (Treiber). In den allermeisten Fällen funktioniert dies sehr gut. Allerdings kann es vorkommen, dass ein Kernelmodul nicht automatisch geladen wird.

Wenn net-setup oder pppoe-setup fehlschlagen, dann ist es möglich, dass Ihre Netzwerkkarte nicht sofort gefunden wurde. Das bedeutet, dass Sie das entsprechende Kernelmodul manuell laden müssen.

Verwenden Sie ls, um herauszufinden, welche Netzwerk-Kernelmodule von Gentoo bereitgestellt werden.

Befehlsauflistung 3.1: Nach bereitgestellten Kernelmodulen suchen

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

Wenn Sie einen Treiber für Ihre Netzwerkkarte gefunden haben, laden Sie diesen mit modprobe.

Befehlsauflistung 3.2: modprobe zum Laden eines Kernelmoduls

Als Beispiel laden wir das pcnet32-Modul
# modprobe pcnet32

Benutzen Sie ifconfig zum Prüfen, ob das Modul geladen wurde. Eine erkannte Netzwerkkarte würde in etwa diese Ausgabe ergeben:

Befehlsauflistung 3.3: Testen der Verfügbarkeit der Netzwerkkarte, erfolgreich

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

Wenn Sie stattdessen diesen Fehler erhalten, dann wurde Ihre Karte nicht erkannt.

Befehlsauflistung 3.4: Testen der Verfügbarkeit der Netzwerkkarte, fehlgeschlagen

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

Wenn Sie in Ihrem System mehrere Netzwerkkarten haben, so sind diese eth0, eth1 usw. benannt. Stellen sicher, dass die Netzwerkkarte die Sie nutzen möchten funktioniert und denken Sie daran den richtigen Namen während der Installation zu benutzen. Wir gehen von nun an davon aus, dass die Netzwerkkarte eth0 benutzt wird.

Wurde Ihre Netzwerkkarte erkannt, so können Sie nun erneut net-setup oder pppoe-setup ausprobieren (diese sollten nun funktionieren). Den richtigen Freaks unter Ihnen werden wir auch noch erklären, wie man das Netzwerk manuell einrichtet.

Wählen Sie je nach Netzwerksetup einen der folgenden Abschnitte:

DHCP verwenden

DHCP (Dynamic Host Configuration Protocol) ermöglicht es die gesamte Netzwerkkonfiguration (IP-Adresse, Netzwerkmaske, Broadcast-Adresse, Gateway, DNS-Server etc.) dynamisch von einem Server zu beziehen. Das funktioniert logischerweise nur, wenn Sie einen DHCP-Server in Ihrem LAN haben oder Ihr Provider einen solchen Dienst anbietet. Benutzen Sie dhcpcd:

Befehlsauflistung 3.5: Verwendung von dhcpcd

# dhcpcd eth0
Einige Netzwerkadministratoren erwarten, dass Sie den
Hostnamen und Domainnamen benutzen, der vom DHCP-Server
vergeben wird. In diesem Fall benutzen Sie
# dhcpcd -HD eth0

Wenn das funktioniert (versuchen Sie einen Internet-Server zu pingen), dann sind Sie fertig mit der Konfiguration des Netzwerks und können mit dem Vorbereiten der Festplatte(n) fortfahren.

Vorbereitung für drahtlosen Zugriff

Notiz: Nur die Installations-CDs der x86-, amd64- und ppc-Architekturen unterstützen das Kommando iwconfig. Wenn Ihre CD das Kommando nicht enthält, können Sie den Anleitungen des linux-wlan-ng-Projekts folgen.

Wenn Sie eine WLan-Karte (802.11) benutzen, müssen Sie Einstellungen zur Nutzung der Karte einrichten, bevor es weiter gehen kann. Um sich die aktuellen Einstellungen der Karte anzuschauen, benutzen Sie iwconfig. iwconfig zeigt Ihnen möglicherweise etwas wie dies:

Befehlsauflistung 3.6: Aktuelle WLan-Einstellungen anzeigen

# 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

Notiz: Einige drahtlose Netzwerkkarten benutzen einen Gerätenamen wie wlan0 oder ra0 anstelle von eth0. Führen Sie iwconfig ohne irgendwelche Kommandozeilenparamater aus, um den korrekten Gerätenamen zu bestimmen.

Für die meisten Benutzer sollte es hinreichend sein zwei Einstellungen anzupassen. Die ESSID (der Name des drahtlosen Netz) und den WEP-Key. Wenn die ESSID und die Adresse des Access-Points bereits gelistet sind und Sie kein WEP benutzen, funktioniert Ihr Netzwerk bereits. Wenn Sie Ihre ESSID ändern oder einen WEP-Key hinzufügen möchten, können Sie folgende Kommandos ausführen:

Notiz: Falls Ihr drahtloses Netzwerk WPA oder WPA2 benutzt, werden Sie wpa_supplicant verwenden müssen. Für weitere Informationen zur Konfiguration drahtloser Netzwerke unter Gentoo Linux, lesen Sie bitte das Kapitel Drahtlose Netzwerkfunktionalität des Gentoo Handbuchs.

Befehlsauflistung 3.7: Ändern der ESSID und/oder Hinzufügen eines WEP-Keys

(Dies setzt den Netzwerknamen auf "GentooNode")
# iwconfig eth0 essid GentooNode

(Dies setzt einen hex-WEP-Key)
# iwconfig eth0 key 1234123412341234abcd

(Dies setzt einen ASCII-WEP-Key - vorangestellt: "s:")
# iwconfig eth0 key s:some-password

Sie können Ihre Einstellungen nun nochmal mit iwconfig überprüfen. Wenn Sie Ihr WLan nun eingerichtet haben, können Sie mit der Konfiguration der IP-Level-Optionen wie im nächsten Abschnitt Die Netzwerkterminologie verstehen fortfahren oder net-setup benutzen, wie vorhin beschrieben.

Die Netzwerkterminologie verstehen

Notiz: Wenn Sie Ihre IP-Adresse, Broadcast-Adresse, Netzmaske und DNS-Server kennen, dann können Sie diesen Teil beruhigt überspringen. Fahren Sie in diesem Fall mit Benutzen von ifconfig und route fort.

Wenn alles obige fehlschlägt, müssen Sie Ihr Netzwerk manuell einrichten. Dies ist überhaupt nicht schwierig. Jedoch müssen Sie mit einiger Netzwerkterminologie vertraut sein, denn Sie werden diese benötigen, um Ihr Netzwerk zu Ihrer Zufriedenheit konfigurieren zu können. Nachdem Sie dies gelesen haben, werden Sie wissen, was ein Gateway ist, wozu eine Netzmaske dient, wie eine Broadcast-Adresse aufgebaut ist und warum Sie Nameserver benötigen.

In einem Netzwerk werden die Computer über Ihre IP-Adresse (Internet Protocol Address) identifiziert. Diese Adresse ist eine Kombination aus vier Nummern zwischen 0 und 255. Jedenfalls nehmen wir das so wahr. In Wirklichkeit ist eine IP-Adresse eine 32-Bit-Folge (Nullen und Einsen). Hier ein Beispiel:

Befehlsauflistung 3.8: Beispiel einer IP-Adresse

IP Adresse (Nummern):   192.168.0.2
IP Adresse (Bits):      11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2

Solch eine IP-Adresse ist einmalig für einen Host (Computer) in allen angrenzenden Netzwerken (d.h. jeder Host, den Sie erreichen können, muss eine einzigartige IP-Adresse besitzen). Um zwischen Hosts innerhalb eines Netzwerkes und außerhalb eines Netzwerkes unterscheiden zu können, ist die IP-Adresse in zwei Teile eingeteilt: Einen Network-Abschnitt und einen Host-Abschnitt.

Diese Unterteilung wird mittels der netmask (dt. so viel wie Netzmaske) beschrieben. Die netmask ist eine Reihe von Einsen, gefolgt von einer Reihe von Nullen. Der Teil der IP-Adresse der den Einsen entspricht, ist der Netzwerkteil. Die Netzmaske kann wie eine IP-Adresse aufgeschrieben werden.

Befehlsauflistung 3.9: Beispiel einer Netzwerk/Host Teilung

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

In anderen Worten ist 192.168.0.14 ein Host in unserem Teilnetz, während 192.168.1.2 dies nicht ist.

Die Broadcast-Adresse ist eine IP-Adresse, die den gleichen Netzwerkteil wie unser Netzwerk hat, allerdings nur Einsen im Hostteil hat. Alle Computer in dem Teilnetz hören auf diese IP-Adresse. Diese Adresse ist zum Broadcasting eines Paketes an alle Computer gedacht. D.h. ein Paket wird an alle Computer im Netzwerk gleichzeitig geschickt.

Befehlsauflistung 3.10: Broadcast-Adresse

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

Um im Internet surfen zu können, müssen Sie wissen, welcher Host die Internetverbindung herstellt. Dieser Host wird Gateway genannt. Da dieser ein normaler Host ist, besitzt auch das Gateway eine normale IP-Adresse (z.B. 192.168.0.1).

Zuvor haben wir schon erwähnt, dass jeder Host eine eigene IP-Adresse besitzt. Um diesen Host aber mit einem Namen ansprechen zu können (anstatt einer IP-Adresse) benötigen Sie einen Dienst, der Namen (wie dev.gentoo.org) in IP-Adressen (wie 64.5.62.82) umwandelt. Dieser Dienst wird nameservice genannt. Um diesen Dienst nutzen zu können, müssen Sie die entsprechenden name server kennen. Diese werden in der Datei /etc/resolv.conf festgehalten.

In manchen Fällen trägt das Gateway ebenfalls die Rolle des Nameservers. Sonst müssen Sie den Nameserver des Providers angeben.

In der Zusammenfassung benötigen Sie also folgende Daten bevor Sie fortfahren:

Netzwerkbegriff Beispiel
Ihre IP-Adresse 192.168.0.2
Netzmaske 255.255.255.0
Broadcast-Adresse 192.168.0.255
Gateway 192.168.0.1
Nameserver 195.130.130.5, 195.130.130.133

Verwendung von ifconfig und route

Das Einrichten des Netzwerks besteht aus drei Schritten. Zunächst teilen wir uns mittels ifconfig selbst eine IP-Adresse zu. Dann richten wir das sogenannte "routing" ein. D.h. Daten die nicht für das lokale Netzwerk bestimmt sind, werden an das Gateway geschickt. Dies wird mit dem Befehl route erreicht. Schließlich halten wir die Nameserver in der Datei /etc/resolv.conf fest.

Um eine IP-Adresse zuzuteilen, wird die IP-Adresse, die Broadcast-Adresse sowie die Netzmaske benötigt. Der folgende Befehl muss ausgeführt werden, wobei die Variablen ${IP_ADDR} durch die IP-Adresse, ${BROADCAST} durch die Broadcast-Adresse und ${NETMASK} durch die Netzmaske ersetzt werden sollte.

Befehlsauflistung 3.11: Verwendung von ifconfig

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

Nun wird das "routing" eingerichtet. Hier muss ${GATEWAY} durch die IP-Adresse des Gateway ersetzt werden.

Befehlsauflistung 3.12: Verwendung von route

# route add default gw ${GATEWAY}

Nun öffnen Sie die Datei /etc/resolv.conf mit Ihrem bevorzugten Editor (in unserem Fall verwenden wir nano):

Befehlsauflistung 3.13: Erstellen von /etc/resolv.conf

# nano -w /etc/resolv.conf

Nun tragen Sie hier den Nameserver (oder mehrere) dem Beispiel folgend ein. Dabei sollten Sie natürlich wieder ${NAMESERVER} durch die entsprechende IP-Adresse ersetzen.

Befehlsauflistung 3.14: /etc/resolv.conf Vorlage

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

Das war es schon. Nun sollten Sie Ihre Internetverbindung testen. Dazu "pingen" Sie einfach einen Internetserver (wie Google). Funktioniert es, sind Sie nun endlich bereit, Gentoo zu installieren. Fahren Sie mit dem Vorbereiten der Festplatte(n) fort.

4. Vorbereiten der Festplatte(n)

4.a. Einführung in Block-Devices

Block Devices

Wir werden einen guten Einblick in die Festplatten bezogenen Aspekte von Gentoo Linux und Linux im allgemeinen, inklusive Linux Dateisystemen, Partitionen und Block Devices erhalten. Dann, sobald Sie mit den Vor- und Nachteilen von Festplatten und Dateisystemen vertraut sind, werden Sie durch den Prozess des Partitionierens und der Dateisystemerstellung für Ihre Gentoo Linux Installation geführt.

Zu Beginn werden wir Ihnen Block Devices vorstellen. Das berühmteste Block Device ist wahrscheinlich das, welches das erste Laufwerk in einem Linux System repräsentiert, namentlich /dev/sda. SCSI- und Serial-ATA-Laufwerke erhalten beide Namen mit /dev/sd*; selbst IDE-Laufwerke werden mit dem neuen libata-Framework im Kernel mit einem /dev/sd* Namen versehen. Wenn Sie noch das alte Geräte-Framework verwenden wird Ihr erstes IDE-Laufwerk /dev/hda sein.

Das obige Block Device repräsentiert eine abstrakte Schnittstelle zur Festplatte. Benutzerprogramme können dieses Block Device benutzen, um Ihre Festplatte anzusprechen, ohne sich darum zu kümmern, ob Ihre Festplatten IDE, SCSI oder irgendetwas anderes sind. Das Programm kann den Speicherplatz auf der Festplatte einfach als eine Anhäufung von zusammenhängenden, beliebig zugreifbaren 512-Byte Blöcken ansprechen.

Partitionen

Obwohl es theoretisch möglich ist, eine ganze Festplatte zu nutzen, um Ihr Linux-System zu beherbergen, wird dies in der Praxis so gut wie nie gemacht. Stattdessen werden komplette Festplatten-Block-Devices in kleinere, besser verwaltbare Block-Devices unterteilt. Auf AMD64-Systemen werden diese Partitionen genannt.

Es wird zwischen drei Partitionstypen unterschieden: primär, erweitert und logisch.

Eine primäre Partition ist eine Partition, deren Informationen im MBR (Master Boot Record) gespeichert sind. Da ein MBR sehr klein ist (512 Bytes), können nur vier primäre Partitionen definiert werden (zum Beispiel /dev/sda1 bis /dev/sda4).

Eine erweiterte Partition ist eine spezielle primäre Partition (was bedeutet, dass eine erweiterte Partition eine der vier möglichen primären Partitionen sein muss), welche mehrere Partitionen beinhaltet. Eine solche Partition existierte ursprünglich nicht, aber da vier Partitionen zu wenig sind, wurden sie erfunden, um das Format zu erweitern ohne die Rückwärtskompatibilität zu verlieren.

Eine logische Partition ist eine Partition innerhalb einer erweiterten Partition. Ihre Definitionen sind nicht im MBR gespeichert, sondern in der erweiterten Partition.

Fortgeschrittene Speicherung

Die AMD64-Installations-CDs bieten Unterstützung für LVM2. LVM2 erlaubt es Ihnen Ihr Partitionssetup flexibler zu gestalten. Innerhalb dieser Installationsanleitung konzentrieren wir uns auf "normale" Partitionen, es ist aber gut zu wissen, dass LVM2 genauso unterstützt wird.

4.b. Erstellung eines Partitionsschemas

Standard Partitionsschema

Wenn Sie nicht daran interessiert sind ein Partitionsschema für Ihr System zu erstellen, können Sie das Partitionsschema verwenden, welches wir in diesem Handbuch benutzen:

Partition Dateisystem Größe Beschreibung
/dev/sda1 ext2 32M Boot Partition
/dev/sda2 (swap) 512M Swap-Partition
/dev/sda3 ext4 Rest der Festplatte Root Partition

Wenn Sie daran interessiert sind zu erfahren, wie groß eine Partition sein sollte, oder auch wie viele Partitionen (oder Volumes) Sie benötigen, lesen Sie weiter. Anderenfalls fahren Sie nun mit dem Partitionieren Ihrer Festplatte mit fdisk oder mit dem Partitionieren Ihrer Festplatte mit parted fort. Beides sind Partitionierungs-Tools; fdisk ist weit verbreitet und stabil, parted ist etwas neuer, aber unterstützt Partitionen größer als 2 TB.

Wie viele und wie groß?

Die Anzahl an Partitionen hängt von Ihrer Umgebung ab. Wenn Sie z.B. eine Menge User haben, wollen Sie höchst wahrscheinlich Ihr /home separat halten, da es die Sicherheit erhöht und Backups einfacher macht. Wenn Sie Gentoo installieren um als Mailserver zu fungieren, sollten Sie /var separat halten, da alle Mails in /var gespeichert werden. Eine gute Wahl des Dateisystems maximiert dann zusätzlich die Performance. Gameserver sollten ein separates /opt haben, da die meisten Server für Spiele dort installiert werden. Der Grund ist ähnlich wie bei /home: Sicherheit und Backups. Es liegt definitiv in Ihrem Interesse /usr groß zu behalten: es wird nicht nur die Mehrheit der Programme enthalten; der Portage-Baum allein belegt etwa 500Mbyte, ohne die verschiedensten Quellen die darin gespeichert sind mitzurechnen.

Wie Sie sehen können, hängt es sehr stark davon ab, was Sie erreichen wollen. Separate Partitionen oder Volumes haben folgende Vorteile:

  • Sie können das Filesystem mit der höchsten Performance für jede Partition oder jedes Volume auswählen
  • Ihr System behält noch freien Speicherplatz, selbst wenn ein defektes Tool ununterbrochen Dateien auf eine Partition oder ein Volume schreibt
  • Falls nötig können Dateisystem Checks zeitlich verkürzt werden, in dem mehrere Checks parallel durchgeführt werden können (obwohl dieser Vorteil eher mit mehreren Festplatten als mit mehreren Partitionen zum Tragen kommt)
  • Die Sicherheit kann erhöht werden, indem Sie einige Partitionen oder Volumes read-only, nosuid (setuid bits werden ignoriert), noexec (executable bits werden ignoriert) etc mounten.

Jedoch haben mehrere Partitionen auch Nachteile: Wenn sie nicht ordentlich konfiguriert werden, werden Sie ein System haben, das viel Speicherplatz auf der einen Partition und keinen auf einer anderen frei hat. Ein weiteres Ärgernis ist, dass separate Partitionen - insbesondere für wichtige Einhängepunkte wie /usr oder /var - es häufig erforderlich machen, dass mit einem initramfs gebootet wird, das die Partitionen mountet, bevor andere Boot-Skripte starten. Das ist jedoch nicht immer nötig, daher treffen Sie diese Entscheidung bitte selbst.

Es gibt weiterhin ein Limit von 15 Partitionen bei SCSI und SATA, sofern Sie keine GPT-Labels verwenden.

Als Beispiel zeigen wir Ihnen die Partitionierung einer 20GB Festplatte, welche in einem Notebook zu Demonstrationszwecken genutzt wird (inklusive Webserver, Mailserver, Gnome, ...):

Befehlsauflistung 2.1: Dateisystemnutzung, Beispiel

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4    509M  132M  351M  28% /
/dev/sda2     ext4    5.0G  3.0G  1.8G  63% /home
/dev/sda7     ext4    7.9G  6.2G  1.3G  83% /usr
/dev/sda8     ext4   1011M  483M  477M  51% /opt
/dev/sda9     ext4    2.0G  607M  1.3G  32% /var
/dev/sda1     ext2     51M   17M   31M  36% /boot
/dev/sda6     swap    516M   12M  504M   2% <not mounted>
(Unpartitionierter Speicherplatz für zukünftige Benutzung: 2 GB)

/usr ist ziemlich voll (83% used), aber sobald die ganze Software installiert ist, tendiert /usr nicht mehr dazu allzuviel zu wachsen. Die Zuweisung von einigen Gigabyte Festplattenspeicher für /var erscheint exzessiv, Sie sollten aber daran denken, dass Portage diese Partition standardmäßig zur Kompilierung von Paketen verwendet. Wenn Sie /var eine etwas angemessenere Größe, wie z.B. 1GB, zuweisen möchten, müssen Sie die PORTAGE_TMPDIR Variable in /etc/portage/make.conf auf eine Partition mit genügend freiem Speicherplatz verweisen lassen, damit genug freier Speicher auch für extrem große Pakete wie OpenOffice vorhanden ist.

4.c. Partitionierung Ihrer Festplatte mit fdisk

Wichtig: Falls Sie Partitionen verwenden, die größer als 2 TB sind, lesen Sie anstatt dieses Abschnitts bitte den Abschnitt Partitionierung Ihrer Festplatte mit parted. fdisk kann nicht mit größeren Partitionen umgehen.

Die folgenden Teile erklären, wie das bereits beschriebene Beispiel-Partitionslayout mit fdisk erstellt wird. Zur Erinnerung:

Partition Beschreibung
/dev/sda1 Boot-Partition
/dev/sda2 Swap-Partition
/dev/sda3 Root-Partition

Ändern Sie Ihr Partitionslayout nach Ihren eigenen Vorstellungen.

Die derzeitige Partitionstabelle ansehen

Fdisk ist ein verbreitetes und mächtiges Tool um Ihre Festplatte in Partitionen zu teilen. Starten Sie fdisk für Ihre Festplatte (in unserem Beispiel benutzen wir /dev/sda):

Befehlsauflistung 3.1: Starten von fdisk

# fdisk /dev/sda

Sobald Sie in fdisk sind, werden Sie mit folgendem Prompt begrüßt:

Befehlsauflistung 3.2: fdisk Prompt

Command (m for help):

Drücken Sie p um Ihr derzeitige Partitionstabelle anzeigen zu lassen:

Befehlsauflistung 3.3: Eine Beispiel Partitionstabelle

Command (m for help): p

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

Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Command (m for help):

Diese Festplatte beherbergt sieben Linux-Dateisysteme (jedes mit einer dazugehörigen Partition, gelistet als "Linux") und auch eine Swap-Partition (gelistet als "Linux swap").

Löschen aller Partitionen

Zuerst entfernen wir alle existierenden Partitionen von der Festplatte. Drücken Sie d um eine Partition zu löschen. Zum Beispiel um ein bestehendes /dev/sda1 zu löschen:

Befehlsauflistung 3.4: Löschen einer Partition

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

Die Partition wurde zum Löschen markiert und wird nicht mehr angezeigt, wenn Sie p drücken, sie wird aber nicht gelöscht, bis Ihre Änderungen gespeichert sind. Wenn Sie einen Fehler gemacht haben und ohne zu Speichern abbrechen wollen, drücken Sie umgehend q und Enter; Ihre Partition wird dann nicht gelöscht.

Angenommen, dass Sie wirklich all Ihre Partitionen auf Ihrer Festplatte löschen wollen, drücken Sie noch einmal p um die Partitionstabelle anzuzeigen und dann d und die Nummer der Partition die Sie löschen wollen. Irgendwann werden Sie eine leere Partitionstabelle haben:

Befehlsauflistung 3.5: Eine leere Partitionstabelle

Disk /dev/sda: 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):

Jetzt, da die Partitionstabelle im Speicher leer ist, sind wir vorbereitet, um die Partitionen zu erstellen. Wir werden ein Standard-Partitionsschema benutzen, wie wir es zuvor angesprochen haben. Natürlich sollten Sie die Instruktionen nicht buchstäblich ausführen, wenn Sie ein anderes Partitionsschema verwenden wollen!

Erstellung der Boot-Partition

Zuerst erstellen wir eine kleine Boot-Partition. Drücken Sie n, um eine neue Partition zu erstellen, dann p, um eine primäre Partition zu wählen, gefolgt von 1 für die erste primäre Partition. Wenn Sie nach dem ersten Zylinder gefragt werden, drücken Sie Enter. Für den letzten Zylinder geben Sie +32M ein, um eine 32 MB Partition mit gesetztem bootable-Flag zu erzeugen.

Befehlsauflistung 3.6: Erstellen der Boot-Partition

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): (Enter Taste drücken)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Wenn Sie jetzt p drücken, sollten Sie die folgende Partitionstabelle sehen:

Befehlsauflistung 3.7: Erstellte Boot-Partition

Command (m for help): p

Disk /dev/sda: 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/sda1          1        14    105808+  83  Linux

Sie müssen diese Partition bootbar machen. Drücken Sie a, um das bootable-Flag auf dieser Partition zu aktivieren und wählen Sie 1. Wenn Sie wiederum p drücken, werden Sie feststellen, dass in der "Boot" Spalte ein * platziert ist.

Erstellen der Swap-Partition

Nun erstellen Sie die Swap-Partition. Dazu drücken Sie n, um eine Partition zu erstellen, dann p, um fdisk mitzuteilen, dass Sie eine primäre Partition anlegen möchten. Dann drücken Sie 2, um die zweite primäre Partition, dev/sda2 in unserem Fall, anzulegen. Wenn Sie nach dem ersten Zylinder gefragt werden, drücken Sie Enter. Wenn Sie nach dem letzten Zylinder gefragt werden, tippen Sie +512M, um eine Partition mit einer Größe von 512 MB zu erstellen. Nachdem Sie dies getan haben, müssen Sie mit t den Partitionstyp festlegen, 2, um die gerade angelegte Partition auszuwählen und dann 82, um den Partitionstyp als "Linux Swap" festzulegen. Nachdem Sie diese Schritte abgeschlossen haben, drücken Sie p und Sie erhalten eine Partitionstabelle, die dieser recht ähnlich sieht:

Befehlsauflistung 3.8: Partitionstabelle nach dem Erstellen der Swap-Partition

Command (m for help): p

Disk /dev/sda: 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/sda1 *        1        14    105808+  83  Linux
/dev/sda2         15        81    506520   82  Linux swap

Erstellen der Root-Partition

Zum Schluss müssen sie noch die Root-Partition erstellen. Dazu drücken Sie n, um eine Partition zu erstellen, dann p, um fdisk mitzuteilen, dass Sie eine primäre Partition anlegen möchten. Dann drücken Sie 3, um die dritte primäre Partition, /dev/sda3 in unserem Fall, anzulegen. Wenn Sie nach dem ersten Zylinder gefragt werden, drücken Sie Enter. Wenn Sie nach dem letzten Zylinder gefragt werden, tippen Sie Enter, um eine Partition zu erstellen, die den restlichen freien Platz belegt. Nachdem Sie diese Schritte abgeschlossen haben, drücken Sie p und Sie erhalten eine Paritionstabelle, die dieser recht ähnlich sieht:

Befehlsauflistung 3.9: Partitionstabelle nach dem Erstellen der Root-Partition

Command (m for help): p

Disk /dev/sda: 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/sda1 *        1        14    105808+  83  Linux
/dev/sda2         15        81    506520   82  Linux swap
/dev/sda3         82      3876  28690200   83  Linux

Speichern der Partitionstabelle

Um die Partitionstabelle zu speichern und fdisk zu verlassen, drücken Sie w.

Befehlsauflistung 3.10: Speichern und verlassen von fdisk

Command (m for help): w

Nachdem Ihre Partitionen nun erstellt sind, können Sie mit dem Erstellen der Dateisysteme fortfahren.

4.d. Partitionierung Ihrer Festplatte mit parted

In diesem Kapitel zeigen wir Ihnen, wie das vorhin gezeigte Beispiel-Partitionslayout erstellt wird. Im Gegensatz zum vorherigen Kapitel, wird hier die Methode mit Hilfe der Anwendung parted erklärt. Sowohl parted als auch fdisk bieten die gleichen Funktionen an. Wenn Sie also Ihre Festplatte gerade mit fdisk partitioniert haben, können Sie diesen Abschnitt überspringen und mit dem Erstellen der Dateisysteme fortfahren.

Das Beispiel-Partitionslayout, das wir benutzen werden, sei folgendes:

Partition Beschreibung
/dev/sda1 Boot-Partition
/dev/sda2 Swap-Partition
/dev/sda3 Root-Partition

Ändern Sie Ihr Partitionslayout nach Ihren eigenen Vorstellungen.

Die derzeitige Partitionstabelle ansehen

Die Anwendung parted ist quasi eine etwas modernere Variante von fdisk. Sie bietet eine einfachere Benutzerschnittstelle zum Partitionieren Ihrer Festplatten an und unterstützt sehr große Partitionen (größer als 2 TB). Rufen Sie parted für Ihre Festplatte auf (in unserem Beispiel verwenden wir /dev/sda):

Befehlsauflistung 4.1: parted starten

# parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

Um alles über die unterstützten Optionen von parted herauszufinden, geben Sie einfach help ein und drücken Enter. Wir lassen uns von parted jetzt aber einfach einmal die momentan auf der ausgewählten Festplatte vorhandenen Partitionen anzeigen. Das Kommando print kann hierfür verwenden werden.

Befehlsauflistung 4.2: Eine beispielhafte Partitionierung angezeigt mit parted

(parted) print
Model: SCSI Block Devices
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      512B    2148MB  2148MB  primary  ext4
 2      2148MB  3222MB  1074MB  primary  linux-swap(v1)
 3      3222MB  21.5GB  18.3GB  primary                  lvm

Optional: Verwenden von GPT

Die meisten Platten unter x86/amd64 kommen von Haus aus mit einer Partitionstabelle vom Typ msdos. Falls Sie jedoch vorhaben, größere Partitionen (2 TB und mehr) zu erzeugen, müssen Sie eine Partitionstabelle vom Typ gpt (GUID Partition Type) für Ihre Festplatte verwenden. parted kann diese mit mklabel gpt erzeugen:

Warnung: Das Ändern des Partitionstabellentyps entfernt alle Partitionen von Ihrer Festplatte. Alle Daten auf der Platte gehen dabei verloren.

Befehlsauflistung 4.3: Verwenden von GPT

(parted) mklabel gpt

Löschen aller Partitionen

Falls das noch nicht getan wurde (z.B. gerade durch mklabel oder weil die Platte frisch formatiert ist), löschen wir zuerst alle existierenden Partitionen von der Platte. Geben Sie rm <nummer> ein, wobei <nummer> die Partition ist, die Sie löschen möchten.

Befehlsauflistung 4.4: Löschen einer Partition von der Festplatte

(parted) rm 2

Tun Sie dasselbe für alle anderen Partitionen, die Sie nicht mehr benötigen. Passen Sie aber auf, dass Sie dabei keine Fehler machen - parted führt die Änderungen direkt aus (im Gegensatz zu fdisk, das die Änderungen erst einmal sammelt, so dass der Benutzer am Ende die Änderungen rückgängig machen kann, bevor er speichert oder fdisk verlässt).

Erstellen der Partitionen

Erstellen wir also nun die Partitionen, die wir vorhin erwähnt haben. Das Erstellen der Partitionen mit parted ist nicht schwierig; wir müssen parted nur über die folgenden Einstellungen informieren:

  • Der zu verwendende Partitionstyp. Normalerweise sollte das primary sein, wenn Sie nicht mehr als 4 Partitionen haben werden (sofern Sie eine msdos Partitionstabelle verwenden). Andernfalls müssen Sie aus Ihrer vierten Partition eine extended machen, die den Rest der Festplatte beinhaltet. In ihr finden sich dann logical Partitionen. Falls Sie hingegen GPT verwenden, haben Sie keine Beschränkung hinsichtlich der Anzahl der primary-Partitionen.
  • Der zu verwendende Dateisystemtyp. parted unterstützt die meisten bekannten Dateisysteme und weiß, welche Art von Partitions-ID es für diese verwenden muss. Das bedeutet nicht, dass parted ein Dateisystem auf der Partition erzeugen wird (das können Sie zwar mit dem mkpartfs Kommando machen, aber wir werden später die regulären mkfs.* Befehle für diesen Zweck verwenden). Die Partitions-ID wird meistens von Auto-Erkennungs-Tools verwendet, um herauszufinden, was diese mit einer bestimmten Partition machen sollen.
  • Der Startpunkt der Partition (kann ausgedrückt werden in MB oder GB)
  • Der Endpunkt der Partition (kann ausgedrückt werden in MB oder GB)

Ein Vorteil von parted ist, dass Sie einfach die Partitionsgrößen verwenden können, um automatisch den Startpunkt und Endpunkt zu finden, wie im nächsten Beispiel gezeigt.

Befehlsauflistung 4.5: Erstellen der Partitionen

# Erstellen einer 32 MB /boot-Partition
(parted) mkpart primary ext2 0 32mb
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i

# Erstellen einer 512 MB swap-Partition
(parted) mkpart primary linux-swap 32mb 542mb

# Erstellen einer Partition, die den Rest der Platte verwendet
# -1s (minus eins s) steht für das Ende der Platte
(parted) mkpart primary ext4 542mb -1s
Warning: You requested a partition from 542MB to 21.5GB.
The closest location we can manage is 542MB to 21.5GB.
Is this still acceptable to you?
Yes/No? y

Sie können sich nun das Partitionslayout erneut anzeigen lassen (print), um zu überprüfen, ob alles wie erwartet ist. Wenn Sie zufrieden sind, verwenden Sie den Befehl quit, um parted zu verlassen.

4.e. Erstellen der Dateisysteme

Einleitung

Nun da Ihre Partitionen erstellt sind, ist es Zeit auf diesen ein Dateisystem einzurichten. Wenn Sie sich keine Gedanken über das einzusetzende Dateisystem machen (möchten), gehen Sie zum Eine Partition mit einem Dateisystem formatieren Abschnitt vor, andernfalls lesen Sie weiter, um etwas über die verfügbaren Dateisysteme zu lernen...

Dateisysteme

Verschiedene Dateisysteme sind verfügbar. Einige von ihnen sind als stabil auf amd64 bekannt, andere nicht. Die folgenden Dateisystem sind als stabil bekannt: ext2, ext3, ext4 und XFS. JFS und ReiserFS können funktionieren, sind aber noch nicht ausreichend erprobt. Wenn Sie ein Abenteuer suchen, können Sie die anderen Dateisysteme ausprobieren.

ext2 ist das erprobte und wahre Linux Dateisystem, unterstützt aber keine Metadaten-Journalisierung, was bedeutet, dass routinemäßige Überprüfungen des Dateisystem beim Booten ziemlich zeitaufwändig sein können. Es gibt mittlerweile eine Auswahl an journalisierenden Dateisystemen neuerer Generation, die die Konsistenzchecks sehr schnell erledigen und dadurch im Vergleich mit den nicht-journalisierenden Gegenstücken vorzuziehen sind. Jounalisierende Dateisysteme verhindern lange Verzögerungen beim Booten, wenn sich das Dateisystem in einem inkonsistenten Zustand befindet. Wenn Sie vorhaben, Gentoo auf einer sehr kleinen Platte (weniger als 4GB) zu installieren, dann müssen Sie ext2 anweisen, genügend Inodes zu reservieren, wenn Sie das Dateisystem erstellen. Die Applikation mke2fs verwendet die Einstellung "bytes-per-inode", um zu berechnen, wie viele Inodes ein Dateisystem haben sollte. Durch Verwenden von mke2fs -T small /dev/<device> vervierfacht sich die Anzahl an Inodes für ein gegebenes Dateisystem in der Regel, da sich die "bytes-per-inode" von 16kB auf 4kB pro Inode reduzieren. Sie können dies noch weiter tunen durch Verwenden von mke2fs -i <Verhältnis> /dev/<device>.

ext3 ist die journalisierte Version des ext2-Dateisystem. Es liefert Metadaten-Journalisierung für schnelle Wiederherstellung, sowie andere verbesserte Journalisierungs-Modi wie "Full Data"- und "Ordered Data"-Journalisierung. Es verwendet einen HTree-Index der in fast allen Situation zu einer hohen Performance führt. Kurz, ext3 ist ein sehr gutes und verlässliches Dateisystem. Wenn Sie vorhaben, Gentoo auf einer sehr kleinen Platte (weniger als 4GB) zu installieren, dann müssen Sie ext2 anweisen, genügend Inodes zu reservieren, wenn Sie das Dateisystem erstellen. Die Applikation mke2fs verwendet die Einstellung "bytes-per-inode", um zu berechnen, wie viele Inodes ein Dateisystem haben sollte. Durch Verwenden von mke2fs -j -T small /dev/<device> vervierfacht sich die Anzahl an Inodes für ein gegebenes Dateisystem in der Regel, da sich die "bytes-per-inode" von 16kB auf 4kB pro Inode reduzieren. Sie können dies noch weiter tunen durch Verwenden von mke2fs -j -i <Verhältnis> /dev/<device>.

ext4 ist ein Dateisystem, das basierend auf ext3 erstellt wurde und neue Features sowie Performance-Verbesserungen mit sich bringt. Zusätzlich wurden Größenbeschränkungen entfernt und nur mäßige Änderungen am Format auf der Platte vorgenommen. ext4 unterstützt Laufwerke mit einer Größe von bis zu 1 EB und eine maximale Dateigröße von 16 TB. Anstelle der klassischen Bitmap-Block-Allokation von ext2/3, verwendet ext4 Extents, die die Performance bei großen Dateien verbessert und Fragmentierung reduziert. Ext4 bietet zudem ausgeklügeltere Blockallokationsalgorithmen (verzögerte Allokation und Multiblock-Allokation), was es dem Dateisystemtreiber erlaubt, das Layout der Daten auf der Platte zu optimieren. Das ext4-Dateisystem ist ein Kompromiss zwischen produktionssnaher Code-Stabilität und dem Wunsch, Erweiterungen zu einem fast ein Jahrzehnt altem Dateisystem einzuführen. Ext4 ist das empfohlene universell einsetzbare Dateisystem für alle Plattformen.

JFS ist IBMs journalisiertes Hochgeschwindigkeits-Dateisystem. JFS ist schlankes, schnelles und verläßliches B+Tree basierendes Dateisystem mit guter Performance in zahlreichen Situationen.

ReiserFS ist ein auf B+-Trees basierendes Dateisystem mit einer insgesamt guten Performance, besonders wenn mit vielen sehr kleinen Dateien, zur Last von mehr CPU-Zyklen, gearbeitet wird. ReiserFS hat den Anschein weniger gepflegt zu werden als andere Dateisysteme.

XFS ist ein Dateisystem mit Metadaten-Journalisierung, es liefert einen robusten Satz von Features und ist auf Skalierbarkeit optimiert. XFS scheint weniger robust zu sein bei verschiedenen Hardware-Problemen.

Eine Partition mit einem Dateisystem formatieren

Um ein Dateisystem auf einer Partition oder einem Volume zu erstellen, gibt es für jedes Dateisystem Tools:

Dateisystem Kommando
ext2 mkfs.ext2
ext3 mkfs.ext3
ext4 mkfs.ext4
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Um die Boot-Partition (/dev/sda1 in unserem Beispiel) als ext2 und die Root-Partition (/dev/sda3 in unserem Beispiel) als ext4 (wie in unserem Beispiel) zu formatieren, führen Sie folgende Kommandos aus:

Befehlsauflistung 5.1: Eine Partition mit einem Dateisystem formatieren

# mkfs.ext2 /dev/sda1
# mkfs.ext4 /dev/sda3

Erstellen Sie nun die Dateisysteme auf Ihren neu erstellten Partitionen (oder logischen Volumes).

Aktivieren der Swap-Partition

mkswap ist der Befehl, mit dem Sie die Swap-Partition initialisieren:

Befehlsauflistung 5.2: Erstellen der Swap-Signatur

# mkswap /dev/sda2

Um die Swap-Partition zu aktivieren, benutzen Sie swapon:

Befehlsauflistung 5.3: Aktivieren der Swap-Partition

# swapon /dev/sda2

Erstellen und aktivieren Sie jetzt Ihre Swap-Partition mit den gerade erwähnten Befehlen.

4.f. Mounten

Nachdem Ihre Partitionen nun initialisiert sind und ein Dateisystem beinhalten, ist es an der Zeit diese Partitionen zu mounten. Benutzen Sie das mount Kommando. Vergessen Sie nicht die notwendigen Mount-Verzeichnisse für jede erstellte Partition anzulegen. Als Beispiel mounten wir die root- und boot- Partition:

Befehlsauflistung 6.1: Mounten von Partitionen

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

Notiz: Wenn Sie /tmp auf eine separate Partition legen möchten, stellen Sie sicher, dass Sie die Berechtigungen nach dem mounten ändern: chmod 1777 /mnt/gentoo/tmp. Dies gilt auch für /var/tmp.

Sie müssen auch noch das proc-Dateisystem (eine virtuelle Schnittstelle zum Kernel) auf /proc mounten. Zunächst müssen wir jedoch alle Dateien auf der Partition ablegen.

Fahren Sie mit der Installation der Gentoo Installationdateien fort.

5. Installation der Gentoo Installationsdateien

5.a. Ein Stagearchiv installieren

Setzen von Zeit/Datum

Bevor Sie fortfahren, sollten Sie Ihre Zeit/Datum Einstellungen überprüfen und gegebenenfalls anpassen. Eine falsch eingestellte Uhr kann zu merkwürdigen Resultaten in der Zukunft führen.

Um Zeit und Datum zu überprüfen, führen Sie date aus:

Befehlsauflistung 1.1: Zeit/Datum überprüfen

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

Wenn Zeit oder Datum falsch angezeigt wird, passen Sie die Einstellung mit der date MMDDhhmmYYYY Syntax (Month, Day, hour, minute und Year) an. Zu diesem Zeitpunkt sollten Sie UTC-Zeit verwenden. Sie werden später die Gelegenheit dazu haben Ihre lokale Zeitzone anzugeben. Um die Zeiteinstellung auf den 29. März 2005, 16:21 Uhr zu setzen, führen Sie zum Beispiel folgenden Befehl aus:

Befehlsauflistung 1.2: Setzen von UTC-Zeit/Datum

# date 032916212005

Eine Wahl treffen

Der nächste Schritt ist die Installation des Stage3-Archivs auf Ihrem System. Der Befehl uname -m hilft Ihnen bei der Entscheidung, welches Stage-Archiv Sie verwenden sollten, da er Informationen zur Architektur Ihres Systems bereitstellt.

5.b. Herunterladen der Stage aus dem Internet

Herunterladen des Stagearchivs

Wechseln Sie nun zum Gentoo-Mountpoint, jenes Verzeichnis unter dem Sie vorhin Ihre zukünftige Gentoo-Partition eingebunden haben (wahrscheinlich /mnt/gentoo):

Befehlsauflistung 2.1: Wechseln zum Gentoo-Mountpoint

# cd /mnt/gentoo

Abhängig vom Installationsmedium finden Sie verschiedene Programme um das Stagearchiv herunter zu laden. Falls links verfügbar ist, können Sie sofort die Gentoo Mirrorliste ansteuern und einen Mirror in Ihrer Nähe auswählen: Tippen Sie links http://www.gentoo.org/main/de/mirrors2.xml und drücken Sie Enter.

Wenn links nicht verfügbar ist, sollte Ihnen lynx bereit stehen. Wenn Sie über einen Proxy in das Internet gehen, exportieren Sie die http_proxy und ftp_proxy Variablen:

Befehlsauflistung 2.2: Konfiguration der Proxy Informationen für lynx

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

Wir gehen ab jetzt davon aus, dass Ihnen links zur Verfügung steht.

Wählen Sie einen Mirror in Ihrer Nähe. Normalerweise genügen HTTP-Mirror, aber andere Protkolle sind auch verfügbar. Wechseln Sie nun in das Verzeichnis releases/amd64/autobuilds/. Dort sollten Sie nun alle verfügbaren stage-Dateien für Ihre Rechnerarchitektur vorfinden (evtl. auch in weiteren Unterverzeichnissen, die nach der individuellen Subarchitektur benannt sind). Wählen Sie eine Datei aus und starten den Download mit der Taste D. Nach dem Download können Sie den Browser mit der Taste Q schließen.

Befehlsauflistung 2.3: Mirrorliste mit links anschauen

# links http://www.gentoo.org/main/en/mirrors.xml
(Wenn Sie Proxy-Unterstützung in links benötigen:)
# links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

Stellen Sie sicher, dass Sie ein stage3-Archiv herunterladen. Installationen mit einem stage1- oder stage2-Archiv werden nicht mehr unterstützt (in der Regel sollten Sie eh keine stage1- oder stage2-Archive mehr auf unseren Mirrorn finden).

Wenn Sie die Integrität des heruntergeladenen Stagearchives prüfen wollen, benutzen Sie openssl und vergleichen Sie die Ausgabe mit den auf dem Mirror gespeicherten Prüfsummen. Die Digests-Dateien stellen mehrere Prüfsummen bereit, die alle mit unterschiedlichen Algorithmen erstellt wurden. Die empfohlenen sind SHA512 und Whirlpool.

Befehlsauflistung 2.4: Berechnen der Integritätsprüfsumme eines Stage-Tarballs

## Berechnen der SHA512-Prüfsumme
# openssl dgst -r -sha512 stage3-amd64-<release>.tar.bz2
oder
# sha512sum stage3-amd64-<release>.tar.bz2

## Berechnen der Whirlpool-Prüfsumme
# openssl dgst -r -whirlpool stage3-amd64-<release>.tar.bz2

Vergleichen Sie die Ausgabe dieser Befehle mit den Werten, die sich in der .DIGESTS-Datei finden. Diese Datei kann auch auf den Mirrorn gefunden werden. Die Werte müssen übereinstimmen, ansonsten ist die heruntergeladene Datei (oder die Digests-Datei) vermutlich beschädigt.

Entpacken des Stagearchivs

Nun entpacken Sie das heruntergeladene Stagearchiv auf Ihrem System. Wir benutzen tar dafür, weil es die einfachste Methode ist:

Befehlsauflistung 2.5: Entpacken des Stagearchivs

# tar xvjpf stage3-*.tar.bz2

Stellen Sie sicher, dass Sie die gleichen Optionen (xvjpf) verwenden. Das x steht für Auspacken (engl. Extract), das v für Auskunftsfreudig (engl. Verbose) um zu sehen, was während des Entpackvorgangs passiert (optional), das j für Dekomprimieren mit bzip2, das p für Erhalt der Dateirechte (engl. Preserve permissions) und das f zeigt an, dass wir eine Datei auspacken wollen und nicht die Standardeingabe benutzen.

Wenn das Stagearchiv installiert ist, fahren Sie nun mit der Konfiguration der Compiler-Optionen fort.

5.c. Konfiguration der Compiler-Optionen

Einführung

Um Gentoo zu optimieren, können Sie einige Variablen setzen, die Einfluss auf das Verhalten von Portage nehmen. Alle diese Variablen können als Umgebungsvariablen (mit export) gesetzt werden, dies ist aber keine dauerhafte Lösung. Um Ihre Einstellungen zu behalten, bietet Portage Ihnen /etc/portage/make.conf, eine Konfigurationsdatei für Portage. Diese Datei werden wir nun bearbeiten.

Notiz: Eine kommentierte Auflistung aller verfügbaren Variablen finden Sie in /mnt/gentoo/usr/share/portage/config/make.conf.example. Für eine erfolgreiche Gentoo-Installation müssen Sie aber nur die im folgenden beschriebenen Variablen setzen.

Starten Sie Ihren Lieblingseditor (in diesem Leitfaden nutzen wir nano) um die im Folgenden vorgestellten Optimierungsvariablen zu ändern.

Befehlsauflistung 3.1: /etc/portage/make.conf bearbeiten

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

Wie Sie sicher sofort bemerkt haben, schaut die Datei make.conf.example wie eine typische Konfigurationsdatei aus: auskommentierte Zeilen beginnen mit einem "#", andere Zeilen definieren Variablen mittels einer VARIABLE="content" Syntax. Die make.conf Datei nutzt die gleiche Syntax. Einige dieser Variablen werden nun vorgestellt.

CFLAGS und CXXFLAGS

Die CFLAGS und CXXFLAGS Variablen definieren die Optimierungen beispielsweise für den gcc C und C++ Compiler. Obgleich wir diese hier nur allgemein definieren, erhalten Sie die maximale Leistung nur, wenn Sie die Flags für jedes Programm einzeln optimieren. Als Begründung sei genannt: Jedes Programm verhält sich anders.

In make.conf sollten Sie die Optimierungs-Flags definieren, von denen Sie erwarten, dass diese Ihr System insgesamt zu Geschwindigkeitssteigerungen verhelfen. Machen Sie keine Experimente bei dieser Variable; zu forsche Optimierung kann dazu führen, dass Programme sich böswillig verhalten (Abstürze, oder noch viel schlimmer: Fehlfunktionen).

Wir werden nicht alle möglichen Optimierungsoptionen erklären. Wenn Sie diese gerne komplett kennenlernen möchten, schauen Sie sich das GNU Online Manual oder die gcc Info-Seite (info gcc -- funktioniert erst auf einem installierten System) an. Die make.conf.example Datei selbst enthält weitere Beispiele und Informationen; vergessen Sie nicht, diese zu lesen.

Die erste Einstellung ist das -march= oder -mtune= Flag, dieses spezifiziert den Namen der Zielarchitektur. Mögliche Optionen werden in make.conf.example in den Kommentaren beschrieben. Ein oft verwendeter Wert ist native, da dieser den Compiler anweist, als Zielarchitektur die Architektur des aktuellen Systems (auf dem Sie die Installation durchführen) zu verwenden.

Die zweite ist das -O Flag (das ist ein großes O, keine Null), welches für eine gcc Optimierungsklasse steht. Mögliche Klassen sind s (schlankes Kompilat, engl. size-optimized), 0 (eine Null für keine Optimierung), 1, 2 oder sogar 3 für auf höhere Geschwindigkeit optimierte Flags (jede Klasse erbt die Flags der kleineren, zuzüglich ein paar Extras). Die empfohlene Standardeinstellung ist -O2. Es ist bekannt, dass -O3 Probleme bereitet, wenn es systemweit genutzt wird, daher empfehlen wir, dass Sie -O2 beibehalten.

Ein weiteres, gerne benutztes Optimierungsflag, ist -pipe (benutzt Pipes statt temporärer Dateien für die Kommunikation zwischen den verschiedenen Stufen des Übersetzungsvorganges). Dies hat keinen Einfluss auf den generierten Code, verwendet aber mehr Speicher. Auf Systemen mit wenig Speicher könnte gcc gekillt werden. In diesem Fall sollten Sie dieses Flag nicht verwenden.

Die Nutzung von -fomit-frame-pointer (welches den Frame-Pointer nicht in einem Register bereithält, für Funktionen, die es nicht benötigen) kann gravierende Auswirkungen auf das Debuggen von Anwendung haben.

In CFLAGS und CXXFLAGS sollten Sie gleich mehrere Optimierungsflags kombinieren. Die im stage3-Archiv enthaltenen Vorgaben sind für die erste Installation schon richtig eingestellt. Der folgende Abschnitt dient nur als Beispiel:

Befehlsauflistung 3.2: Setzen der CFLAGS- und CXXFLAGS-Variablen

CFLAGS="-march=k8 -O2 -pipe"   # Intel EM64T Anwender sollten -march=core2 verwenden
# Verwenden der gleichen Einstellungen für beide Variablen
CXXFLAGS="${CFLAGS}"

Notiz: Falls es Sie genauer interessiert, wie die verschiedenen Kompilations-Optionen auf Ihr System einwirken können, ziehen Sie bitte den Kompilations-Optimierungs-Leitfaden zu Rate.

MAKEOPTS

Mit MAKEOPTS können Sie festlegen, wie viele Kompilerprozesse parallel gestartet werden, wenn Sie ein Paket installieren. Eine gute Wahl ist die Anzahl der CPUs (oder CPU-Kerne) in Ihrem System erhöht um eins, aber diese Richtlinie ist nicht immer perfekt.

Befehlsauflistung 3.3: MAKEOPTS eines gewöhnlichen 1-CPU Systems

MAKEOPTS="-j2"

Auf die Plätze, fertig, los!

Aktualisieren Sie /mnt/gentoo/etc/portage/make.conf nach Ihren Bedürfnissen und speichern Sie die Datei (nano Benutzer drücken Strg-X). Nun sind Sie bereit, um mit der Installation des Gentoo Basis-Systems fortzufahren.

6. Installation des Gentoo Basissystem

6.a. Chroot

Optional: Auswahl eines Mirrors

Um Quellcode schnell herunterladen zu können, empfehlen wir einen schnellen Spiegel auszuwählen. Portage schaut in make.conf nach einer GENTOO_MIRRORS-Variable und benutzt die dort gelisteten Spiegel. Sie können auf unserer Spiegelübersicht nach einem nahegelegenen Spiegel suchen (da diese meist auch die schnellsten sind), wir bieten jedoch auch ein nettes Tool namens mirrorselect an, welches Ihnen ein nettes Interface anbietet, mit dem Sie die Spiegel, die Sie haben wollen, auswählen können. Navigieren Sie einfach zu den Spiegeln Ihrer Wahl und drücken Sie die Leertaste, um einen oder mehrere Spiegel auszuwählen.

Befehlsauflistung 1.1: Nutzung von mirrorselect für die GENTOO_MIRRORS-Variable

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

Eine zweite wichtige Konfiguration ist die SYNC-Variable in make.conf. Diese Variable enthält den rsync-Server, den Sie zum aktualisieren Ihres Portage-Trees (die Kollektion von Ebuilds, Skripte die alle Informationen enthalten, die Portage zur Installation von Software benötigt) verwenden wollen. Auch wenn Sie dies manuell festlegen können, mirrorselect kann Ihnen auch diesen Schritt abnehmen:

Befehlsauflistung 1.2: Mit mirrorselect einen rsync Server auswählen

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

Nachdem Sie mirrorselect ausgeführt haben, ist es ratsam die Einstellungen in /mnt/gentoo/etc/portage/make.conf sorgfältig zu überprüfen.

Notiz: Wenn Sie manuell einen SYNC-Server in der make.conf setzen wollen, sollten Sie die Community-Mirror-Liste nach den Ihnen naheliegendsten Servern durchsuchen. Wir empfehlen Ihnen, einen rotation Mirror, bspw. rsync.de.gentoo.org, zu verwenden, anstatt einen bestimmten Mirror auszuwählen. Dies hilft dabei, die Last zu verteilen, und ist ausfallsicher, falls ein bestimmter Mirror offline ist.

Kopieren der DNS-Informationen

Einen Schritt müssen Sie noch machen, bevor Sie Ihre neue Umgebung betreten können. Das ist das Kopieren der DNS-Informationen aus der /etc/resolv.conf in die Chroot-Umgebung. Sie müssen diesen Schritt ausführen, um sicherzustellen, dass Ihr Netzwerk nach dem Betreten der Chroot-Umgebung noch funktioniert. /etc/resolv.conf enthält die Nameserver für Ihr Netzwerk.

Befehlsauflistung 1.3: Kopieren der DNS-Informationen

(Die "-L" Option wird benötigt um sicherzustellen, dass Sie keinen symbolischen Link kopieren.)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Mounten der benötigten Dateisysteme

In wenigen Momenten werden wir die Wurzel des Linux-Systems auf den neuen Pfad ändern. Um sicherzustellen, dass die neue Umgebung richtig funktioniert, müssen wir dort bestimmte Dateisysteme ebenfalls verfügbar machen.

Mounten Sie das /proc Dateisystem nach /mnt/gentoo/proc, um es der Installation zu ermöglichen, innerhalb der chroot-Umgebung die vom Kernel bereitgestellten Informationen zu verwenden. Bind-mounten Sie außerdem die /dev und /sys Dateisysteme.

Befehlsauflistung 1.4: Mounten von /proc und /dev

# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev

Betreten der neuen Umgebung

Nachdem nun alle Partitionen initialisiert sind und das Basissystem installiert ist, können Sie Ihre neue Installationsumgebung betreten, indem Sie in die Umgebung chrooten. Das bedeutet, dass Sie von der aktuellen Installationsumgebung (die Installations-CD oder ein anderes Installationsmedium) in Ihr zu installierendes System (nämlich das der initialisierten Partitionen) wechseln.

Das Chrooting erfolgt in drei Schritten. Als erstes werden wir das Wurzelverzeichnis von / (auf dem Installationsmedium) nach /mnt/gentoo (auf Ihren Partitionen) mittels chroot ändern. Dann müssen noch einige Einstellungen, welche von /etc/profile bereitgestellt werden, mittels source neu in den Speicher geladen werden. Im letzten Schritt definieren wir den primären Prompt neu, um nicht zu vergessen, dass wir uns innerhalb der chroot-Umgebung befinden.

Befehlsauflistung 1.5: Chroot in die neue Umgebung

# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"

Glückwunsch! Sie sind nun in Ihrer neuen Gentoo Linux Umgebung. Natürlich sind wir noch nicht fertig, darum gibt es auch noch einige Abschnitte in der Anleitung, denen Sie folgen müssen. :-)

Falls Sie zu irgendeinem Zeitpunkt ein weiteres Terminal oder eine weitere Konsole benötigen, um auf die chroot-Umgebung zuzugreifen, dann müssen Sie lediglich die obigen Schritte erneut ausführen.

6.b. Konfiguration von Portage

Einen Portage-Snapshot entpacken

Sie müssen nun einen Snapshot des Portage-Trees installieren, eine Sammlung von Dateien, die Portage informieren, welche Porgramme installiert werden können, welche Profile es gibt, etc. Die Inhalte dieses Snapshots werden nach /usr/portage extrahiert.

Wir empfehlen den Einsatz von emerge-webrsync. Dieses Tool lädt den neuesten Portage-Snapshot (welcher täglich veröffentlicht wird) von einem unserer Mirror herunter und installiert ihn auf Ihrem System.

Befehlsauflistung 2.1: Ausführen von emerge-webrsync zur Installation eines Portage-Snapshots

# mkdir /usr/portage
# emerge-webrsync

Portage-Tree updaten

Sie können nun Ihren Portage-Tree auf den aktuellsten Stand bringen. emerge --sync verwendet das rsync-Protokoll um den Portage-Tree (den Sie vorhin mit emerge-webrsync bezogen haben) in den neuesten Zustand zu bringen.

Befehlsauflistung 2.2: Portage-Tree updaten

# emerge --sync
(Wenn Sie ein langsames Terminal verwenden, wie einige Framebuffer
oder eine serielle Konsole, dann können Sie die --quiet Option hinzufügen um
den Vorgang zu beschleunigen)
# emerge --sync --quiet

Wenn Sie sich hinter einer Firewall befinden, die rsync-Verkehr blockiert, können Sie diesen Schritt auch ignorieren, da Sie schon einen recht aktuellen Portage-Tree besitzen.

Falls Sie gewarnt werden, dass eine neue Version von Portage verfügbar ist und Sie aktualisieren sollten, sollten Sie dies nun mit dem Befehl emerge --oneshot portage tun. Möglicherweise bekommen sie auch noch die Meldung "News items need reading", da es noch neue, ungelesene News gibt. Dazu mehr im nächsten Abschnitt.

Lesen von News

Wenn Sie einen Portage-Tree auf Ihr System synchronisieren, kann es sein, dass Portage Ihnen folgende Warnung ausgibt:

Befehlsauflistung 2.3: Portage informiert Sie darüber, dass neue News verfügbar sind

 * IMPORTANT: 2 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

Portage-News wurden erstellt, um ein Kommunikationsmedium anzubieten, über das kritische Meldungen an die Benutzer über den rsync-Tree mitgeteilt werden können. Um die News zu verwalten, verwenden Sie eselect news. Mit dem Unterkommando read können Sie alle News lesen. Mit list erhalten Sie eine Übersicht über die verfügbaren News und mit purge können Sie die News entfernen, wenn Sie sie gelesen haben und nicht länger benötigen.

Befehlsauflistung 2.4: Verwenden der Portage-News

# eselect news list
# eselect news read

Weitere Informationen zum Newsreader erhalten Sie auf seiner Manual-Seite: man news.eselect.

Auswahl des richtigen Profils

Zunächst ist eine kleine Defintion notwendig.

Ein Profil ist existenziell für ein Gentoo-System. Es definiert nicht nur Standardwerte für USE, CFLAGS und andere wichtige Variablen, es beschränkt das System auch auf eine definierte Masse an Paketversionen. Dies alles wird von Gentoo-Entwicklern betreut.

Bisher hatten Benutzer mit Profilen wenig zu tun. Jedoch kann es bestimmte Umstände geben in denen ein Profilwechsel möglicherweise notwendig ist.

Sie können das aktuell verwendete Profil mit dem folgenden Befehl anzeigen:

Befehlsauflistung 2.5: Überprüfen des Systemprofils

# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0 *
  [2]   default/linux/amd64/13.0/desktop
  [3]   default/linux/amd64/13.0/server

Wie Sie sehen können, sind außerdem desktop und server Subprofile für einige Architekturen verfügbar. eselect profile list zeigt Ihnen alle verfügbaren Profile an.

Nachdem Sie sich die verschiedenen Profile für Ihre Architektur angesehen haben, können Sie, sofern Sie dies wünschen, ein anderes verwenden:

Befehlsauflistung 2.6: Profile wechseln

# eselect profile set 2

Wenn Sie eine reine 64-Bit-Umgebung wünschen, ohne 32-Bit-Anwendungen oder -Bibliotheken, sollten Sie ein kein-Multilib Profil verwenden:

Befehlsauflistung 2.7: Wechsel auf ein kein-Multilib Profil

# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0 *
  [2]   default/linux/amd64/13.0/desktop
  [3]   default/linux/amd64/13.0/no-multilib
  [4]   default/linux/amd64/13.0/server
(Wählen Sie das no-multilib-Profil aus)
# eselect profile set 3
(Überprüfen Sie die Änderung)
# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/desktop
  [3]   default/linux/amd64/13.0/no-multilib *
  [4]   default/linux/amd64/13.0/server

Notiz: Das Unterprofil developer ist für Aufgaben der Gentoo Linux Entwicklung gedacht. Es ist nicht dafür gedacht generelle Entwicklungsumgebungen einrzurichten.

Konfiguration der USE-Variable

USE heißt eine der mächtigsten Variable, die Gentoo seinen Benutzern anbietet. Viele Programme können mit oder ohne optionale Unterstützung für bestimmte Dinge übersetzt werden. Beispielsweise können einige Programme mit gtk Unterstützung oder mit qt Unterstützung übersetzt werden oder mit keiner der beiden. Einige Programme können mit oder ohne SSL-Unterstützung übersetzt werden. Einige Programme können sogar mit Framebuffer-Support (svgalib) anstelle von X11-Support (X-server) übersetzt werden.

Die meisten Distributionen kompilieren ihre Pakete mit eingeschalteter Unterstützung für alles, was möglich ist. Dies vergrößert die Programme, verlängert die Startzeit und, nicht zu vergessen, erhöht die Abhängigkeiten. Mit Gentoo können Sie selbst bestimmen, mit welchen Optionen ein Paket übersetzt werden soll. Hier kommen die USE-Variable ins Spiel.

Mit der USE-Variable definieren Sie Schlagworte, die dann auf Optionen beim Übersetzen abgebildet werden. Zum Beispiel wird ssl zu SSL-Unterstützung führen, wenn das Programm dies unterstützt. -X entfernt die X-Server-Unterstützung (beachten Sie das Minuszeichen). gnome gtk -kde -qt4 führt zu übersetzten Programmen mit Gnome- (und gtk-) Unterstützung aber ohne KDE- (und QT-) Unterstützung, also zu einem ganz auf GNOME ausgerichteten System.

Die Standardeinstellungen für USE sind in der make.defaults Datei in Ihrem Profil definiert. Sie finden make.defaults Dateien in dem Verzeichnis, auf das /etc/portage/make.profile zeigt sowie allen übergeordneten Verzeichnissen. Die Gesamtheit aller aktivierten USE-Flags ergibt sich aus allen Angaben von USE in allen make.defaults Dateien. Was Sie in /etc/portage/make.conf platzieren, wird zu den Standardeinstellungen addiert. Wenn Sie der USE-Einstellung etwas hinzufügen, werden die Standardvorgaben damit erweitert. Wenn Sie aus der USE-Einstellung etwas entfernen (mit einem Minuszeichen davor), so wird dies aus der Standardeinstellung entfernt (falls es überhaupt in dieser vorhanden war). Niemals sollten Sie irgendwas in /etc/portage/make.profile modifizieren; dies wird beim nächsten Update von Portage überschrieben!

Eine vollständige Beschreibung zu USE können Sie im zweiten Teil des Gentoo-Handbuchs, USE-Flags, lesen. Eine vollständige Beschreibung der USE-Flags finden Sie in Ihrem System in /usr/portage/profiles/use.desc.

Befehlsauflistung 2.8: Verfügbare USE-Flags anschauen

# less /usr/portage/profiles/use.desc
(Sie können mit den Pfeiltasten scrollen, verlassen Sie less mit 'q')

Als Beispiel nun die USE-Einstellung für ein KDE-basiertes System mit Überstützung für DVD, ALSA und CD-Brenner.

Befehlsauflistung 2.9: /etc/portage/make.conf öffnen

# nano -w /etc/portage/make.conf

Befehlsauflistung 2.10: USE-Einstellung

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

7. Konfiguration des Kernels

7.a. Setzen der Zeitzone des Systems

Zuerst müssen Sie Ihrem System mitteilen, in welcher Zeitzone es sich befindet. Suchen Sie Ihre Zeitzone in /usr/share/zoneinfo und kopieren Sie sie nach /etc/localtime.Bitte vermeiden Sie die /usr/share/zoneinfo/Etc/GMT* Zeitzonen, denn deren Namen verweisen nicht auf die erwarteten Zonen. Zum Beispiel ist GMT-8 in Wirklichkeit GMT+8.

Befehlsauflistung 1.1: Setzen der Zeitzone

# ls /usr/share/zoneinfo
(Beispiel: Europe/Brussels)
# cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime
(Nun die Zeitzone setzen)
# echo "Europe/Brussels" > /etc/timezone

7.b. Installieren der Quellen

Auswählen eines Kernels

Der Kern um den herum alle Distributionen gebaut sind ist der Linux-Kernel. Er bildet die Ebene zwischen den Benutzerprogrammen und der Systemhardware. Gentoo bietet seinen Benutzern verschiedene mögliche Kernelquellen. Eine komplette Liste mit Beschreibungen finden Sie im Gentoo Kernel Guide.

Für AMD64-basierende Systeme haben wir gentoo-sources (Kernelquellen modifiziert für zusätzliche Funktionen).

Wählen Sie Ihre Kernelquellen aus und installieren Sie diese mit emerge.

Befehlsauflistung 2.1: Installieren von Kernelquellen

# emerge gentoo-sources

Wenn Sie einen Blick in /usr/src werfen, sollten Sie einen symbolischen Link mit Namen linuxsehen , der auf Ihre Kernelquellen verweist. In diesem Fall verweisen die installierten Kernelquellen auf gentoo-sources-3.4.9. Beachten Sie, dass Ihre Version davon abweichen kann.

Befehlsauflistung 2.2: Anzeigen des symbolischen Kernelquellen-Links

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

Nun ist es Zeit Ihre Kernelquellen zu konfigurieren und zu kompilieren. Alle Architekturen können genkernel verwenden, welches einen generischen Kernel erstellt, wie er von der Installations-CD verwendet wird. Wir erklären die "manuelle" Konfiguration jedoch zuerst, denn es ist der beste Weg Ihre Umgebung zu optimieren.

Wenn Sie Ihren Kernel manuell konfigurieren wollen, fahren Sie nun mit Standard: Manuelle Konfiguration fort. Wenn Sie genkernel benutzen wollen, sollten Sie stattdessen Alternativ: Benutzung von Genkernel lesen.

7.c. Standard: Manuelle Konfiguration

Einführung

Einen Kernel manuell zu konfigurieren wird oft als der schwierigste Teil gesehen, den jeder Linux Benutzer insgesamt meistern muss. Nichts ist weiter von der Wahrheit entfernt -- nach der Konfiguration von einigen Kerneln werden Sie sich gar nicht daran erinnern, dass es schwer war.

Eine Sache jedoch ist wahr: Sie müssen Ihr System kennen, wenn Sie beginnen einen Kernel manuell zu konfigurieren. Die meisten Informationen über vorhandene Hardware können gesammelt werden, indem Sie sich pciutils installieren (emerge pciutils), welches lspci enthält. Sie haben nun die Möglichkeit lspci innerhalb der chroot-Umgebung zu verwenden. Sie können ohne Sorge jegliche pcilib-Warnungen (wie pcilib: cannot open /sys/bus/pci/devices), die lspci ausgibt, ignorieren. Alternativ können Sie lspci aus einer nicht-chroot-Umgebung ausführen. Das Resultat ist dasselbe. Sie können auch lsmod ausführen, um zu sehen welche Kernelmodule die Installations-CD verwendet (es kann ihnen einen guten Hinweis darauf geben was zu aktivieren ist).

Gehen Sie nun in Ihr Kernelquellverzeichnis und führen Sie make menuconfig aus. Dies startet ein ncurses-basierentes Konfigurationsmenü.

Befehlsauflistung 3.1: Menuconfig starten

# cd /usr/src/linux
# make menuconfig

Ihnen werden verschiedene Konfigurationssektionen präsentiert. Wir listen zunächst einige Optionen auf, die sie aktivieren müssen (ansonsten wird Gentoo nicht funktionieren, oder ohne zusätzliche Veränderungen nicht richtig funktionieren).

Aktivieren der benötigten Optionen

Stellen Sie sicher, dass alle Treiber, die notwendig sind um Ihr System zu booten (wie zum Beispiel Treiber für einen SCSI-Controller) in den Kernel und nicht als Modul kompiliert werden, da Ihr System andernfalls nicht vollständig booten kann.

Als nächstes wird der exakte Prozessortyp ausgewählt. Vom x86_64 Kernel-Maintainer wird dringend empfohlen die MCE-Funktionen zu aktivieren, damit Sie bei jeglichen Hardwareproblemen benachrichtigt werden können. Auf x86_64 werden diese Fehler nicht bei dmesg, wie auf anderen Architekturen, ausgegeben, sondern auf /dev/mcelog. Dies benötigt das app-admin/mcelog Paket. Stellen Sie sicher dass Sie IA32 Emulation ausgewählt haben, wenn Sie in der Lage sein wollen 32-Bit-Programme auszuführen. Gentoo wird standardmäßig ein Multilib-System installieren (gemischte 32-Bit/64-Bit-Verarbeitung), daher ist diese Option erforderlich.

Notiz: Wenn Sie vorhaben, ein non-multilib-Profil (für ein reines 64-bit-System) zu verwenden, dann müssen Sie IA32 Emulation nicht auswählen. Sie müssen aber auch die Anweisungen zum Wechsel auf ein non-multilib-Profil befolgen und einen korrekten Bootloader auswählen.

Befehlsauflistung 3.2: Auswahl des Prozessortyps und dessen Funktionen

Processor type and features  --->
   [ ] Machine Check / overheating reporting
   [ ] Intel MCE Features
   [ ] AMD MCE Features
  Processor family (AMD-Opteron/Athlon64)  --->
    ( ) Opteron/Athlon64/Hammer/K8
    ( ) Intel P4 / older Netburst based Xeon
    ( ) Core 2/newer Xeon
    ( ) Intel Atom
    ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

Wählen Sie nun Maintain a devtmpfs file system to mount at /dev aus, so dass kritische Gerätedateien schon früh während des Boot-Prozesses verfügbar sind.

Befehlsauflistung 3.3: Aktivieren von devtmpfs Unterstützung

Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Gehen Sie nun in File Systems und selektieren Sie Unterstützung für die Dateisysteme die Sie benutzen. Kompilieren Sie diese nicht als Module, ansonsten wird ihr Gentoo System nicht fähig sein, Ihre Partitionen beim Booten zu mounten. Selektieren Sie auch Virtual memory, /proc file system.

Befehlsauflistung 3.4: Auswählen der benötigten Dateisysteme

File systems --->
(Wählen Sie eine oder mehrere der folgenden Optionen, wie von Ihrem System benötigt, aus.)
  <*> Second extended fs support
  <*> Ext3 journalling file system support
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  ...
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(Aktivieren Sie GPT-Partitions-Label-Unterstützung, falls Sie das vorhin verwendet haben)
-*- Enable the block layer --->
    ...
    Partition Types --->
      [*] Advanced partition selection
      ...
      [*] EFI GUID Partition support

Wenn Sie PPPoE oder ein Modem benutzen um sich ins Internet einzuwählen brauchen Sie folgende Optionen im Kernel:

Befehlsauflistung 3.5: Auswählen von Treibern, notwendig für PPPoE

Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Die zwei Komprimierungsoptionen werden nicht schaden, aber werden auch nicht definitiv gebraucht, ebenso die PPP over Ethernet Option, die möglicherweise nur von ppp verwendet wird, wenn es dazu konfiguriert ist Kernelmodus-PPPoE zu verwenden.

Wenn Sie diese benötigen, vergessen Sie nicht Ünterstützung für Ihre Netzwerkkarte in Ihren Kernel einzubinden.

Wenn Sie einen Multi-CPU-Opteron oder ein Multi-Core-System (z.B. AMD64 X2) haben sollten Sie "Symmetric multi-processing support" aktivieren:

Befehlsauflistung 3.6: Aktivieren der SMP-Unterstützung

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

Notiz: Auf Multi-Core Systemen zählt jeder Kern als ein Prozessor.

Wenn Sie USB-Eingabegeräte wie eine Tastatur oder Maus nutzen möchten, vergessen Sie Unterstützung für diese ebenfalls nicht:

Befehlsauflistung 3.7: Aktivieren der USB-Unterstützung für Eingabegeräte

Device Drivers --->
  [*] HID Devices  --->
    <*>   USB Human Interface Device (full HID) support

Kompilieren und Installieren

Nun da Ihr Kernel konfiguriert ist, ist es Zeit ihn zu kompilieren und zu installieren. Verlassen Sie die Konfiguration und beginnen Sie mit dem Kompilierungsvorgang:

Befehlsauflistung 3.8: Kompilieren des Kernels

# make && make modules_install

Wenn der Kernel fertig kompiliert ist, kopieren Sie das Kernel-Image nach /boot. Verwenden Sie jeglichen Namen, den Sie für Ihren Kernel passend finden und merken Sie ihn sich, da Sie ihn später benötigen werden, wenn Sie Ihren Bootloader konfigurieren. Denken Sie daran kernel-3.4.9-gentoo durch den Namen und die Version Ihres Kernels zu ersetzen.

Befehlsauflistung 3.9: Installieren des Kernels

  # cp arch/x86_64/boot/bzImage /boot/kernel-3.4.9-gentoo

(Optional) Bauen eines initramfs

Wenn Sie ein spezifisches Partitions-Layout verwenden, bei dem wichtige Dateisystemorte (wie /usr oder /var) auf separaten Partitionen liegen, dann müssen Sie ein initramfs aufsetzen, so dass diese Partitionen gemountet werden können, bevor sie benötigt werden.

Ohne ein initramfs laufen Sie Gefahr, dass das System nicht richtig booten wird, da die Tools, die dafür verantwortlich sind, dass die Dateisysteme gemountet werden, Informationen benötigen, die auf gerade diesen Dateisystemen liegen. Ein initramfs zieht alle benötigten Dateien in ein Archiv, das dann direkt nach dem Booten des Kernels benutzt wird, aber noch bevor die Kontrolle an das init Tool übergeben wird. Skripte im initramfs sorgen dann dafür, dass die Partitionen richtig gemountet werden, bevor das System mit dem Booten fortfährt.

Um ein initramfs zu installieren, installieren Sie zunächst genkernel und lassen Sie es dann ein initramfs für Sie generieren.

Befehlsauflistung 3.10: Bauen eines initramfs

# emerge genkernel
# genkernel --install initramfs

Wenn Sie bestimmte Funktionalitäten in dem initramfs benötigen, wie bspw. lvm oder raid, verwenden Sie die entsprechenden Optionen für genkernel. Siehe genkernel --help für weitere Informationen, oder das nächste Beispiel, welches Unterstützung für LVM und Software-RAID (mdadm) aktiviert:

Befehlsauflistung 3.11: Bauen eines initramfs mit Unterstützung für LVM und Software-RAID

# genkernel --lvm --mdadm --install initramfs

Das initramfs wird unter /boot gespeichert. Sie können die Datei durch einfaches Auflisten der mit initramfs beginnenden Dateien finden:

Befehlsauflistung 3.12: Finden der initramfs-Datei

# ls /boot/initramfs*

Fahren Sie nun mit den Kernelmodulen fort.

7.d. Alternativ: Benutzung von Genkernel

Wenn Sie diesen Abschnitt lesen, haben Sie sich entschieden unser genkernel Skript zu benutzen, um sich Ihren Kernel automatisch konfigurieren zu lassen.

Nun da Ihr Kernelquellbaum installiert ist, ist es an der Zeit Ihren Kernel automatisch durch das genkernel Skript erstellen zu lassen. genkernel arbeitet so, dass es einen Kernel konfiguriert, der fast identisch ist zu denen auf unser Installations-CD. Dies bedeutet, dass wenn Sie genkernel benutzen um Ihren Kernel zu erstellen, Ihr System generell alle Hardware beim Booten erkennt, genau wie es unsere Installations-CD tut. Weil genkernel keine manuelle Kernelkonfiguration erfordert ist es eine ideale Lösung für die Benutzer, denen bei der Kompilierung eines eigenen Kernels unwohl ist.

Nun lassen Sie uns sehen wie man Genkernel benutzt. Zuerst installieren Sie genkernel:

Befehlsauflistung 4.1: Genkernel emergen

# emerge genkernel

Kompilieren Sie nun Ihre Kernelquellen mit genkernel all. Seien Sie sich aber bewusst, dass genkernel einen Kernel kompiliert, der fast alle Hardware unterstützt, was bedeutet, dass das Kompilieren durchaus eine ganze Weile dauern kann!

Beachten Sie, dass, wenn Ihre Boot-Partition weder ext2 noch ext3 als Dateisystem benutzt, Sie Ihren Kernel selber mit genkernel --menuconfig all konfigurieren und Unterstützung für Ihr Dateisystem im Kernel aktivieren müssen (nicht als Modul). Benutzer von LVM2 möchten vermutlich das Argument --lvm2 hinzufügen.

Befehlsauflistung 4.2: Ausführen von Genkernel

# genkernel all

Sobald genkernel beendet ist, werden ein Kernel, ein voller Satz Module und eine initial ram disk (initramfs) erstellt sein. Wir werden den Kernel und initrd benutzen wenn wir später in diesem Handbuch einen Bootloader konfigurieren. Schreiben Sie den Namen des Kernels und den Ihrer initrd auf, da Sie diese brauchen werden, wenn Sie die den Bootloader konfigurieren. Die initrd wird direkt nach dem Booten gestartet um die Hardware Autoerkennung zu starten (genau wie auf der Installations-CD) bevor Ihr "echtes" System startet.

Befehlsauflistung 4.3: Kontrollieren der Namen von Kernel-Image und initrd

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

7.e. Kernelmodule

Konfiguration der Module

Sie sollten alle Module, die automatisch geladen werden sollen, in /etc/conf.d/modules aufführen. Sie können, wenn Sie wollen, zu den Modulen weitere Optionen angeben.

Um alle verfügbaren Module anzuzeigen, führen Sie folgenden find Befehl aus. Vergessen Sie nicht "<kernel version>" mit der Version des Kernels zu ersetzen, den Sie gerade kompiliert haben:

Befehlsauflistung 5.1: Anzeigen aller verfügbaren Module

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

Um zum Beispiel das Modul 3c59x.ko (das ein Treiber für eine bestimmte Sorte von 3Com-Netzwerkkarten ist) automatisch zu laden, editieren Sie die Datei /etc/conf.d/modules und tragen den Modulnamen ein.

Befehlsauflistung 5.2: /etc/conf.d/modules bearbeiten

# nano -w /etc/conf.d/modules
modules_2_6="3c59x"

Setzten Sie die Installation mit der Konfiguration des Systems fort.

8. Konfiguration des Systems

8.a. Einträge in der Datei /etc/fstab

Was ist die fstab?

Unter Linux müssen alle für das System notwendigen Partitionen in der Datei /etc/fstab aufgelistet sein. Die Datei beinhaltet Informationen darüber, an welcher Stelle jede Partition im Verzeichnisbaum eingehängt (gemountet) werden soll, um welches Dateisystem es sich handelt und weitere Optionen (automatisches Mounten beim Systemstart oder nicht, mounten durch User erlauben für z.B. CD-Rom, Floppy, USB-Sticks usw.).

Erstellen von /etc/fstab

/etc/fstab benutzt die folgende Syntax. Jede Zeile besteht aus sechs Feldern, die durch Leerzeichen oder Tabs getrennt sind. Jedes Feld hat eine bestimmte Bedeutung:

  • Das erste Feld beschreibt die einzuhängende Partition (also den Pfad zur Gerätedatei).
  • Das zweite Feld gibt den Mountpoint im Verzeichnisbaum für die Partition an.
  • Das dritte Feld gibt den Typ des Dateisystems der Partition an.
  • Das vierte Feld gibt die Mount Optionen an, die beim Ausführen von mount benutzt werden. Da es für jedes Dateisystem verschiedene Mountoptionen gibt, ist es empfehlenswert die Liste der Optionen in der man-page (man mount) nachzulesen. Mehrere Optionen werden durch Kommata getrennt.
  • Das fünfte Feld wird von dump benutzt, um festzustellen, ob die Partition gesichert (engl. gedumped) werden soll oder nicht. Normalerweise lässt man diesen Wert auf 0 (Null).
  • Das sechste Feld wird von fsck ausgelesen, um festzustellen, ob es nach unsauberem Herunterfahren des Systems nötig ist, das Dateisystem auf Inkonsistenz zu prüfen. Das Root-Dateisystem sollte in diesem Feld eine 1 haben; alle anderen Dateisysteme eine 2 (Dateisysteme, bei denen keine Prüfung notwendig ist, eine 0).

Wichtig: Die Standard /etc/fstab-Datei von Gentoo ist keine gültige fstab-Datei. Sie müssen Ihre eigene /etc/fstab erstellen.

Befehlsauflistung 1.1: Öffnen von /etc/fstab

# nano -w /etc/fstab

Schauen wir uns einmal die Optionen für die /boot-Partition an. Das ist nur ein Beispiel, wenn Sie keine /boot-Partition erstellen konnten oder wollten, kopieren Sie dies nicht.

In unserem Standard-AMD64-Partitionierungsbeispiel ist /boot normalerweise die Partition /dev/sda1 , mit ext2 als Dateisystem. Es muss während des Bootvorgangs überprüft werden, daher würden wir aufschreiben:

Befehlsauflistung 1.2: Eine Beispielszeile für /boot in /etc/fstab

/dev/sda1   /boot     ext2    defaults        0 2

Einige Benutzer möchten nicht, dass ihre /boot-Partition automatisch gemountet wird, um die Sicherheit des Systems zu erhöhen. In diesem Fall sollen Sie defaults durch noauto ersetzen. Dies bedeutet, dass Sie die Partition jedesmal händisch mounten müssen, wenn Sie sie benutzen möchten.

Fügen Sie die Regeln hinzu, die zu Ihrem Partitionsschema passen und fügen Sie zusätzlich Regeln für Ihr(e) CD-ROM-Laufwerk(e) und natürlich für weitere Partitionen und Laufwerke, wenn Sie diese haben, hinzu.

Benutzen Sie nun das folgende Beispiel, um Ihre /etc/fstab zu erstellen:

Befehlsauflistung 1.3: Ein komplettes Beispiel von /etc/fstab

/dev/sda1   /boot        ext2    defaults,noatime     0 2
/dev/sda2   none         swap    sw                   0 0
/dev/sda3   /            ext4    noatime              0 1

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

Die Option auto veranlasst mount, das Dateisystem automatisch zu erkennen (empfehlenswert für austauschbare Medien, da diese verschiedene Dateisysteme enthalten können, z.B. CD-ROMs). Die Option user erlaubt es Usern das CD-ROM-Laufwerk zu mounten.

Um die Zugriffsgeschwindigkeit zu erhöhen, werden die meisten Benutzer noatime als Mountoption hinzufügen wollen. Dadurch werden beim Lesen Zugriffszeiten nicht auf das Dateisystem geschrieben (in den meisten Fällen brauchen Sie diese nicht).

Überprüfen Sie nochmal jeden Eintrag, da bei Tippfehlern Ihr System möglicherweise nicht bootet. Speichern Sie Ihre /etc/fstab und beenden Sie den Editor.

8.b. Netzwerkkonfiguration

Hostname, Domainname, etc

Jetzt müssen Sie Ihrem Computer einen Namen geben, den so genannten Hostnamen. Das ist eigentlich keine Kunst, aber einige Administratoren haben Schwierigkeiten, einen angemessenen Namen für Ihr System zu finden. Sie sollten jetzt keine großen Gedanken damit verschwenden, da Sie den Namen später noch ändern können. Im folgendem Beispiel nennen wir unser System tux und die Domain homenetwork.

Befehlsauflistung 2.1: Setzen des Hostnamens

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

(Setzen Sie die hostname-Variable auf Ihren Hostnamen)
hostname="tux"

Danach, wenn Sie einen Domainnamen benötigen, setzen Sie ihn in /etc/conf.d/net. Sie brauchen nur einen Domainnamen, wenn Ihr ISP oder Netzwerkadministrator dies so verlangt, oder wenn Sie einen DNS-Server, aber keinen DHCP-Server haben. Sie brauchen sich nicht um DNS oder Domainnamen zu kümmern, wenn Ihr Netzwerk für DHCP eingerichtet ist.

Befehlsauflistung 2.2: Setzen des Domainnamens

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

(Setzen Sie die dns_domain-Variable auf Ihren Domainnamen)
dns_domain_lo="heimnetzwerk"

Notiz: Wenn Sie sich dafür entscheiden, keinen Domainnamen zu setzen, können Sie die "This is hostname.(none)" Nachrichten am Anmeldebildschirm loswerden, indem Sie /etc/issue editieren. Entfernen Sie einfach den String .\O aus dieser Datei.

Wenn Sie eine NIS-Domain haben (wenn Sie nicht wissen, was das ist, haben Sie keine), müssen Sie diese auch definieren:

Befehlsauflistung 2.3: Setzen des NIS-Domainnamens

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

(Setzen Sie die nis_domain-Variable auf Ihren NIS-Domainnamen)
nis_domain_lo="my-nisdomain"

Notiz: Für weitere Informationen wie Sie DNS und NIS konfigurieren können, lesen Sie bitte die mitgelieferten Beispiele in /usr/share/doc/openrc-*/net.example.bz2, welche mit bzless gelesen werden können. Möglicherweise dürfte auch openresolv für Sie interessant sein, um Ihre DNS/NIS-Einstellungen zu verwalten - Sie können es mit emerge installieren.

Konfiguration des Netzwerks

Bevor Sie jetzt denken: "Hey, das habe ich doch schon gemacht!", sollten Sie sich daran erinnern, dass wir am Anfang der Gentoo Installation das Netzwerk nur manuell konfiguriert haben und diese Einstellungen beim nächsten Reboot nicht mehr gültig sind. Deswegen konfigurieren wir jetzt das Netzwerk, so dass es beim Systemstart automatisch eingerichtet wird.

Notiz: Detaillierte Informationen über Netzwerke, inklusive Themen für Fortgeschrittene wie Bonding, Bridging, 802.11Q VLANs oder Wireless-Netzwerke werden im Abschnitt Gentoo Netzwerkkonfiguration erläutert.

Die Netzwerk-Konfiguration wird bei einem Gentoo System unter /etc/conf.d/net abgespeichert. Die Syntax der Datei ist nicht unbedingt intuitiv, wenn Sie so etwas noch nie manuell konfiguriert haben, aber keine Panik, es wird in folgendem Abschnitt genau erklärt. Ein vollständig kommentiertes Beispiel, welches viele verschiedene Konfigurationne behandelt, findet sich in /usr/share/doc/openrc-*/net.example.bz2.

Standardmäßig wird DHCP verwendet. Damit DHCP funktioniert, werden Sie einen DHCP-Client installieren müssen. Dies ist weiter in Installieren von notwendigen Systemprogrammen beschrieben. Vergessen Sie nicht einen DHCP-Client zu installieren.

Wenn Sie Ihre Netzwerkverbindung konfigurieren müssen, entweder weil Sie spezifische DHCP-Optionen benötigen oder DHCP überhaupt nicht verwenden wollen, öffnen Sie /etc/conf.d/net mit dem Editor Ihrer Wahl (in diesem Beispiel benutzen wir nano):

Befehlsauflistung 2.4: Öffnen der Datei /etc/conf.d/net

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

Sie werden folgendes sehen:

Befehlsauflistung 2.5: Standard /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 /usr/share/doc/openrc-*/net.example.bz2 and save
# your configuration in /etc/conf.d/net (this file :]!).

Um Ihre eigene IP-Adresse, Netzmaske und Gateway zu setzen, müssen Sie sowohl config_eth0, als auch routes_eth0 setzen:

Befehlsauflistung 2.6: Manuelle IP-Konfiguration für eth0

config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"

Spezifizieren Sie config_eth0, um DHCP zu verwenden:

Befehlsauflistung 2.7: Automatisch eine IP-Adresse für eth0 erhalten

config_eth0="dhcp"

Lesen Sie bitte /usr/share/doc/openrc-*/net.example.bz2 für eine Liste aller verfügbaren Optionen. Lesen Sie auch die Manpage Ihres DHCP-Clients, wenn Sie besondere DHCP-Optionen setzen müssen.

Wenn Sie mehrere Netzwerkschnittstellen haben, wiederholen Sie die obigen Schritte für config_eth1, config_eth2 und so fort.

Speichern Sie nun die Konfiguration, um fortzufahren.

Netzwerk beim Systemstart aktivieren

Wenn Sie Ihre Netzwerkinterfaces beim Systemstart aktivieren wollen, müssen Sie diese zum Runlevel default hinzufügen.

Befehlsauflistung 2.8: net.eth0 dem Runlevel default hinzufügen

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

Wenn Sie mehrere Netzwerkinterfaces haben, müssen Sie die entsprechenden Init-Skripte net.eth1, net.eth2 etc. anlegen, genau so, wie Sie es eben für net.eth0 getan haben.

Einträge in /etc/hosts

Sie müssen jetzt noch Ihrem System Informationen über Ihr Netzwerk geben. Dazu müssen Sie die Datei /etc/hosts anpassen, damit Hostnamen zu IP-Adressen aufgelöst werden, die nicht von Ihrem Nameserver aufgelöst werden. Sie müssen Ihr System definieren. Möglicherweise möchten Sie auch andere Systeme auf Ihrem Netzwerk definieren, wenn Sie nicht ein eigenes internes DNS-System einrichten möchten.

Befehlsauflistung 2.9: Öffnen von /etc/hosts

# nano -w /etc/hosts

Befehlsauflistung 2.10: Eintragen von Netzwerkinformationen

(Dies definiert das aktuelle System)
127.0.0.1     localhost

(Definiert weitere Systeme auf Ihrem Netzwerk, Sie müssen eine
statische IP haben, um auf diese Weise definiert zu werden.)
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny

Speichern Sie die Datei ab, um fortzufahren.

Falls Sie kein PCMCIA haben, können Sie nun mit den Systeminformationen fortfahren. PCMCIA-Benutzer sollten sich folgenden Abschnitt über PCMCIA durchlesen.

Optional: PCMCIA zum Laufen bekommen

PCMCIA-Benutzer sollten zuerst das Paket pcmciautils installieren.

Befehlsauflistung 2.11: Installation von pcmciautils

# emerge pcmciautils

8.c. Systeminformationen

Root-Passwort

Zuerst setzen wir das root-Passwort:

Befehlsauflistung 3.1: Setzen des root-Passworts

# passwd

Systeminformationen

Gentoo benutzt die Datei /etc/rc.conf, um die Dienste, das Starten und das Herunterfahren Ihres Systems zu konfigurieren. Öffnen Sie /etc/rc.conf und genießen Sie die Vielfalt der Kommentare in dieser Datei.

Befehlsauflistung 3.2: Konfigurieren von Diensten

# nano -w /etc/rc.conf

Wenn Sie fertig sind mit der Bearbeitung, speichern Sie ab und verlassen Sie den Editor.

Gentoo verwendet /etc/conf.d/keymaps, um die Tastaturkonfiguration zu verwalten. Editieren Sie diese Datei, um Ihre Tastatur zu konfigurieren.

Befehlsauflistung 3.3: Öffnen der Datei /etc/conf.d/keymaps

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

Seien Sie vorsichtig mit der keymap-Variablen. Wenn Sie das falsche keymap wählen, erhalten Sie sonderbare Ergebnisse, wenn Sie auf der Tastatur tippen.

Wenn Sie fertig sind mit der Konfiguration von /etc/conf.d/keymaps, speichern Sie diese und schließen Sie den Editor.

Gentoo verwendet /etc/conf.d/hwclock, um die Optionen der Uhr zu setzen. Editieren Sie diese enstprechend Ihren Bedürfnissen.

Befehlsauflistung 3.4: Öffnen der Datei /etc/conf.d/hwclock

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

Wenn Ihre Hardware-Uhr nicht UTC verwendet, dann müssen Sie clock="local" zur Datei hinzufügen. Ansonsten werden Sie einige Abweichungen der Uhr bemerken.

Nachdem Sie die Datei /etc/conf.d/hwclock editiert haben, speichern Sie diese und schließen Sie den Editor.

Locales konfigurieren

Sie werden vermutlich nur ein oder vielleicht zwei Locales auf Ihrem System benötigen. Sie müssen die Locales, die Sie benötigen werden, in /etc/locale.gen spezifizieren.

Befehlsauflistung 3.5: Öffnen von /etc/locale.gen

# nano -w /etc/locale.gen

Die folgenden Locales sind ein Beispiel um Englisch (Vereinigte Staaten) und Deutsch (Deutschland) mit den passendenden Zeichensätzen (wie UTF-8) zu erhalten.

Befehlsauflistung 3.6: Spezifizieren Ihrer Locales

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

Notiz: Sie können Ihre gewünschten Locales aus der Liste von locale -a auswählen.

Warnung: Wir empfehlen Ihnen dringend, mindestens eine UTF-8 Locale zu verwenden, da einige Applikationen diese möglicherweise benötigen.

Der nächste Schritt ist locale-gen auszuführen. Es erstellt alle Locales, die Sie in der /etc/locale.gen Datei spezifiziert haben.

Befehlsauflistung 3.7: Ausführen von locale-gen

# locale-gen

Ist dies geschehen, können Sie nun die systemweiten Locale-Einstellungen in der Datei /etc/env.d/02locale setzen:

Befehlsauflistung 3.8: Setzen der standardmäßigen Locale in /etc/env.d/02locale

LANG="de_DE.UTF-8"
LC_COLLATE="C"

Laden Sie nun die Umgebung neu:

Befehlsauflistung 3.9: Shell-Umgebung neu laden

# env-update && source /etc/profile

Wir haben eine vollständige Anleitung zur deutschen Lokalisierung erstellt, die Ihnen weiter hilft. Sie können zudem unseren ausführlichen UTF-8 Leitfaden für sehr spezifische Informationen zur Aktivierung von UTF-8 auf Ihrem System lesen.

Fahren Sie nun mit der Installation notwendiger System-Tools fort.

9. Installation der benötigten Systemtools

9.a. System-Logger

Einige Tools fehlen im stage3 Archiv, da mehrere Pakete dieselbe Funktionalität mitbringen. Es liegt nun an Ihnen auszuwählen, welche Sie installieren wollen.

Bei dem ersten Tool, bei dem wir die freie Auswahl haben, geht es um das Protokollieren von Systemaktivitäten. Unix und Linux haben eine gewisse Berühmtheit in den Fähigkeiten ihrer Systemprotokolle erlangt -- wenn Sie es wünschen, können Sie alles, was auf Ihrem System passiert protokollieren lassen. Dies erfolgt durch den System-Logger.

Gentoo bietet die Wahl zwischen verschiedenen System-Loggern. Diese sind sysklogd, welches einen bekannten Satz an System-Logger-Daemons anbietet, syslog-ng, ein fortschrittlicher System-Logger und metalog, ein außerordentlich variabel konfigurierbarer System-Logger. Es können weitere verfügbar sein - die Anzahl verfügbarer Pakete erhöht sich täglich.

Wenn Sie sysklogd oder syslog-ng nutzen, möchten Sie vermutlich auch logrotate installieren, da diese beiden Logger keinen Rotationsmechanismus für Log-Dateien unterstützen.

Um den System-Logger Ihrer Wahl zu installieren, genügt ein emerge und das Hinzufügen zum automatischen Start mittels rc-update. Im folgenden Beispiel installieren wir syslog-ng. Natürlich kann dies durch den Namen des gewünschten System-Loggers ersetzt werden:

Befehlsauflistung 1.1: Installation des System-Loggers

# emerge syslog-ng
# rc-update add syslog-ng default

9.b. Optional: Der Cron-Daemon

Als nächstes ist der Cron-Daemon an der Reihe. Obwohl die Installation optional ist, und für Ihr System nicht zwingend erforderlich ist, empfiehlt sich die Installation eines solchen. Aber was ist überhaupt ein Cron-Daemon? Ein Cron-Daemon kann vorgegebene Befehle zu einer bestimmten Uhrzeit ausführen. Dies ist besonders praktisch, wenn bestimmte Routinebefehle regelmäßig ausgeführt werden müssen (z.B. täglich, wöchentlich, monatlich).

Gentoo hat drei verschiedene Cron-Daemons zur Auswahl: dcron, fcron und vixie-cron. Die Installation eines solchen erfolgt ähnlich wie bei der Installation des System-Loggers. Jedoch erfordern dcron und frcon einen zusätzlichen Befehl zur Konfiguration, nämlich crontab /etc/crontab. Sollten Sie an der Auswahl verzweifeln, dann empfehlen wir Ihnen die Verwendung von vixie-cron.

Für netzwerklose Installationen bieten wir nur vixie-cron an. Wenn Sie einen anderen Cron-Daemon möchten können Sie warten und diesen später installieren.

Befehlsauflistung 2.1: Installation eines Cron-Daemons

# emerge vixie-cron
# rc-update add vixie-cron default
(Nur bei der Wahl von dcron oder fcron) # crontab /etc/crontab

9.c. Optional: Dateiindizierung

Wenn Sie die Dateien in Ihrem System indizieren wollen, um Sie schnell mit dem locate Tool aufzufinden, müssen Sie sys-apps/mlocate installieren.

Befehlsauflistung 3.1: mlocate installieren

# emerge mlocate

9.d. Optional: Remote Zugriff

Wenn Sie auf Ihr System nach der Installation von remote zugreifen müssen, vergessen Sie nicht sshd zum Runlevel default hinzuzufügen:

Befehlsauflistung 4.1: Hinzufügen von sshd zum Runlevel default

# rc-update add sshd default

Wenn Sie Zugriff auf eine serielle Konsole benötigen (was im Falle von Remote-Servern möglich sein kann), dann müssen Sie den Abschnitt zur seriellen Konsole in /etc/inittab einkommentieren.

Befehlsauflistung 4.2: Bearbeiten der /etc/inittab

# nano -w /etc/inittab

Der folgende Auszug zeigt den einkommentierten Abschnitt:

Befehlsauflistung 4.3: Einkommentieren serieller Konsolen in inittab

# SERIAL CONSOLES
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100

9.e. Dateisystem-Tools

Je nachdem, welche Dateisysteme Sie verwenden, müssen Sie noch die jeweiligen Utilities (für Überprüfung der Dateisystem-Integrität, Anlegen neuer Dateisysteme etc..) installieren. Bitte beachten Sie, dass Tools für die Verwaltung von ext2-, ext3- und ext4-Dateisystemen (e2fsprogs) bereits als Teil des Systems installiert sind.

Die folgende Tabelle listet alle Tools auf, die für ein bestimmtes Dateisystem benötigt werden:

Dateisystem Tool Installationsbefehl
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

9.f. Netzwerktools

Wenn Sie keine weiteren netzwerkbezogenen Tools (wie ppp oder einen DHCP-Client) benötigen, können Sie mit dem Kapitel Konfiguration des Bootloader fortfahren.

Optional: Installieren eines DHCP-Clients

Wenn Sie möchten, dass Gentoo automatisch eine IP-Adresse für Ihre Netzwerkkarte bezieht, müssen Sie dhcpcd (oder einen anderen DHCP-Client -- siehe Modulares Netzwerk für eine Liste verfügbarer DHCP-Clients) auf Ihren System installieren. Wenn Sie dies nicht tun sind Sie möglichweise nicht in der Lage nach der Installation auf das Internet zugreifen zu können.

Befehlsauflistung 6.1: Installation von dhcpcd

# emerge dhcpcd

Optional: Installieren eines PPPoE-Clients

Wenn Sie ppp benötigen um eine Verbindung mit dem Internet herstellen zu können, werden Sie es installieren müssen.

Befehlsauflistung 6.2: Installation von ppp

# emerge ppp

Nun fahren wir mit dem nächsten Kapitel Konfigurieren des Bootloader fort.

10. Konfiguration des Bootloaders

10.a. Eine Wahl treffen

Einleitung

Nun, da Ihr Kernel konfiguriert und kompiliert ist und die notwendigen Systemkonfigurationsdateien richtig konfiguriert sind, ist es Zeit ein Programm zu installieren, dass Ihren Kernel lädt wenn Sie Ihr System starten. Solch ein Programm nennt man einen Bootloader.

Für AMD64 bietet Gentoo Linux GRUB und LILO.

Bevor Sie jedoch einen der beiden Bootloader installieren, informieren wir Sie darüber, wie der Framebuffer (natürlich nur wenn Sie diesen einrichten wollen) eingerichtet wird. Mit Framebuffer können Sie die Linux-Kommandozeile mit (begrenzten) grafischen Erweiterungen (wie die netten Bootsplash-Bilder, die Gentoo liefert) nutzen.

Optional: Framebuffer

Wenn Sie Ihren Kernel mit Framebufferunterstützung konfiguriert haben (oder die genkernel Standardkonfiguration nutzen), müssen Sie eine video Anweisung zu Ihrer Bootloaderkonfigurationsdatei hinzufügen, wenn sie Framebuffer benötigen.

Zuerst müssen Sie Ihr Framebuffer-Gerät kennen. Sie sollten uvesafb als VESA driver verwendet haben.

Die video Anweisung kontrolliert Framebuffer-Display-Optionen. Es benötigt den Framebuffer-Treiber gefolgt von den Kontrollanweisung die Sie aktivieren möchten. Alle Variablen sind in /usr/src/linux/Documentation/fb/uvesafb.txt gelistet, wir möchten Sie daher nur über die häufigsten informieren:

Option Beschreibung
ywrap Davon ausgehend, dass die Grafik ihren Speicher umbrechen kann (das heißt am Anfang fortfahren, wenn das Ende erreicht wurde)
mtrr:n Einrichten der MTRR-Register. n kann folgendes sein:
0 - deaktiviert
1 - uncachable
2 - write-back
3 - write-combining
4 - write-through
mode Setzen der Auflösung, Farbtiefe und Wiederholungsrate. Zum Beispiel ist 1024x768-32@85 für eine Auflösung von 1024x768, 32-Bit Farbtiefe und eine Wiederholungsrate von 85 Hz.

Das Ergebnis könnte etwas wie video=uvesafb:mtrr:3,ywrap,1024x768-32@85 sein. Schreiben Sie sich diese Einstellung auf, Sie werden sie bald benötigen!

Fahren Sie nun mit der Installation von GRUB oder Lilo fort.

10.b. Standard: Die Benutzung von GRUB

Das Verstehen von GRUBs Terminologie

Der wichtigste Teil beim Verstehen von GRUB ist, sich mit der Art vertraut zu machen, in der GRUB Festplatten und Partitionen benennt. Ihre Linux-Partition /dev/sda1 wird höchstwahrscheinlich (hd0,0) unter GRUB genannt. Beachten Sie die Klammern um das hd0,0, denn diese sind Pflicht.

Festplatten zählen von Null anstatt von "a" und Partitionen starten bei Null anstatt bei Eins. Beachten Sie bitte auch, dass mit den hd-Geräten nur Festplatten gezählt werden, keine ATAPI-IDE Geräte wie CD-ROM-Laufwerke oder -Brenner. Dasselbe Schema wird auch bei SCSI-Laufwerken verwendet. (Normalerweise erhalten sie höhere Nummern als IDE-Laufwerke, außer wenn das BIOS konfiguriert ist von SCSI zu booten.) Wenn Sie dem BIOS angeben von einer anderen Festplatte zu booten (zum Beispiel Primary Slave), ist diese Festplatte für grub hd0.

Vorausgesetzt Sie haben eine Festplatte an /dev/sda und zwei weitere an /dev/sdb und /dev/sdc wird /dev/sdb7 übersetzt in (hd1,6). Es mag schwierig klingen und das ist es in der Tat auch, aber wie wir werden sehen, bietet GRUB einen Tab-Komplettierungsmechanismus an, der hilfreich ist für diejenigen von Ihnen die viele Festplatten und Partitionen haben und sich ein wenig verloren fühlen mit dem Nummerierungssystem von GRUB.

Nachdem man dafür jetzt ein Gefühl erlangt hat, ist es nun Zeit GRUB zu installieren.

Installieren von GRUB

Um GRUB zu installieren, führen Sie ein emerge aus.

Wichtig: Wenn Sie ein nicht-Multilib Profil verwenden sollten Sie emerge grub nicht ausführen, sondern stattdessen grub-static mit emerge installieren. Wenn Sie vorhaben ein nicht-Multilib Profil zu verwenden und IA-32 Emulation in Ihrem Kernel deaktiviert haben, sollten Sie lilo verwenden.

Befehlsauflistung 2.1: Installieren von GRUB

# emerge grub

Obwohl GRUB nun installiert ist, müssen Sie trotzdem noch eine Konfigurationsdatei dafür schreiben und GRUB im MBR platzieren, so dass GRUB automatisch Ihren neu erstellten Kernel bootet. Erstellen Sie /boot/grub/grub.conf mit nano (oder wenn gewünscht einem anderen Editor):

Befehlsauflistung 2.2: Erstellen von /boot/grub/grub.conf

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

Nun wollen wir eine grub.conf schreiben. Stellen Sie sicher, dass Sie den Dateinamen Ihres Kernel-Images und, falls zutreffend, den Dateinamen Ihrer initrd benutzen.

Notiz: Grub weist Gerätenamen auf Grundlage des BIOS zu. Wenn Sie Ihre BIOS- Einstellungen ändern, ändern sich auch die Buchstaben und Ziffern Ihrer Geräte. Wenn Sie zum Beispiel die Bootreihenfolge Ihrer Geräte ändern, müssen Sie möglicherweise auch Ihre Grub-Konfiguration ändern.

Notiz: Wenn Ihr Root-Dateisystem JFS ist, müssen Sie "ro" zu dem Kernelaufruf hinzufügen, da JFS sein Protokolldatei liest, bevor es ein read-write mounten zulässt.

Befehlsauflistung 2.3: Beispiel: grub.conf

# Welcher Eintrag standardmäßig gebootet werden soll. 0 ist der Erste, 1 ist der Zweite usw.
default 0
# Wie viele Sekunden gewartet werden soll, bevor der Standardeintrag gebootet wird.
timeout 30
# Eine nettes, fettes Hintergrundbild um die ganze Sache ein wenig zu würzen :)
# Auskommentieren, wenn Sie keine Grafikkarte installiert haben.
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 3.4.9
# Partition in der das Kernel-Image (oder das Betriebssystem) vorhanden ist
root (hd0,0)
kernel /boot/kernel-3.4.9-gentoo root=/dev/sda3

title Gentoo Linux 3.4.9 (Rescue)
# Partition in der das Kernel-Image (oder das Betriebssystem) vorhanden ist
root (hd0,0)
kernel /boot/kernel-3.4.9-gentoo root=/dev/sda3 init=/bin/bb

# Die nächsten vier Zeilen werden nur benötigt wenn Sie einen Dualboot mit einem Windows System einrichten wollen.
# Hier in diesem Fall liegt Windows auf /dev/sda6.
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Falls Sie sich beim Bauen des Linux-Kernels dazu entschieden haben zum Booten ein initramfs zu verwenden, dann müssen Sie die Konfiguration verändern, indem Sie auf diese initramfs-Datei verweisen und der initramfs mitteilen, wo sich Ihr reales Root-Device befindet:

Befehlsauflistung 2.4: GRUB-Auszug für initramfs-verwendende Kernel

title Gentoo Linux 3.4.9
root (hd0,0)
kernel /boot/3.4.9 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-amd64-3.4.9-gentoo

Wenn Sie ein anderes Partitionierungschema verwenden und/oder Kernel-Image, passen Sie Ihre Konfiguration entsprechend an. Stellen Sie jedoch sicher, dass alles was einem GRUB-Device folgt (wie z.B. (hd0,0)) relativ zum Mountpoint ist, nicht dem Root. Mit anderen Worten, (hd0,0)/grub/splash.xpm.gz ist in Wirklichkeit /boot/grub/splash.xpm.gz denn (hd0,0) ist /boot.

Außerdem wird, wenn Sie ein anderes Partitionsschema verwendet haben und /boot nicht auf eine separate Partition gelegt haben, das /boot Präfix wirklich benötigt. Wenn Sie unserem vorgeschlagenen Partitionierungsplan gefolgt sind, wird das /boot Präfix nicht benötigt, aber ein boot Symlink sorgt dafür, dass es funktioniert. Kurz gesagt, das obige Beispiel sollte funktionieren, egal ob Sie eine separate /boot Partition haben oder nicht.

Wenn Sie noch zusätzliche Optionen an den Kernel übergeben müssen, fügen Sie diese einfach zum Ende des Kernelbefehls hinzu. Eine Option übermitteln wir schon (root=/dev/sda3 oder real_root=/dev/sda3), aber Sie können auch weitere übermittlen, wie die vorhin erwähnte video Anweisung für Framebuffer.

Wenn Ihre Bootloader-Konfigurationsdatei den Parameter real_root enthält, verwenden Sie den Parameter real_rootflags, um Einhängeoptionen des Root-Dateisystems zu setzen.

Wenn Sie einen 2.6.7 Kernel oder aktueller benutzen und Ihre Festplatte gejumpert haben, da Ihr BIOS nicht mit großen Festplatten umgehen kann, müssen Sie sda=stroke anhängen.

genkernel-Benutzer sollten wissen, dass Ihr Kernel die selben Bootoptionen benutzt wie der auf der Installations-CD. Zum Beispiel, wenn Sie SCSI-Geräte haben, sollten Sie doscsi als Kerneloption hinzufügen.

Speichern Sie nun die grub.conf Datei und verlassen Sie den Editor. Sie müssen GRUB noch in den MBR (Master Boot Record) schreiben, so dass GRUB automatisch beim Systemstart ausgeführt wird.

Die GRUB Entwickler empfehlen die Nutzung von grub-install. Wenn grub-install fehlschlägt haben Sie immer noch die Option GRUB händisch zu installieren.

Fahren Sie nun mit Standard: Installieren von GRUB mit grub-install oder Alternativ: GRUB händisch installieren fort.

Standard: Installieren von GRUB mit grub-install

Um GRUB zu installieren führen sie den grub-install Befehl aus. grub-install wird jedoch nicht direkt funktionieren, da wir uns innerhalb einer chroot-Umgebung befinden. Wir müssen /etc/mtab erstellen, welche alle gemounteten Dateisysteme auflistet. Glücklicherweise gibt es eine einfach Methode dafür: Kopieren Sie einfach /proc/mounts nach /etc/mtab; ausgenommen der rootfs Zeile, wenn Sie keine separate Boot-Partition erstellt haben. Der folgende Befehl funktioniert in beiden Fällen:

Befehlsauflistung 2.5: /etc/mtab erstellen

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

Jetzt können wir GRUB durch grub-install installieren:

Befehlsauflistung 2.6: grub-install ausführen

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

Wenn Sie weitere Fragen GRUB betreffend haben, konsultieren Sie die GRUB FAQ oder das GRUB Handbuch.

Fahren Sie nun mit Neustart des Systems fort.

Alternativ: GRUB manuell installieren

Um mit der Konfiguration von GRUB zu beginnen, tippen Sie grub. Ihnen wird die grub> GRUB-Kommdandozeile präsentiert. Nun müssen Sie die richtigen Befehle eintippen um den GRUB Boot Record auf Ihrer Festplatte zu installieren.

Befehlsauflistung 2.7: Starten der GRUB-Shell

# grub --no-floppy

Notiz: Wenn das System kein Diskettenlaufwerk hat, fügen Sie die --no-floppy Option an das obige Kommando an, damit grub nicht nach nicht-existierenden Diskettenlaufwerken sucht.

In der Beispielskonfiguration wollen wir GRUB so installieren, dass es alle Informationen von der Boot-Partition /dev/sda1 liest und den GRUB Boot-Record auf dem MBR (Master Boot Record) der Festplatte installiert, damit das Erste was wir sehen, wenn wir den Computer einschalten die GRUB Eingabeaufforderung ist. Natürlich müssen Sie die Befehle entsprechend ändern, wenn Sie von der Beispielkonfiguration während der Installation abgewichen sind.

Der Tab-Komplettierungsmechanismus von GRUB kann innerhalb von GRUB benutzt werden. Zum Beispiel, wenn Sie "root (" eintippen, gefolgt von einem TAB, wird Ihnen eine Liste von Geräten gegeben (solche wie hd0). Wenn Sie "root (hd0," eintippen, gefolgt von einem TAB, wird Ihnen eine Liste von verfügbaren Partitionen angezeigt, unter denen Sie auswählen können (solche wie hd0,0).

Durch Benutzung der Tab-Komplettierung sollte das Einrichten von GRUB nicht allzu schwer sein. Also weiter in der Konfiguration von GRUB!

Befehlsauflistung 2.8: Installieren von GRUB im MBR

grub> root (hd0,0)    (Angabe wo sich Ihre /boot Partition befindet)
grub> setup (hd0)     (Installiere GRUB im MBR)
grub> quit            (Verlasse die GRUB Shell)

Notiz: Wenn Sie GRUB lieber in einer bestimmten Partition anstatt des MBR installieren wollen, müssen Sie das setup so verändern, dass es auf die richtige Partition verweist. Zum Beispiel, wenn Sie GRUB in /dev/sda3 installieren wollen, dann wird der Befehl zu setup (hd0,2). Diese Option wird in der Regel nur von wenigen Benutzern genutzt.

Wenn Sie weitere Fragen GRUB betreffend haben, konsultieren Sie die GRUB FAQ, das GRUB Wiki oder lesen Sie info grub in Ihrem Terminal.

Fahren Sie nun mit Neustart des Systems fort.

10.c. Alternativ: Benutzung von LILO

Installieren von LILO

LILO, der LInuxLOader, ist das bewährte und wahre Arbeitstier der Linux Bootloader. Jedoch hat es eine Fähigkeiten nicht die GRUB hat (was auch der Grund dafür ist, dass GRUB momentan an Popularität gewinnt). Der Grund warum LILO noch benutzt wird ist, dass GRUB auf einigen System nicht funktioniert und LILO es tut. Natürlich gibt es auch den Grund, dass einige Leute mit LILO bereits vertraut sind und es daher behalten wollen. In jedem Fall: Gentoo unterstützt beide und anscheinend haben Sie sich für LILO entschieden.

Installieren von LILO ist ein Klacks, benutzen Sie einfach emerge.

Befehlsauflistung 3.1: Installieren von LILO

# emerge lilo

Konfigurieren von LILO

Um LILO zu konfigurieren, müssen Sie /etc/lilo.conf erstellen. Starten Sie Ihren Lieblingseditor (in diesem Handbuch benutzen wir nano) und erstellen die Datei.

Befehlsauflistung 3.2: Erstellen von /etc/lilo.conf

# nano -w /etc/lilo.conf

Vor einigen Abschnitten baten wir Sie, sich den Namen des Kernel-Images zu merken, welches Sie erstellt haben. In der folgenden lilo.conf Beispielsdatei nehmen wir an, dass der Imagename kernel-2.6.11-gentoo-r3 ist. Wir benutzen zudem das Beispielpartitionsschema in diesem Beispiel.

Stellen Sie sicher, dass Sie den Dateinamen Ihres Kernel-Images und, falls zutreffend, den Dateinamen Ihrer initrd verwenden.

Notiz: Wenn Ihr Root-Dateisystem JFS ist, müssen Sie "ro" zu dem Kernelaufruf hinzufügen, da JFS sein Logfile liest, bevor es ein read-write Mounten zulässt.

Befehlsauflistung 3.3: Beispiel /etc/lilo.conf

boot=/dev/sda             # Installieren von LILO im MBR
prompt                    # Gib dem Benutzer die Möglichkeit eine andere Sektion auszuwählen
timeout=50                # Warte 5 (fünf) Sekunden bevor die Standardsektion gebootet wird
default=gentoo            # Wenn das Timeout verstrichen ist, dann boote die "gentoo" Sektion

image=/boot/kernel-3.4.9-gentoo
  label=gentoo            # Der Name den wir der Sektion geben
  read-only               # Starte mit einem nur-lesen Root. Nicht ändern!
  root=/dev/sda3          # Ort des Root-Dateisystems

image=/boot/kernel-3.4.9-gentoo
  label=gentoo.rescue     # Der Name den wir der Sektion geben
  read-only               # Starte mit einem nur-lesen Root. Nicht ändern!
  root=/dev/sda3          # Ort des Root-Dateisystems
  append="init=/bin/bb"   # Starten der statischen Gentoo-Rescue-Shell

# Die nächsten zwei Zeilen werden nur benötigt, wenn Sie Dualboot mit einem Windowssystem einrichten wollen.
# In diesem Fall liegt Windows auf /dev/sda6.
other=/dev/sda6
  label=windows

Notiz: Wenn Sie ein anderes Partitionierungsschema verwenden, passen Sie die Konfiguration entsprechend an.

Falls Sie sich beim Bauen des Linux-Kernels dazu entschieden haben zum Booten ein initramfs zu verwenden, dann müssen Sie die Konfiguration verändern, indem Sie auf diese initramfs-Datei verweisen und der initramfs mitteilen, wo sich Ihr reales Root-Device befindet:

Befehlsauflistung 3.4: LILO-Auszuag für initramfs-verwendende Kernel

image=/boot/kernel-3.4.9-gentoo
  label=gentoo
  read-only
  append="real_root=/dev/sda3"
  initrd=/boot/initramfs-genkernel-amd64-3.4.9-gentoo

Wenn Sie weitere Optionen an den Kernel übermitteln müssen, fügen Sie eine append Anweisung zu dem Abschnitt hinzu. Als Beispiel fügen wir die video Anweisung hinzu um Framebuffer-Unterstützung zu aktivieren:

Befehlsauflistung 3.5: Benutzung von append um Kerneloptionen hinzuzufügen

image=/boot/kernel-3.4.9-gentoo
  label=gentoo
  read-only
  root=/dev/sda3
  append="video=uvesafb:mtrr,ywrap,1024x768-32@85"

Wenn Sie einen 2.6.7, oder aktuelleren, Kernel benutzen und Ihre Festplatte gejumpert haben, da Ihr BIOS nicht mit großen Festplatten umgehen kann, müssen Sie sda=stroke anhängen. Ersetzen Sie sda durch das Gerät welches diese Option benötigt.

Genkernel-Benutzer sollten wissen, dass Ihr Kernel dieselben Bootoptionen benutzt wie der auf der Installations-CD. Zum Beispiel, wenn Sie SCSI Geräte haben, sollten Sie doscsi als Kerneloption hinzufügen

Speichern Sie nun die Datei und verlassen Sie den Editor. Zum Schluss müssen Sie /sbin/lilo ausführen, damit LILO die /etc/lilo.conf auf Ihr System anwenden kann (also sich selbst auf der Platte installiert). Behalten Sie im Hinterkopf, dass Sie /sbin/lilo nach jeder Installation eines neuen Kernel oder Änderung des Menü ausführen müssen.

Befehlsauflistung 3.6: Fertigstellen der LILO-Installation

# /sbin/lilo

Wenn Sie weitere Fragen bezüglich Lilo haben, lesen Sie bitte dessen Wikipedia-Seite.

Fahren Sie nun mit Neustart des Systems fort.

10.d. Neustart des Systems

Verlassen Sie die chroot-Umgebung und unmounten Sie alle gemounteten Partitionen. Danach tippen Sie den magischen Befehl ein, auf das Sie solange gewartet haben: reboot.

Befehlsauflistung 4.1: Ausbinden aller Partitionen und Neustart

>
# exit
cdimage ~# cd
cdimage ~# umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}
cdimage ~# reboot

Vergessen Sie nicht die bootbare CD aus dem Laufwerk zu nehmen, sonst wird diese anstatt Ihres neuen Gentoo Systems gestartet.

Nachdem Sie in die neue Gentoo Installation gebootet haben schließen Sie die Installation mit Abschließen der Gentoo Installation ab.

11. Abschließen Ihrer Gentoo Installation

11.a. Benutzerverwaltung

Hinzufügen eines Benutzers für den täglichen Gebrauch

Arbeiten als root in einem Unix/Linux System ist gefährlich und sollte, wenn immer möglich, vermieden werden. Wir empfehlen daher nachdrücklich das Einrichten eines Benutzers für die täglichen Aufgaben.

Die Gruppen denen ein Benutzer angehört definieren, welche Aktivitäten der User ausführen kann. Die folgende Tabelle listet die wichtigsten Gruppen, die Sie vermutlich benutzen wollen:

Gruppe Beschreibung
audio Benutzer kann Audiogeräte benutzen
cdrom Benutzer kann optische Laufwerke direkt benutzen
floppy Benutzer kann Diskettenlaufwerke direkt benutzen
games Benutzer darf Spiele ausführen
portage Benutzer kann emerge --pretend verwenden
usb Benutzer darf USB Geräte benutzen
video Benutzer darf Geräte zur Videoaufnahme benutzen und Hardwarebeschleunigung nutzen
wheel Benutzer darf su benutzen

In unserem Beispiel erstellen wir einen Benutzer john, welcher Mitglied der wheel Gruppe, der users Gruppe, sowie der audio Gruppe ist. Loggen Sie sich zunächst als root ein (nur root kann Benutzer erstellen) und führen useradd aus:

Befehlsauflistung 1.1: Hinzufügen eines Benutzers für den täglichen Gebrauch

Login: root
Password: (Ihr root Passwort)

# useradd -m -G users,wheel,audio -s /bin/bash john
# passwd john
Password: (Hier das Passwort für john eintragen)
Re-enter password: (Das Passwort zur Kontrolle noch einmal eingeben)

Sollte dieser Benutzer eine bestimmte Aufgabe als root durchführen, kann er den Befehl su - verwenden, um temporär Rechte als root zu erhalten. Alternativ kann das sudo Paket verwendet werden, welches mit richtiger Konfiguration sehr sicher ist.

11.b. Aufräumen der Festplatte

Entfernen der Tarballs

Nun da Sie die Gentoo-Installation abgeschlossen und neu gestartet haben, können Sie, sofern alles funktioniert, den heruntergeladenen stage3-Tarball von Ihrer Festplatte entfernen. Denken Sie daran, dass diese Dateien in Ihr / Verzeichnis heruntergeladen wurden.

Befehlsauflistung 2.1: Entfernen des stage3-Tarballs

# rm /stage3-*.tar.bz2*

12. Wie geht es weiter?

12.a. Dokumentation

Gratulation! Sie haben jetzt ein funktionierendes Gentoo System. Aber wie geht es nun weiter? Welche Möglichkeiten bieten sich? Gentoo bietet seinen Nutzern viele Optionen und daher auch viele dokumentierte (und weniger gut dokumentierte) Eigenschaften.

Sie sollten definitiv einen Blick in den nächsten Teil des Gentoo Handbuchs, Arbeiten mit Gentoo, werfen. Dieser erklärt, wie Sie Ihre Software aktuell halten und weitere Software installieren können, was USE Flags sind, wie das Init-System von Gentoo funktioniert, etc.

Zur Optimierung Ihres Systems für einen Endbenutzer oder wenn Sie wissen wollen, wie ein Desktop-System eingerichtet wird, sollten die sehr ausführlichen Gentoo Desktop Dokumentationsressourcen weiterhelfen. Weiterhin möchten Sie vielleicht unsere Anleitung zur Lokalisierung betrachten um sich Ihr System angenehmer einzurichten.

Wir haben auch ein Gentoo Sicherheitshandbuch, welches Sie bei Gelegenheit unbedingt lesen sollten.

Für eine komplette Liste aller für Gentoo Linux erhältlichen Dokumentationen verweisen wir auf die Dokumentationsübersicht.

Schließlich haben wir noch ein offizielles Gentoo Wiki, in dem sich zusätzliche, von der Community bereitgestellte Dokumentation findet.

12.b. Gentoo Online

Sie sind natürlich in den Gentoo Foren oder in einem der vielen Gentoo IRC Kanälen jederzeit willkommen.

Auch haben wir verschiedene Mailinglisten die allen Benutzern offen stehen. Weitere Informationen hierzu befinden sich auf der Seite.

Wir halten jetzt unseren Mund und lassen Sie die Installation von Gentoo Linux genießen. :)

B. Arbeiten mit Gentoo

1. Eine Portage Einführung

1.a. Willkommen zu Portage

Portage ist vermutlich Gentoos bemerkenswerteste Innovation in Sachen Software Management. Mit seiner großen Flexibilität und enormen Menge an Optionen wird es vielfach als bestes Software Management Tool für Linux gesehen.

Portage ist vollständig in Python und Bash geschrieben und somit für seine Benutzer vollständig sichtbar, da dieses beides Skriptsprachen sind.

Die meisten Benutzer werden Portage durch das emerge Programm benutzen. Dieses Kapitel soll nicht die Informationen aus der emerge Manpage duplizieren, für eine vollständige Auflistung aller emerge Optionen konsultieren Sie die Manpage:

Befehlsauflistung 1.1: Lesen der emerge Manpage

$ man emerge

1.b. Der Portage-Tree

Ebuilds

Wenn wir über Pakete reden, meinen wir oft Programme, die für Gentoo-Benutzer durch den Portage-Tree verfügbar sind. Der Portage-Tree ist eine Sammlung von Ebuilds -- Dateien, die alle Informationen enthalten, die Portage benötigt, um Anwendungen zu betreuen (installieren, suchen, abfragen, ...). Diese Ebuilds liegen standardmäßig in /usr/portage.

Wann immer Sie Portage bitten, eine Aktion betreffend irgendwelcher Anwendungen durchzuführen, wird es die Ebuilds auf Ihrem System als Basis benutzen. Es ist daher sehr wichtig, dass Sie die Ebuilds auf Ihrem System regelmäßig aktualisieren, so dass Portage über neue Anwendungen, Sicherheitsaktualisierungen usw. informiert ist.

Aktualisieren des Portage-Tree

Der Portage-Tree wird für gewöhnlich mit rsync aktualisiert, ein schnelles und inkrementelles Dateiübertragungsprogramm. Das Aktualisieren ist ziemlich einfach, da das emerge Kommando ein Frontend für rsync beinhaltet:

Befehlsauflistung 2.1: Aktualisieren des Portage-Tree

# emerge --sync

Wenn Sie aufgrund von Restriktionen einer Firewall das rsync-Protokoll nicht benutzen können, können Sie immer noch unsere täglich aktualisierten Portage-Snapshots benutzen. Das emerge-webrsync Tool lädt diesen automatisch und installiert den aktuellsten Snapshot in Ihrem System:

Befehlsauflistung 2.2: Running emerge-webrsync

# emerge-webrsync

Ein weiterer Vorteil von emerge-webrsync ist, dass es erlaubt, nur Portage-Tree-Schnappschüsse herunterzuladen, die mit dem Gentoo-Release-Engineering-GPG-Schlüssel signiert sind. Weitere Informationen dazu finden Sie im Abschnitt Portage Features unter Laden validierter Portage-Tree-Schnappschüsse.

1.c. Software installieren und aktuell halten

Nach Software suchen

Um den Portage-Tree nach Anwendungen zu durchsuchen können Sie die in emerge eingebauten Suchfunktionen nutzen. Standardmäßig liefert emerge --search Paketnamen, die mit dem Suchbegriff teilweise oder vollständig übereinstimmen.

Um zum Beispiel nach allen Paketen zu suchen, in deren Name "pdf" vorkommt:

Befehlsauflistung 3.1: Suche nach Paketen mit pdf im Namen

$ emerge --search pdf

Wenn Sie ebenfalls durch die Beschreibungen suchen möchten, können Sie die --searchdesc (oder -S) Option nutzen:

Befehlsauflistung 3.2: Suche nach Paketen im Zusammenhang mit pdf

$ emerge --searchdesc pdf

Wenn Sie einen Blick auf die Ausgabe werfen werden Sie feststellen, dass Ihnen diese zahlreiche Informationen gibt. Die Felder sind klar beschriftet, so dass wir dies nicht näher erläutern wollen.

Befehlsauflistung 3.3: Beispiel Ausgabe von 'emerge --search'

*  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 installieren

Nachdem Sie eine Anwendung gefunden haben, die Sie installieren möchten, können Sie dies mit emerge ganz einfach durchführen, zum Beispiel für gnumeric:

Befehlsauflistung 3.4: Installation von gnumeric

# emerge gnumeric

Da viele Anwendungen untereinander Abhängigkeiten haben, kann jeder Versuch ein bestimmtes Paket zu installieren in der Installation von verschiedenen Abhängigkeiten resultieren. Aber keine Angst, Portage kümmert sich ebenfalls um diese Abhängigkeiten. Wenn Sie herausfinden wollen, welche Pakete Portage als Abhängigkeiten mitinstallieren würde benutzen Sie die --pretend Option. Zum Beispiel:

Befehlsauflistung 3.5: Installation von gnumeric simulieren

# emerge --pretend gnumeric

Wenn Sie Portage anweisen ein Paket zu installieren werden alle notwendigen Quellen (sofern notwendig) aus dem Internet heruntergeladen und standardmäßig in /usr/portage/distfiles abgelegt. Anschließend werden die Quellen entpackt, kompiliert und das Paket installiert. Wenn Sie Portage anweisen möchten zwar die Quellen herunterzuladen, das Paket aber nicht zu kompilieren und installieren hängen Sie die --fetchonly Option an das emerge Kommando an:

Befehlsauflistung 3.6: Herunterladen der Quellen für gnumeric

# emerge --fetchonly gnumeric

Auffinden von Dokumentationen zu installierten Pakete

Viele Pakete liefern Ihre eigene Dokumentation. Manchmal bestimmt das doc USE-Flag ob die Dokumentation des Paketes installiert werden soll oder nicht. Sie können die Existenz eines doc USE-Flag mit dem emerge -vp <Paketname> Befehl überprüfen

Befehlsauflistung 3.7: Die Existenz eines doc USE-Flag überprüfen

(alsa-lib ist natürlich nur ein Beispiel)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.14_rc1  -debug +doc 698 kB

Die beste Art das USE-Flag doc zu aktivieren ist für jedes Paket einzeln mit der Hilfe von /etc/portage/package.use. So werden Sie nur Dokumentation für Pakete erhalten bei denen Sie daran interessiert sind. Global diese Variable zu aktivieren ist bekannt dafür Probleme durch zirkuläre Abhängigkeiten zu verursachen. Das Kapitel USE-Flags bespricht diese Aspekte in größerem Detail.

Sowie das Paket installiert ist findet sich die Dokumentation generell in einem Unterverzeichnis mit dem Paketnamen unter dem Verzeichnis /usr/share/doc. Mit equery Tool können Sie auch alle installierten Dateien auflisten, es ist Teil des app-portage/gentoolkit Pakets.

Befehlsauflistung 3.8: Auffinden einer Paketdokumentation

# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
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

(Alternativ, können Sie equery verwenden um interessante Dateien zu finden:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
(Ausgabe verkürzt)

Software deinstallieren

Um Anwendungen aus Ihrem System zu entfernen benutzen Sie emerge --unmerge. Dies weist Portage an, alle Dateien die zu diesem Paket gehören (mit der Ausnahme von Konfigurationsdateien, die Sie nach der Installation geändert haben) zu entfernen. Das Beibehalten der Konfigurationsdateien ermöglicht Ihnen die eventuelle Weiterarbeit mit diesem Paket zu einem späteren Zeitpunkt.

Jedoch, eine ausdrückliche Warnung: Portage wird nicht kontrollieren, ob ein Paket, welches Sie deinstallieren möchten, noch Abhängigkeit eines anderen ist. Sie werden jedoch beim Versuch ein wichtiges Paket zu entfernen gewarnt, wenn es dazu führen würde, dass Ihr System danach nicht länger funktionieren würde.

Befehlsauflistung 3.9: Entfernung von gnumeric aus dem System

# emerge --unmerge gnumeric

Wenn Sie ein Paket deinstalliert haben, so sind die Abhängigkeiten dieses speziellen Paketes weiterhin installiert. Um Portage anzuweisen nach Paketen zu suchen, die keinerlei Abhängigkeit sind und nun entfernt werden können, nutzen Sie von emerge die --depclean Funktionalität. Wir werden dies später ausführlicher behandeln.

Aktualisieren Ihres Systems

Um Ihr System auf dem Laufenden zu halten (von Sicherheitsaktualisierungen gar nicht gesprochen) müssen Sie Ihr System regelmäßig aktualisieren. Da Portage nur die Ebuilds in Ihrem lokalen Portage-Tree kennt, müssen Sie zunächst den Portage-Tree aktualisieren. Wenn Sie dies getan haben, können Sie das System mittels emerge --update world aktualisieren. Im folgenden Beispiel verwenden wir auch die --ask Option, wodurch Portage eine Liste der Pakete, die es aktualisieren will aufzeigt und fragt ob Sie fortfahren wollen:

Befehlsauflistung 3.10: Aktualisierung des Systems

# emerge --update --ask world

Portage wird nun nach neueren Versionen von Anwendungen suchen, die Sie installiert haben. Es werden jedoch nur Versionen von Anwendungen überprüft, die Sie explizit installiert haben (die Anwendungen aufgelistet in /var/lib/portage/world); Abhängigkeiten werden nicht ausführlich geprüft. Wenn Sie die Abhängigkeiten dieser Pakete ebenfalls aktualisieren möchten, fügen sie das --deep Argument hinzu:

Befehlsauflistung 3.11: Aktualisierung Ihres Systems inkl. Abhängigkeiten

# emerge --update --deep world

Dies betrifft jedoch nicht alle Pakete: Einige Pakete auf Ihrem System werden während des Kompilierungsprozesses von Paketen benötigt, aber sobald diese Pakete installiert sind, werden diese Abhängigkeiten nicht mehr benötigt. Portage nennt diese Build-Abhängigkeiten. Um auch diese in einem Aktualisierungs-Zyklus einzuschließen, fügen Sie --with-bdeps=y hinzu:

Befehlsauflistung 3.12: Aktualisierung Ihres gesamten Systems

# emerge --update --deep --with-bdeps=y world

Da auch Sicherheitsupdates in Paketen vorkommen, die Sie nicht explizit installiert haben (die aber als Abhängigkeiten anderer Programme auch mitinstalliert wurden), empfiehlt es sich diesen Befehl ab und zu auszuführen.

Wenn Sie zuvor ein USE-Flag geändert haben möchten Sie vermutlich --newuse hinzufügen. Portage wird nun feststellen, ob die Änderung eine Installation von weiteren Paketen erfordert oder eine Neuinstallation der existierenden hinreichend ist:

Befehlsauflistung 3.13: Durchführen einer vollen Aktualisierung

# emerge --update --deep --with-bdeps=y --newuse world

Metapakete

Einige Pakete im Portage-Tree haben keinen realen Inhalt, sondern dienen als Sammlung von Paketen. Zum Beispiel wird das Paket kde-meta eine komplette KDE-Umgebung auf Ihrem System installieren, indem es sämtliche Komponenten eines KDE-Desktops als Abhängigkeiten einbezieht.

Wenn Sie jemals ein solches Paket entfernen wollen, wird Ihnen emerge --unmerge nicht viel weiterhelfen, da dies keinerlei Einfluss auf die installierten Abhängigkeiten hat.

Portage hat die Funktionalität um verwaiste Abhängigkeiten zu entfernen, da die Verfügbarkeit von Anwendungen und Abhängigkeiten dynamisch aufgelöst wird müssen Sie zunächst Ihr System vollständig aktualisieren, inklusive der Änderungen die Sie durch Änderungen an USE-Flags herbeigeführt haben. Im Anschluss daran können Sie emerge --depclean ausführen, um die verwaisten Abhängigkeiten zu entfernen. Wenn dies geschehen ist müssen Sie die Anwendungen die dynamisch auf die nun deinstallierten Anwendungen gelinkt sind neu kompilieren.

All dies wird durch die folgenden 3 Kommandos erledigt:

Befehlsauflistung 3.14: Entfernen von verwaisten Paketen

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

revdep-rebuild ist im gentoolkit Paket enthalten, vergessen Sie nicht, es zuvor zu installieren:

Befehlsauflistung 3.15: Installieren des gentoolkit Paket

# emerge gentoolkit

1.d. Lizenzen

Seit Portage-Version 2.1.7 können Sie eine Softwareinstallation basierend auf der Lizenz akzeptieren oder ablehnen. Alle Pakete im Baum enthalten einen Eintrag LICENSE in ihren Ebuilds. emerge --search paketname verrät Ihnen die Lizenz eines Pakets.

Standardmäßig erlaubt Portage alle Lizenzen außer Endbenutzer-Lizenzvereinbarungen (EULAs), die das Lesen und Akzeptieren einer Akzeptanzerklärung erfordern.

Die Variable, die die erlaubten Lizenzen kontrolliert, heißt ACCEPT_LICENSE und kann in /etc/portage/make.conf gesetzt werden:

Befehlsauflistung 4.1: Standardmäßige ACCEPT_LICENSE in /etc/portage/make.conf

ACCEPT_LICENSE="* -@EULA"

Mit dieser Konfiguration werden keine Pakete installiert, die während der Installation eine Interaktion, der EULA zuzustimmen, erfordern. Pakete ohne eine EULA werden installiert.

Sie können ACCEPT_LICENSE global in /etc/portage/make.conf oder pro Paket in /etc/portage/package.license setzen.

Wenn Sie beispielsweise die Lizenz truecrypt-2.7 für app-crypt/truecrypt erlauben wollen, fügen Sie Folgendes zur /etc/portage/package.license hinzu:

Befehlsauflistung 4.2: Angeben einer Truecrypt-Lizenz in package.license

app-crypt/truecrypt truecrypt-2.7

Dies erlaubt die Installation von Truecrypt-Versionen, die die truecrypt-2.7 Lizenz haben, hingegen aber keine Versionen, die truecrypt-2.8 haben.

Wichtig: Lizenzen werden in /usr/portage/licenses gespeichert und Lizenzgruppen finden sich in /usr/portage/profiles/license_groups. Der erste Eintrag jeder Zeile in Großbuchstaben ist der Name der Lizenzgruppe und jeder folgende Eintrag ist eine einzelne Lizenz.

Lizenzgruppen, die in ACCEPT_LICENSE definiert werden, haben ein vorangestelltes @ Zeichen. Es folgt ein Beispiel eines Systems, das global die GPL-kompatible Lizenzgruppe erlaut, sowie einige weitere Gruppen und einzelne Lizenzen:

Befehlsauflistung 4.3: ACCEPT_LICENSE in /etc/portage/make.conf

ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"

Wenn Sie nur freie Software und Dokumentation auf Ihrem System haben wollen, können Sie die folgende Einstellung verwenden:

Befehlsauflistung 4.4: Nur freie Lizenzen verwenden

ACCEPT_LICENSE="-* @FREE"

Unter "frei" ist in diesem Zusammenhang die Definition der FSF und der OSI zu verstehen. Jegliche Pakete, die diesen Anforderungen nicht gerecht werden, werden nicht auf Ihrem System installiert.

1.e. Wenn Portage sich beschwert ...

Über SLOTs, Virtuals, Zweige, Architekturen und Profile

Wie bereits zuvor erwähnt bietet Portage extrem viele Möglichkeiten und unterstützt zahlreiche Features, die in anderen Softwaremanagement-Tools fehlen. Um dies zu verstehen erläutern wir einige Aspekte von Portage, ohne jedoch ganz ins Detail zu gehen.

Mit Portage können mehrere Versionen eines Pakets auf dem System koexistieren. Während andere Distributionen in diesen Fällen dazu tendieren Teile der Versionsnummer mit in den Paketnamen aufzunehmen, (wie freetype und freetype2) beherrscht Portage eine Technik namens SLOTs. Eine Ebuildversion deklariert dabei ein bestimmtes SLOT. Ebuilds eines Pakets mit unterschiedlichen SLOTs können gleichzeitig auf einem System installiert sein. Zum Beispiel hat das freetype Paket Ebuilds mit SLOT="1" und SLOT="2".

Es gibt weiterhin einige Pakete, welche die gleiche Funktionalität anbieten, aber anders implementiert sind. Zum Beispiel sind metalogd, sysklogd und syslog-ng alle System-Protokollierdienste. Anwendungen die einen System-Protokollierdienst benötigen, können zum Beispiel nicht auf metalogd bestehen, da die anderen System-Protokollierdienste auch eine gute Wahl sind. Portage erlaubt daher virtuals: Jeder System-Logger ist als "exklusive" Abhängigkeit des Logging-Dienstes im virtuellen Paket logger der Kategorie virtual aufgelistet, so dass Applikationen einfach vom Paket virtual/logger abhängen können. Wenn dieses installiert wird, zieht das Paket einfach das erste Logging-Paket, das im Paket erwähnt wird, hinein, sofern vorher nicht schon ein Logging-Paket installiert war (in welchem Falle die virtuelle Abhängigkeit schon erfüllt ist).

Anwendungen im Portage-Tree können sich in verschiedenen Zweigen befinden. Standardmäßig akzeptiert Ihr System nur Pakete, die Gentoo als stabil betrachtet. Die meisten neuen Anwendungen werden nach der Veröffentlichung zum Test-Zweig hinzugefügt, da Tests erforderlich sind um festzustellen, ob die spezifische Anwendung als stabil gekennzeichnet werden kann. Obwohl Sie diese Ebuilds auch im Portage-Tree sehen, wird Portage sie erst aktualisieren wenn diese in den stabilen Zweig verschoben werden.

Einige Anwendungen sind nur für bestimmte Architekturen verfügbar. Andere Anwendungen funktionieren nicht auf allen Architekturen oder es sind intensivere Test für diese Anwendung erforderlich. Manchmal ist es dem Entwickler der die Anwendung in den Portage-Tree eingebracht hat nicht möglich, zu prüfen ob die Anwendung auf den unterschiedlichen Architekturen korrekt funktioniert.

Jede Gentoo Installation gehört zu einem bestimmtes Profil, welches neben anderen Informationen auch alle Pakete auflistet, die für ein funktionierendes System erforderlich sind.

Blockierte Pakete

Befehlsauflistung 5.1: Portage warnt vor blockierten Paketen (mit --pretend)

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

Befehlsauflistung 5.2: Portage warnt vor blockierten Paketen (ohne --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 enthalten spezifische Felder, die Portage über die Abhängigkeiten informieren. Es gibt zwei mögliche Formen von Abhängigkeiten: Build Abhängigkeiten, deklariert in DEPEND und Abhängigkeiten zur Laufzeit, deklariert in RDEPEND. Wenn eine dieser Abhängigkeiten ein Paket oder eine Virtual als explizit nicht kompatibel kennzeichnet, wird ein Blocker ausgelöst.

Auch wenn neuere Portage-Versionen schlau genug sind, kleinere Blocker ohne Benutzereingriffe zu umgehen, müssen Sie ab und zu selbst Hand anlegen, wie folgt beschrieben.

Um einen solchen Blocker zu umgehen können Sie entweder auf das Installieren des Pakets verzichten, oder das den Blocker auslösende Paket zuerst deinstallieren. Im gerade angebrachten Beispiel sind Ihre Optionen der Verzicht auf die Installation von postfix oder die vorherige Deinstallation von ssmtp.

Sie werden unter Umständen auch blockierende Pakete mit spezifischen Atoms wie <media-video/mplayer-1.0_rc1-r2 sehen. In diesem Fall wird das Aktualisieren auf eine neuere Version des blockierenden Paketes die Blockierung aufheben.

Es ist auch möglich, dass sich zwei zu installierende Pakete gegenseitig blockieren. In diesem seltenen Fall sollten Sie herausfinden, warum Sie beide installieren müssen. In den meisten Fällen ist eines der Pakete ausreichend. Wenn nicht, erstellen Sie bitte einen Bug in Gentoos Bugtracking System.

Maskierte Pakete

Befehlsauflistung 5.3: Portage Warnung zu maskierten Paketen

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

Befehlsauflistung 5.4: Portage Warnung zu maskierten Paketen - Gründe

!!! 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)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

Wenn Sie ein Paket installieren wollen, welches für Ihr System nicht verfügbar ist, erhalten Sie eine solche Fehlermeldung. Sie sollten versuchen eine andere Anwendung, welche für Ihr System verfügbar ist, zu installieren oder warten bis das gewünschte Paket verfügbar ist. Es gibt immer einen Grund warum ein Paket maskiert ist:

  • ~arch Keyword bedeutet, dass diese Anwendung noch nicht hinreichend getestet ist, um diese in den stabilen Zweig zu schieben. Warten Sie ein paar Tage oder Wochen und versuchen Sie es erneut.
  • -arch Keyword oder -* Keyword bedeutet, dass diese Anwendung auf Ihrer Architektur nicht funktioniert. Wenn Sie glauben, dass das Paket funktioniert erstellen Sie einen Bugreport über unsere Bugzilla Webseite.
  • Fehlendes Keyword bedeutet, dass diese Anwendung auf Ihrer Architektur noch nicht getestet wurde. Bitten Sie das Portierungs Team Ihrer Architektur dieses Paket zu testen, oder testen Sie es selbst und melden Sie Ihre Ergebnisse über unsere Bugzilla Webseite.
  • package.mask bedeutet, dass dieses Paket korrupt, instabil oder schlecht ist und als "nicht-benutzen" gekennzeichnet wurde.
  • profile bedeutet, dass dieses Paket als nicht zutreffend für Ihr Profil gekennzeichnet ist. Die Applikation kann Ihr System in einen korrupten Zustand versetzen wenn Sie diese Anwendung installieren. Oder die Anwendung ist mit dem Profil dass Sie verwenden nicht kompatibel.
  • license bedeutet, dass die Lizenz des Paketes nicht mit Ihrer ACCEPT_LICENSE Einstellung kompatibel ist. Sie müssen die entsprechende Lizenz oder Lizenzgruppe explizit erlauben, indem Sie sie in /etc/portage/make.conf oder in /etc/portage/package.license angeben. Sehen Sie sich Lizenzen genauer an, um herauszufinden, wie jegliche funktionieren.

Erforderliche USE-Flag-Änderungen

Befehlsauflistung 5.5: Portage-Warnung über erforderliche USE-Flag-Änderung

The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test

Diese Fehlermeldung kann auch wie folgt angezeigt werden, sofern --autounmask nicht gesetzt ist:

Befehlsauflistung 5.6: Portage-Fehler über erforderliche USE-Flag-Änderung

emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])

Solche Warnungen oder Fehler treten auf, wenn Sie ein Paket installieren wollen, das nicht nur von einem anderen Paket abhängig ist, sondern es auch erforderlich ist, dass dieses Paket mit einem bestimmten USE-Flag (oder einer Menge von USE-Flags) gebaut wurde. In dem gegebenen Beispiel muss das Paket app-text/feelings mit USE="test" gebaut worden sein, aber dieses USE-Flag ist auf dem System nicht gesetzt.

Um dieses Problem zu lösen, fügen Sie entweder das erforderliche USE-Flag zu Ihren globalen USE-Flags in der /etc/portage/make.conf hinzu, oder setzen Sie es für das spezifische Paket in der /etc/portage/package.use.

Fehlende Abhängigkeiten

Befehlsauflistung 5.7: Portage Warnung zu fehlenden Abhängigkeiten

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.

Die Anwendung welche Sie installieren möchten benötigt ein anderes Paket, welches für Ihr System nicht verfügbar ist. Schauen Sie im Bugzilla nach, ob das Problem bekannt ist und wenn nicht, erstellen Sie zu diesem Problem einen neuen Bugreport. Solange Sie nicht verschiedene Zweige mischen sollte eine solche Fehlermeldung eigentlich nicht auftauchen und ist somit ein Bug.

Doppeldeutige Ebuild-Namen

Befehlsauflistung 5.8: Portage Warnung über doppeldeutige Ebuild-Namen

[ Results for search key : listen ]
[ Applications found : 2 ]

*  dev-tinyos/listen [ Masked ]
      Latest version available: 1.1.15
      Latest version installed: [ Not Installed ]
      Size of files: 10,032 kB
      Homepage:      http://www.tinyos.net/
      Description:   Raw listen for TinyOS
      License:       BSD

*  media-sound/listen [ Masked ]
      Latest version available: 0.6.3
      Latest version installed: [ Not Installed ]
      Size of files: 859 kB
      Homepage:      http://www.listen-project.org
      Description:   A Music player and management for GNOME
      License:       GPL-2

!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.

Die Anwendung, die Sie installieren möchten, hat einen Namen, der auf mehr als ein Paket zutrifft. Sie müssen ebenfalls die Kategorie des Paketes angeben. Portage informiert Sie über mögliche Treffer, aus denen Sie auswählen können.

Zyklische Abhängigkeiten

Befehlsauflistung 5.9: Warnung von Portage zu zyklischen Abhängigkeiten

!!! 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

Zwei (oder mehr) Pakete, die Sie installieren möchten hängen gegenseitig voneinander ab und können daher nicht installiert werden. Dies ist in den meisten Fällen ein Bug im Portage-Tree. Bitte warten Sie eine Weile, aktualisieren den Portage-Tree und versuchen Sie es erneut. Schauen Sie ebenfalls im Bugzilla, ob dies ein bekanntes Problem ist und erstellen einen Bugreport sofern noch keiner existiert.

Herunterladen der Quellen schlägt fehl

Befehlsauflistung 5.10: Portage Warnung zu Fehlern beim herunterladen der Quellen

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

Portage konnte die Quellen für eine bestimmte Anwendung nicht herunterladen und wird mit dem Installieren der anderen Anwendungen (sofern zutreffend) fortfahren. Dieser Fehler kann durch einen noch nicht aktualisierten Mirror oder einen falsche Angabe im Ebuild hervorgerufen werden. Zudem kann es sein, dass der Server von dem Sie die Quellen herunterladen möchten aus einem unbekannten Grund nicht erreichbar ist.

Versuchen Sie es eine Stunde später nochmals um zu prüfen, ob das Problem noch besteht.

Schutz des Systemprofils

Befehlsauflistung 5.11: Portage Warnung über durch das Profil geschützte Pakete

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

Sie wollen ein Paket deinstallieren, welches zu den Kernbestandteilen Ihres Systems zählt. Es ist in Ihrem Profil als notwendig aufgeführt und sollte daher nicht deinstalliert werden.

Fehler in der Überprüfung des Digests

Manchmal kann das installieren eines Pakets mittels emerge mit folgender Nachricht abbrechen:

Befehlsauflistung 5.12: Fehler in der Überprüfung des Digest

>>> checking ebuild checksums
!!! Digest verification failed:

Dies ist ein Zeichen dafür dass etwas mit dem Portage-Tree nicht in Ordnung ist. Oft liegt es daran, dass ein Entwickler beim einbringen eines Pakets in den Tree einen Fehler gemacht hat.

Wenn die Überprüfung des Digest fehlschlägt versuchen Sie nicht das Paket selber neu zu indizieren. Das Ausführen von ebuild foo manifest wird das Problem nicht beheben. Es wird das Problem mit ziemlicher Sicherheit nur noch verschärfen!

Warten Sie stattdessen ein bis zwei Stunden, bevor der Tree sich etwas normalisiert hat. Es ist wahrscheinlich ein Fehler, der direkt danach bemerkt wurde, aber es kann eine Weile dauern bis die Korrektur im Portage-Tree verbreitet wurde. Während Sie warten können Sie im Bugzilla nachsehen ob jemand das Problem bereits gemeldet hat. Wenn nicht, melden Sie einfach einen Bug für das kaputte Paket.

Sobald Sie sehen, dass der Fehler behoben wurde, können Sie erneut synchronisieren um das korrigierte Digest zu erhalten.

Wichtig: Dies bedeutet nicht, dass Sie Ihren Tree mehrere Male synchronisieren sollten! Wie in der Rsync-Richtlinie aufgeführt (wenn Sie emerge --sync ausführen) werden Benutzer, die zu oft synchronisieren gesperrt! Es ist besser bis zu Ihrem nächsten geplanten Sync zu warten, damit die Rsync-Server nicht überlastet werden.

2. USE Flags

2.a. Was sind USE-Flags?

Die Idee welche hinter USE-Flags steckt

Wenn Sie Gentoo installieren (oder irgendeine andere Distribution, oder sogar ein anderes Betriebssystem) treffen Sie Entscheidungen abhängig von der Umgebung in der Sie arbeiten. Die Einrichtung eines Server unterscheidet sich von der Einrichtung einer Workstation. Eine Spiele-Workstation unterscheidet sich von einer Workstation für 3D-Rendering.

Dies trifft nicht nur bei der Auswahl der Pakete die Sie installieren wollen zu, sondern auch welche Funktionen ein Paket unterstützen soll. Wenn Sie OpenGL nicht benötigen, warum sollten Sie sich die Mühe machen OpenGL zu installieren und OpenGL-Unterstützung in die meisten Ihrer Pakete einzubauen? Wenn Sie KDE nicht benutzen wollen, warum sollten Sie sich die Mühe machen Pakete mit KDE-Unterstützung zu kompilieren, wenn diese Pakete auch ohne einwandfrei funktionieren?

Um den Benutzern bei der Entscheidung zu helfen, was installiert/aktiviert werden soll und was nicht, wollen wir, dass der Benutzer seine Umgebung auf eine einfache Weise spezifiziert. Dies zwingt den Benutzer dazu zu entscheiden, was er wirklich will und vereinfachtt den Prozess für Portage, unser Paketmanagementsystem, sinnvolle Entscheidungen zu treffen.

Definition eines USE-Flag

Geben Sie die USE-Flags ein. Solch ein Flag ist ein Schlüsselwort das Unterstützungs- und Abhängigkeitsinformationen für ein bestimmtes Konzept beinhaltet. Wenn Sie ein bestimmtes USE-Flag definieren wird Portage wissen, dass Sie Unterstützung für das gewählte Schlüsselwort wollen. Natürlich verändert dies auch die Abhängigkeitsinformationen für ein Paket.

Schauen wir uns ein spezifisches Beispiel an: das kde Schlüsselwort. Wenn Sie dieses Schlüsselwort nicht in Ihrer USE Variable haben, werden alle Pakte die optionale KDE Unterstützung haben ohne KDE Unterstützung kompiliert. Alle Pakete die eine optionale KDE Abhängigkeit haben werden installiert, ohne dass die KDE Bibliotheken (als Abhängigkeit) installiert werden. Wenn Sie das kde Schlüsselwort verwendet haben, dann werden diese Pakete mit KDE Unterstützung kompiliert und die KDE Bibliotheken werden als Abhängigkeit installiert.

Dadurch, dass Sie das Schlüsselwort korrekt definieren, erhalten Sie ein System spezifisch an Ihre Bedürfnisse angepasst.

Welche USE-Flags gibt es?

Es gibt zwei Arten von USE-Flags: globale und lokale USE-Flags.

  • Ein globales USE-Flag wird von vielen Paketen systemweit benutzt. Dies ist was die meisten Menschen als ein USE-Flag ansehen.
  • Ein lokales USE-Flag wird von einem einzelnen Paket verwendet um Entscheidungen spezifisch für ein Paket zu treffen.

Eine Liste von allen verfügbaren globalen USE-Flags findet man Online oder lokal in /usr/portage/profiles/use.desc.

Eine Liste verfügbarer lokaler USE-Flags finden Sie lokal in /usr/portage/profiles/use.local.desc.

2.b. Benutzung von USE-Flags

Deklarieren von ständigen USE-Flags

In der Hoffnung, dass Sie überzeugt sind von der Wichtigkeit von USE-Flags, werden wir Sie nun informieren wie man USE-Flags deklariert.

Wie vorher erwähnt, werden alle USE-Flags innerhalb der USE Variable deklariert. Um es für die Benutzer einfach zu machen USE-Flags zu suchen und auszuwählen, geben wir schon eine Standardeinstellung für USE vor. Diese Einstellung ist eine Sammlung von USE-Flags, von denen wir glauben, dass sie häufig von Gentoo Benutzern verwendet werden. Diese Standardeinstellung ist deklariert in der make.defaults Dateien die Teil Ihres Profils sind.

Das Profil, auf das Ihr System hört, wird ausgewiesen vom /etc/portage/make.profile Symlink. Jedes Profil funktioniert aufbauend auf einem anderen, größeren Profil. Das Endergebnis ist daher die Summe aller Profile. Das Hauptprofil ist das base Profil (/usr/portage/profiles/base).

Lassen Sie uns einen Blick auf die Standardeinstellung für das 13.0 Profil werfen:

Befehlsauflistung 2.1: Kulmulative make.defaults USE-Variable für das 13.0 Profil

(Dieses Beispiel ist die Summe der Einstellungen in base,
 default/linux, default/linux/x86 und default/linux/x86/13.0/)
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"

Wie Sie sehen können, enthält diese Variable schon eine ziemlich große Anzahl von Schlüsselwörtern. Verändern Sie jegliche make.defaults Dateien nicht um die USE Variable an Ihre Bedürfnisse anzupassen: Veränderungen in dieser Datei werden überschrieben wenn Sie ein Update von Portage durchführen!

Sie ändern diese Standardeinstellung durch Hinzufügen oder Entfernen von Schlüsselwörtern zur USE-Variable. Dies geschieht global durch die Definierung der USE Variable in /etc/portage/make.conf. In dieser Variable fügen Sie die zusätzlichen USE-Flags hinzu, die Sie benötigen oder entfernen die USE-Flags, die Sie nicht wollen. Das Letztere geschieht durch das Vorsetzen eines Minuszeichens ("-") vor das Schlüsselwort.

Zum Beispiel wenn Unterstützung für KDE und QT entfernt werden soll aber Unterstützung für ldap hinzugefügt werden soll, kann USE wie folgt in /etc/portage/make.conf definiert werden:

Befehlsauflistung 2.2: Eine Beispielseinstellung für USE in /etc/portage/make.conf

USE="-kde -qt4 ldap"

Deklarieren von USE-Flags für einzelne Pakete

Machmal möchten Sie ein bestimmtes USE-Flag für ein (oder einige) Anwendungen deklarieren, aber nicht systemweit. Um dies zu ermöglichen müssen Sie zunächst das /etc/portage Verzeichnis erstellen (sofern es noch nicht existiert) und die Datei /etc/portage/package.use editieren. Dies ist normalerweise nur eine Datei, kann aber auch ein Verzeichnis sein. Weitere Informationen finden Sie in man portage. Das folgende Beispiel setzt voraus dass package.use nur eine Datei ist.

Wenn Sie zum Beispiel berkdb Unterstützung nicht global, aber für mysql möchten fügen Sie folgendes ein:

Befehlsauflistung 2.3: /etc/portage/package.use Beispiel 1

dev-db/mysql berkdb

Sie können natürlich ein USE-Flag für ein Ebuild explizit deaktivieren. Wenn Sie zum Beispiel keine java Unterstützung in PHP benötigen:

Befehlsauflistung 2.4: /etc/portage/package.use Beispiel 2

dev-php/php -java

Deklarieren von temporären USE-Flags

Manchmal wollen Sie eine bestimmte USE-Einstellung nur einmal benutzen. Anstatt das /etc/portage/make.conf zweimal editiert wird (um die Veränderungen in USE anzuwenden und wieder zu entfernen) können Sie einfach die USE-Variable als Umgebungsvariable definieren. Behalten Sie im Gedächtnis, dass wenn Sie die jeweilige Anwendung re-kompilieren oder aktualisieren (entweder explizit oder als Teil eines Systemupdate) diese Änderung verloren geht.

Als ein Beispiel werden wir, während der Installation von Seamonkey, temporär Java von den USE-Einstellungen entfernen.

Befehlsauflistung 2.5: USE als Umgebungsvariable verwenden

# USE="-java" emerge seamonkey

Reihenfolge

Natürlich gibt es eine gewisse Präzedenz darüber welche Einstellung Priorität hat über die USE-Einstellungen. Sie wollen schließlich nicht USE="-java" deklarieren nur um zu sehen, dass java weiterhin verwendet wird wegen einer Einstellung, die eine höhere Priorität hat. Präferenz für die USE-Einstellung ist nach Priorität geordnet (die Erste hat die niedrigste Priorität):

  1. Standardeinstellung für USE deklariert in den make.defaults Dateien, die Teil Ihres Profils sind.
  2. Benutzerdefinierte USE-Einstellungen in /etc/portage/make.conf
  3. Benutzerdefinierte USE-Einstellungen in /etc/portage/package.use
  4. Benutzerdefinierte USE-Einstellungen definiert als Umgebungsvariable

Um die endgültige USE Einstellungen zu sehen, so wie sie von Portage gesehen wird, führen Sie emerge --info aus. Dies listet alle relevanten Variablen (inklusive der USE Variable) mit dem von Portage verwendeten Inhalt auf.

Befehlsauflistung 2.6: Ausführen von emerge --info

# emerge --info

Das gesamte System an neue USE-Flags anpassen

Wenn Sie Ihre USE-Flags geändert haben und nun Ihr gesamtes System dazu bringen möchten die neuen USE-Flags zu nutzen, benutzen Sie die --newuse Option von emerge:

Befehlsauflistung 2.7: Neuerstellung Ihres gesamten System

# emerge --update --newuse world

Führen Sie nun Portages depclean aus, um Abhängigkeiten aus Ihrem alten System, die nun durch andere USE-Flags ersetzt wurden, zu löschen.

Warnung: Das Ausführen von emerge depclean ist eine gefährliche Operation und sollte mit dementsprechender Vorsicht vorgenommen werden. Kontrollieren Sie die angezeigte Liste mit zu löschenden Paketen lieber zweimal um so sicherzustellen, dass keine notwendigen Pakete gelöscht werden. Im folgenden Beispiel fügen wir den -p Switch hinzu, um nur eine Liste unbenötigter Pakete angezeigt zu bekommen, ohne diese jedoch gleichzeitig auch zu entfernen.

Befehlsauflistung 2.8: Entfernen unbenötigter Pakete

# emerge -p --depclean

Wenn depclean beendet ist, führen Sie revdep-rebuild aus, um die Anwendungen, die dynamisch gegen "Shared Objects" der deinstallierten Pakete gelinkt sind, neu zu kompilieren. revdev-rebuild ist Teil des Pakets gentoolkit; vergessen Sie nicht dieses zuvor zu installieren.

Befehlsauflistung 2.9: Ausführen von revdep-rebuild

# revdep-rebuild

Nachdem Sie dies alles ausgeführt haben, benutzt Ihr System die neuen USE-Flag Einstellungen.

2.c. Paket spezifische USE-Flags

Betrachten vorhandener USE-Flags

Nehmen wir als Beispiel seamonkey: Auf welche USE-Flags hört es? Um dies herauszufinden benutzen wir emerge mit der --pretend und der --verbose Option:

Befehlsauflistung 3.1: Betrachten der benutzten USE-Flags

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

Calculating dependencies ...done!
[ebuild   R   ] www-client/seamonkey-1.0.7  USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB

emerge ist nicht das einzige Hifsmittel für diesen Job. In der Tat haben wir ein Werkzeug, ausgelegt auf Paketinformationen, genannt equery, welches im gentoolkit Paket enthalten ist. Installieren Sie zunächst gentoolkit:

Befehlsauflistung 3.2: Installieren von gentoolkit

# emerge gentoolkit

Führen Sie nun equery mit dem uses Argument aus um die USE-Flags eines bestimmten Paketes zu betrachten. Zum Beispiel für das gnumeric Paket:

Befehlsauflistung 3.3: Benutzung von equery zur Betrachtung verwendeter USE-Flags

# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column  (U) - USE flags from make.conf              ]
[        : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
 U I
 - - debug  : Enable extra debug codepaths, like asserts and extra output.
              If you want to get meaningful backtraces see
              http://www.gentoo.org/proj/en/qa/backtraces.xml .
 + + gnome  : Adds GNOME support
 + + python : Adds support/bindings for the Python language
 - - static : !!do not set this during bootstrap!! Causes binaries to be
              statically linked instead of dynamically

3. Portage Features

3.a. Portage Features

Portage hat einige zusätzliche Features, die das Gentoo Erlebnis noch ein wenig besser machen. Viele dieser Features beruhen auf Software Tools um die Performance, Funktionssicherheit, Sicherheit, etc. zu verbessern.

Um diese Portage Features zu aktivieren oder deaktivieren müssen Sie die FEATURES Variable in /etc/portage/make.conf anpassen. Diese Variable enthält verschiedene Feature Keywords, welche durch Leerzeichen getrennt werden.In vielen Fällen müssen Sie ebenfalls zusätzliche Software installieren.

Nicht alle Features, die Portage anbietet werden hier aufgelistet. Für einen vollständigen Überblick schauen Sie in die make.conf Manpage:

Befehlsauflistung 1.1: Lesen der make.conf Manpage

$ man make.conf

Um herauszufinden, welche FEATURES per default aktiviert sind führen Sie emerge --info aus und suchen Sie nach der FEATURES Variable, oder filtern diese aus:

Befehlsauflistung 1.2: Herausfinden welche FEATURES bereits aktiv sind

$ emerge --info | grep FEATURES

3.b. Distributed Compiling

Benutzung von distcc

distcc ist ein Programm das "Kompilierungen" über mehrere, nicht notwendigerweise identische Computer, über ein Netzwerk verteilt. Der distcc - Client sendet alle notwendigen Informationen zu den erreichbaren distcc - Servern (die den distccd laufen haben), so dass diese Teile des Quellcodes vom Client kompilieren können. Als Resultat wird Zeit beim Kompilieren eingespart.

Sie finden tiefer gehende Informationen über distcc (und wie Sie es bei Gentoo zum Laufen bringen) in unserer Gentoo distcc Dokumentation.

distcc installieren

Distcc bringt einen grafischen Monitor mit, der Sie über alle Aufgaben informiert, die der Computer zum Kompilieren wegsendet. Falls Sie Gnome benutzen, setzen Sie 'gnome' in Ihrer USE-Variable. Wenn Sie nicht Gnome nutzen, den Monitor aber trotzdem haben wollen, sollten Sie 'gtk' in Ihrer USE-Variable setzen.

Befehlsauflistung 2.1: distcc installieren

# emerge distcc

Unterstützung für Portage aktivieren

Fügen Sie distcc der FEATURES Variable in /etc/portage/make.conf hinzu. Anschließen editieren Sie die MAKEOPTS Variable entsprechend Ihren Wünschen. In den meisten Fällen ist es hinreichend "-jX" anzugeben, wobei X der Nummer der CPUs die den distccd ausführen entsprechen (inklusive dem aktuellen Host) plus eins, möglicherweise haben Sie mit anderen Werten bessere Ergebnisse.

Nun rufen Sie distcc-config auf und tragen eine Liste der verfügbaren Server ein. Als einfaches Beispiel nehmen wir einmal an, dass die verfügbaren distcc Server 192.168.1.102 (der momentane Host), 192.168.1.103 und 192.168.1.104 (zwei "entfernte" Hosts) sind:

Befehlsauflistung 2.2: distcc für die Nutzung dreier verfügbarer distcc Server konfigurieren

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

Vergessen Sie bitte nicht, auch den distccd - Dämonen zu starten:

Befehlsauflistung 2.3: distcc Dämonen starten

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

3.c. Caching Compilation

Über ccache

ccache ist ein schneller Compiler - Cache. Wenn Sie ein Programm kompilieren, werden Zwischenresultate gecacht, so dass bei einer Rekompilierung des Programms die Zeit zum Kompilieren viel kürzer ist. Wenn Sie ccache zum ersten Mal verwenden, wird es viel langsamer sein als eine normale Kompilierung. Darauffolgende Rekompilierungen sollten schneller sein. ccache ist nur hilfreich, wenn Sie die gleiche Applikation sehr oft rekompilieren müssen; es ist daher hauptsächlich nur für Softwareentwickler nützlich.

Falls Sie an den Vor- und Nachteilen von ccache interessiert sind, besuchen Sie bitte die ccache Homepage.

Warnung: ccache ist bekannt dafür, zahlreiche Kompilierungsfehler zu verursachen. Ab und zu behält ccache veraltete Codeobjekte oder korrupte Dateien bei, was dazu führt, dass Pakete sich nicht emergen lassen. Falls das passiert (wenn Sie Fehler wie z.B. "File not recognized: File truncated" erhalten), versuchen Sie die Applikation mit deaktiviertem ccache (FEATURES="-ccache" in der /etc/portage/make.conf) zu rekompilieren bevor Sie einen Bug eröffnen. Falls Sie keine Softwareentwicklung betreiben, aktivieren Sie ccache nicht.

ccache installieren

Zur Installation von ccache führen Sie emerge ccache aus:

Befehlsauflistung 3.1: ccache installieren

# emerge ccache

Unterstützung für Portage aktivieren

Öffnen Sie /etc/portage/make.conf und fügen Sie ccache zu FEATURES hinzu. Anschließend erstellen Sie eine neue Variable namens CCACHE_SIZE und setzen diese auf "2G":

Befehlsauflistung 3.2: CCACHE_SIZE in /etc/portage/make.conf editieren

CCACHE_SIZE="2G"

Um zu schauen ob ccache funktioniert, fragen Sie ccache nach seinen Statistiken. Weil Portage ein anderes Home-Verzeichnis verwendet, müssen Sie auch die CCACHE_DIR Variable setzen:

Befehlsauflistung 3.3: Ccache - Statistiken anschauen

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

Der /var/tmp/ccache Pfad ist das Standard ccache Home-Verzeichnis von Portage. Wenn Sie diese Einstellungen ändern möchten, können Sie die CCACHE_DIR Variable in /etc/portage/make.conf setzen.

Wenn Sie aber ccache ausführen würden, würde es den Standardpfad ${HOME}/.ccache verwenden. Deswegen mussten Sie auch die CCACHE_DIR Variable setzen, als Sie nach den (Portage) ccache-Statistiken fragten.

Nutzung von ccache außerhalb von Portage

Wenn Sie ccache für Kompilierungen außerhalb von Portage nutzen möchten fügen Sie /usr/lib/ccache/bin dem Beginn der PATH Variable hinzu (vor /usr/bin). Dies kann durch Editieren von .bash_profile in Ihrem Home-Verzeichnis erreicht werden. Die Verwendung von .bash_profile ist eine Möglichkeit Ihre PATH-Variable zu definieren.

Befehlsauflistung 3.4: Editieren von .bash_profile

PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

3.d. Binäre Pakete

Binärpakete erstellen

Portage unterstützt die Installation von vorkompilierten Paketen. Obwohl Gentoo keine vorkompilierten Pakete anbietet (mit Ausnahme der GRP Schnappschüsse) ist die Funktion vollständig implementiert.

Um ein vorkompiliertes Paket zu erstellen können Sie quickpg benutzen, sofern das Programm bereits in Ihrem System installiert ist oder Sie benutzen die --buildpkg oder --buildpkgonly Optionen.

Falls Sie wollen, dass Portage dies standardmäßig macht, sollten Sie das Schlüsselword buildpkg in der FEATURES Variablen setzen.

Erweiterte Unterstützung zum Erstellen von vorkompilierten Paketen finden Sie in catalyst. Für weitere Informationen zu catalyst lesen Sie bitte die Catalyst FAQ.

Vorkompilierte Pakete Installieren

Auch wenn Gentoo keine anbietet, Sie können ein zentrales Repository anlegen, in dem Sie vorkompilierte Pakete ablegen. Wenn Sie dieses Repository nutzen möchten müssen Sie Portage mit der PORTAGE_BINHOST Variable den Ort des Repository bekannt machen. Wenn sich die Pakete zum Beispiel auf ftp://buildhost/gentoo befinden:

Befehlsauflistung 4.1: Setzen der PORTAGE_BINHOST Variable in /etc/portage/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Wenn Sie vorkompilierte Pakete installieren wollen fügen Sie --getbinpkg Option an das entsprechende emerge Kommando (welches ebenfalls --usepkg enthalten muss) an. Die erste Option weist Portage an ein Binärpaket herunterzuladen, die zweite zuerst zu versuchen ein Binärpaket zu installieren, bevor Sourcen heruntergeladen und kompiliert werden.

Um zum Beispiel gnumeric mit vorkompilierten Paketen zu installieren:

Befehlsauflistung 4.2: Installation des vorkompilierten gnumeric Pakets

# emerge --usepkg --getbinpkg gnumeric

Weitere Informationen zur Binärpaket Funktionalität von emerge finden Sie in der emerge Manpage:

Befehlsauflistung 4.3: Lesen der emerge Manpage

$ man emerge

3.e. Dateien abrufen

Paralleler Abruf

Wenn Sie eine Serie von Paketen mit emerge isntallieren kann Portage die Quelldateien für das nächste Paket in der Liste schon herunterladen, während es noch ein anderes Paket kompiliert, und dadurch die Kompilierzeit reduzieren. Um von dieser Fähigkeit Gebrauch zu machen, fügen Sie "parallel-fetch" zu Ihren FEATURES hinzu. Beachten Sie, dass diese mittlerweile standardmäßig aktiv ist und Sie sie nicht ausdrücklich aktivieren müssen.

Userfetch

Wenn Portage als root ausgeführt wird, erlaubt FEATURES="userfetch" Portage das Senken der root-Privilegien während es Paketquellen abruft. Dies verbessert die Sicherheit ein wenig.

3.f. Beziehen von validierten Portage-Tree-Snapshots

Als Administrator können Sie sich dafür entscheiden, Ihren lokalen Portage-Tree nur mit einem vom Gentoo Infrastruktur-Team veröffentlichten, kryptographisch validierten Snapshot des Portage-Trees zu aktualisieren. Das stellt sicher, dass kein böswilliger rsync-Mirror ungewollten Code oder ungewollte Pakete zu dem Tree hinzufügt, den Sie herunterladen.

Um Portage zu konfigurieren, erstellen Sie zunächst einen Trust-Store, in den Sie die Schlüssel der Gentoo-Infrastruktur, die für das Signieren des Portage-Trees verantwortlich sind, herunterladen und akzeptieren. Wenn Sie möchten, können Sie diesen GPG-Schlüssel mit den entsprechenden Richtlinien validieren (z.B. durch Überprüfen des Schlüssel-Fingerabdrucks). Sie finden die Liste der vom Release-Engineering-Team verwendetn GPG-Schlüssel auf ihrer Projektseite.

Befehlsauflistung 6.1: Erstellen eines Trust-Stores für Portage

# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
(... Ersetzen Sie die Schlüssel mit denen von der Release-Engineering-Seite ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust

Bearbeiten Sie nun /etc/portage/make.conf und aktivieren Sie die Unterstützung für das Validieren der signierten Snapshots des Portage-Trees (durch Verwendung von FEATURES="webrsync-gpg") und schalten Sie das Aktualisieren des Portage-Trees mit der regulären emerge --sync Methode ab.

Befehlsauflistung 6.2: Aktualisieren von Portage für Validierung signierter Trees

FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""

Das wär's. Das nächste Mal, wenn Sie emerge-webrsync verwenden, werden nur die Snapshots mit einer gültigen Signatur auf Ihrem Dateisystem extrahiert.

4. Initskripte

4.a. Runlevel

Der Startvorgang

Wenn Sie Ihr System booten, werden Sie sehr viel Text auf dem Bildschirm vorbeifließen sehen. Genauer betrachtet, ist es immer derselbe Text nach einem Neustart. Diese Auflistung aller Aktionen beim Startvorgang wird Bootsequenz genannt und ist (mehr oder weniger) fest vorgeschrieben.

Zuerst lädt Ihr Bootloader das Kernel-Image, welches Sie in der Konfigurationsdatei Ihres Bootloaders angegeben haben, in den Arbeitsspeicher. Dann teilt er der CPU mit, den Kernel zu starten. Wenn dieser geladen ist und läuft, initialisiert er alle kernel-spezifischen Strukturen und Aufgaben. Dann wird der init Prozess gestartet.

Dieser Prozess stellt sicher, dass auch alle Dateisysteme (die in /etc/fstab angegeben wurden) gemounted und benutzt werden können. Dann führt er mehrere Skripte in /etc/init.d aus, welche die verschiedenen Dienste starten, die Sie für einen erfolgreichen Bootvorgang benötigen.

Schließlich, wenn alle Skripte ausgeführt wurden, aktiviert init die Terminals (in den meisten Fällen virtuelle Konsolen, die hinter Alt-F1, Alt-F2, etc. versteckt sind) mit einem speziellen Prozess namens getty. Dieser Prozess stellt dann sicher, dass Sie sich über diese Terminals mit dem Befehl login einloggen können.

Initskripte

init führt die Skripte in /etc/init.d aber nicht willkürlich aus. Nur die Skripte aus /etc/init.d, die es ausführen soll, werden auch ausgeführt. Welche das sind, steht in /etc/runlevels.

Zuerst werden alle Skripte aus /etc/init.d, die einen symbolischen Link in /etc/runlevels/boot besitzen, von init gestartet. Normalerweise geschieht dies in alphabetischer Reihenfolge, aber einige Skripte müssen zunächst Abhängigkeiten auflösen, so dass erst andere Skripte gestaret sein müssen, bevor es selbst ausgeführt werden kann.

Wenn alle Skripte aus /etc/runlevels/boot ausgeführt wurden, startet init diejenigen Skripte, die einen symbolischen Link in /etc/runlevels/default besitzen. Auch hier wird zunächst die alphabetische Reihenfolge beachtet, es sei denn, dass auch hier wieder Abhängigkeiten aufgelöst werden müssen, damit eine erfolgreiche Startsequenz gewährleistet ist.

Wie Init arbeitet

Natürlich entscheidet init das alles nicht alleine. Es benötigt eine Konfigurationsdatei, die enthält, welche Aktion ausgeführt werden soll. Diese Datei heißt /etc/inittab.

Wenn Sie sich an die Bootsequenz erinnern, die wir Ihnen eben erklärt hatten, werden Sie sich daran erinnern, dass die erste Aktion von init das Mounten aller Dateisysteme war. Dies ist in der folgenden Zeile aus /etc/inittab ersichtlich:

Befehlsauflistung 1.1: Zeile zur Systeminitialisierung in /etc/inittab

si::sysinit:/sbin/rc sysinit

Diese Zeile teilt init mit, dass es /sbin/rc sysinit ausführen muss, um das System zu initialisieren. Das /sbin/rc Skript stellt dann die Initialisierung sicher. Sie könnten nun sagen, dass init ja eigentlich nicht viel macht -- es delegiert die Aufgabe der Systeminitialisierung an einen anderen Prozess.

Dann führt init alle Skripte, die einen symbolischen Link in /etc/runlevels/boot haben aus. Dies wird in folgender Zeile ersichtlich:

Befehlsauflistung 1.2: Systeminitialisierung, Fortsetzung

rc::bootwait:/sbin/rc boot

Wieder übernimmt das rc Skript die notwendigen Aufgaben. Beachten Sie, dass die Option, die rc (boot) übergeben wird, denselben Namen besitzt, wie das verwendete Unterverzeichnis in /etc/runlevels.

Nun überprüft init seine Konfigurationsdatei, um zu sehen, welchen Runlevel es ausführen sollte. Um dies zu entscheiden, ließt es die folgende Zeile aus /etc/inittab:

Befehlsauflistung 1.3: Die initdefault Zeile

id:3:initdefault:

In diesem Fall (welchen die meisten Gentoo-User nutzen werden) ist die runlevel ID 3. Mit Hilfe dieser Information überprüft init, was alles zum Start von Runlevel 3 ausgeführt werden muss:

Befehlsauflistung 1.4: Runlevel Definitionen

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

Die Zeilen, die den Level 3 definieren, werden wiederum vom rc Skript verwendet, um die Dienste (nun mit dem Argument default) zu starten. Beachten Sie auch hier, dass das Argument von rc wieder denselben Namen wie das verwendete Unterverzeichnis von /etc/runlevels hat.

Wenn rc fertig ist, entscheidet init, welche Konsole es aktivieren sollte und welche Befehle auf jeder Konsole benutzt werden müssen:

Befehlsauflistung 1.5: Die Definition der virtuellen Konsolen

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

Was ist ein Runlevel?

Sie haben gesehen, dass init ein Nummernschema benutzt, um zu entscheiden, welchen Runlevel es aktivieren soll. Ein Runlevel ist ein bestimmter Zustand, in dem sich Ihr System befindet und der eine Ansammlung von Skripten (Runlevel-Skripte oder Initskripte) besitzt, die beim Betreten oder Verlassen eines Runlevels ausgeführt werden müssen.

In Gentoo sind sieben Runlevel definiert: drei interne Runlevel und vier, die der Benutzer definieren kann. Die internen Runlevel sind sysinit, shutdown und reboot und machen genau das, was die Namen vermuten lassen: initialisieren das System, fahren es herunter und führen einen Reboot durch.

Die benutzerdefinierten Runlevel sind diejenigen, mit einem Unterverzeichnis in /etc/runlevels: boot, default, nonetwork und single. Der boot Runlevel startet alle notwendigen Dienste, die die anderen Runlevel benötigen. Die verbleibenden drei Runlevel unterscheiden sich in den Diensten, die sie starten: default wird genutzt, um die täglichen Operationen zu erledigen, nonetwork nur im Falle, das keine Netzwerkverbindung gebraucht wird und single, wenn das System repariert werden muss.

Mit den Initskripten arbeiten

Die Skripte, die den rc Prozess starten, werden Initskripte genannt. Jedes Skript in /etc/init.d kann mit den Argumenten start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme oder broken ausgeführt werden.

Um einen Dienst zu starten oder zu stoppen (und die davon abhängigen Dienste), sollte start, stop und restart benutzt werden:

Befehlsauflistung 1.6: Postfix starten

# /etc/init.d/postfix start

Notiz: Nur Dienste, die den gegebenen Dienst benötigen werden gestoppt oder neu gestartet. Alle anderen abhängigen Dienste (die den Dienst nutzen, aber nicht benötigen) werden nicht berührt.

Falls Sie einen Dienst stoppen wollen, aber nicht die davon abhängigen Dienste, können Sie das pause Argument nutzen:

Befehlsauflistung 1.7: Postfix stoppen, ohne die davon abhängigen Dienste zu berühren

# /etc/init.d/postfix pause

Falls Sie den Status eines Dienstes (started, stopped, paused, ...) sehen möchten, können Sie das status Argument nutzen:

Befehlsauflistung 1.8: Statusinformationen über Postfix

# /etc/init.d/postfix status

Falls die Statusinformation Ihnen mitteilt, dass der Dienst gestartet wurde, Sie aber wissen, dass dies nicht der Fall ist, können Sie die Statusinformation mit dem zap Argument zu "stopped" zurücksetzen:

Befehlsauflistung 1.9: Statusinformation von Postfix zurücksetzen

# /etc/init.d/postfix zap

Um auch nachzufragen, was von dem Dienst alles abhängt, können sie die Argumente iuse oder ineed nutzen. Mit ineed wird alles angezeigt, was zum ordnungsgemäßen Funktionieren des Dienstes nötig ist. iuse andererseits zeigt alle Dienste an, die von diesem Dienst benutzt werden können, aber nicht notwendig zur ordnungsgemäßen Funktion des Dienstes sind.

Befehlsauflistung 1.10: Anforderung einer Liste der notwendigen Dienste, von denen Postfix abhängt

# /etc/init.d/postfix ineed

Ähnlich ist die Vorgehensweise, wenn Sie nach allen Diensten fragen wollen, die einen bestimmten Dienst benötigen (needsme) oder ihn benutzen (usesme):

Befehlsauflistung 1.11: Anforderung einer Liste aller Dienste, die Postfix benötigen

# /etc/init.d/postfix needsme

Schließlich können Sie noch nachfragen, welche Abhängigkeiten der Dienst benötigt, die aber noch fehlen:

Befehlsauflistung 1.12: Anforderung einer Liste aller fehlenden Abhängigkeiten für Postfix

# /etc/init.d/postfix broken

4.b. Mit rc-update arbeiten

Was ist rc-update?

Das Init-System von Gentoo benutzt einen Abhängigkeitsbaum um zu entscheiden, welcher Dienst zuerst gestartet werden muss. Da dies eine ermüdende Aufgabe ist, die wir unseren Usern nicht unbedingt zumuten wollten "von Hand" auszuführen, haben wir einige Tools erstellt, die die Administration der Runlevel und Initskripte erleichtert.

Mit rc-update können Sie Initskripte zu einem Runlevel hinzufügen und wieder entfernen. Das rc-update Tool wird dann das depscan.sh Skript automatisch dazu veranlassen, den Abhängigkeitsbaum anzupassen.

Hinzufügen und Entfernen von Diensten

Sie haben bereits während der Installation von Gentoo Initskripte zum "default" Runlevel hinzugefügt. Zu diesem Zeitpunkt hatten Sie aber wahrscheinlich noch keine Ahnung, für was "default" steht, nun sollten Sie es aber wissen. Das rc-update Skript benötigt ein zweites Argument, welches eine "Aktion" definiert: add, del oder show.

Um ein Initskript hinzuzufügen oder zu entfernen, übergeben Sie rc-update einfach add oder del als Argument, gefolgt von dem Initskript und dem Runlevel. Zum Beispiel:

Befehlsauflistung 2.1: Entfernen von Postfix aus dem Runlevel default

# rc-update del postfix default

Der Befehl rc-update -v show wird Ihnen alle verfügbaren Initskripte und Runlevel, in denen diese ausgeführt werden, zeigen:

Befehlsauflistung 2.2: Informationen über Initskripte erhalten

# rc-update -v show

Sie können auch rc-update show ausführen (ohne -v) um nur die aktivierten Initskripte und ihre Runlevel anzuzeigen.

4.c. Dienste konfigurieren

Warum zusätzliche Konfigurationen?

Initskripte können recht komplex sein. Es ist daher nicht unbedingt von Vorteil, wenn User Initskripte direkt bearbeiten könnten, da es die Sache nur fehleranfälliger machen würde. Es ist aber auch wichtig, dass Konfigurationen gemacht werden können. Zum Beispiel, wenn Sie einem Dienst mehrere Optionen mitgeben wollten:

Ein zweiter Grund, diese Konfiguration außerhalb der Initskripte zu haben ist, ein Update eines Initskriptes durchführen zu können, ohne zu befürchten, die Konfigurationen dabei rückgängig zu machen.

Das /etc/conf.d Verzeichnis

Gentoo stellt einen einfachen Weg zur Konfiguration eines solchen Services zur Verfügung: Jedes Initskript, das konfiguriert werden kann, hat eine Datei in /etc/conf.d. Zum Beispiel hat das Apache2 Initskript (/etc/init.d/apache2 genannt) eine Konfigurationsdatei namens /etc/conf.d/apache2, die die Optionen enthalten kann, die Sie dem Apache 2 Server beim Start mitgeben wollen:

Befehlsauflistung 3.1: Variablen, definiert in /etc/conf.d/apache2

APACHE2_OPTS="-D PHP5"

Solch eine Konfigurationsdatei enthält nur Variablen (genau wie in /etc/portage/make.conf), was die Konfiguration eines Dienstes sehr vereinfacht. Es erlaubt uns auch, mehr Informationen (als Kommentare) über die Variablen zu geben.

4.d. Initskripte schreiben

Muss ich das?

Nein. Ein Initskript zu schreiben ist normalerweise nicht notwendig, da Gentoo fertige Initskripte für alle bereitgestellten Dienste liefert. Wie dem auch sei, haben Sie vielleicht einen Dienst, ohne Portage zu nutzen installiert. In diesem Fall müssen sie wahrscheinlich ein eigenes Initskript schreiben.

Benutzen Sie das von einem Dienst bereitgestellte Initskript nicht, es sei denn, es ist ausdrücklich für Gentoo geschrieben: Die Initskripte von Gentoo sind nicht mit den Initskripten anderer Distributionen kompatibel!

Layout

Das grundlegende Layout eines Initskriptes ist wie folgt beschrieben.

Befehlsauflistung 4.1: Grundlegendes Layout eines Initskriptes

#!/sbin/runscript

depend() {
  (Informationen zu Abhängigkeiten)
}

start() {
  (Befehle, notwendig zum Starten eines Dienstes)
}

stop() {
  (Befehle, notwendig zum Stoppen eines Dienstes)
}

Jedes Initskript muss eine start Funktion definieren. Alle anderen Abschnitte sind optional.

Abhängigkeiten

Es gibt zwei Abhängigkeits-artige Einstellungen, die Sie definieren können, die das Starten und die Reihenfolge der Init-Skripte beeinflussen: use und need. Von diesen abgesehen gibt es noch zwei Methoden, die die Reihenfolge beeinflussen: before und after. Diese letzten beiden sind keine eigentlichen Abhängigkeiten - durch sie schlägt das Init-Skript nicht fehl, falls das angegebene Init-Skript nicht zum Starten vorgesehen ist (oder es Probleme mit dem Starten gibt).

  • Die Angabe use informiert das Init-System, dass das Init-Skript Funktionalität des angegebenen Skripts nutzt, aber nicht direkt davon abhängt. Gute Beispiele sind use logger und use dns. Wenn diese Dienste verfügbar sind, können sie für einen guten Zweck verwendet werden, aber auch wenn Sie keinen Logger oder DNS-Server haben, wird der Dienst trotzdem funktionieren. Falls die angegebenen Dienste existieren, werden sie vor dem Skript, das sie benutzt, gestartet.
  • Die Angabe need ist eine harte Abhängigkeit. Sie bedeutet, dass das Skript, das ein anderes Skript benötigt, nicht startet, bevor das andere Skript erfolgreich gestartet hat. Ferner wird dieses Skript neu gestartet, wenn das andere Skript neu gestartet wird.
  • Wenn before genutzt wird, wird das Skript vor dem angegebenen Skript gestartet, falls das angegebene Teil des Init-Levels ist. Beispielsweise wird ein Init-Skript namens xdm, das before alsasound definiert, vor dem Skript alsasound starten, aber nur, wenn alsasound auch im gleichen Init-Level zum Starten vorgemerkt ist. Falls alsasound nicht zum Starten vorgemerkt ist, dann hat diese Einstellung keine Auswirkungen und xdm wird gestartet, wann auch immer das Init-System es für am sinnvollsten hält.
  • Genauso informiert after das Init-System darüber, dass das gegebene Skript nach dem angegebenen Skript gestartet werden soll, falls das angegebene Skript Teil des Init-Levels ist. Falls nicht, hat die Einstellung keine Auswirkungen und das Skript wird gestartet, wann auch immer das Init-System es für am sinnvollsten hält.

Aus diesen Erklärungen sollte hervorgehen, dass need die einzige "wahre" Abhängigkeitseinstellung ist, da sie bestimmt, ob das Skript gestartet wird oder nicht. Alle anderen sind lediglich Hinweise für das Init-System, in welcher Reihenfolge die Skripte gestartet werden können bzw. sollen.

Wenn Sie sich nun einige von Gentoos vielen Init-Skripten anschauen, werden Sie merken, dass einige Abhängigkeiten auf Dinge haben, die keine Init-Skripte sind. Diese "Dinge" nennen wir Virtuals.

Eine virtual Abhängigkeit stellt eine Abhängigkeit dar, die nicht nur von diesem Dienst zur Verfügung gestellt wird. Ihr Initskript kann von einem System-Protokollierdienst abhängen, aber es gibt ja bekanntlich mehrere davon (metalogd, syslog-ng, sysklogd, ...). Da Sie ja nicht jeden einzelnen von diesen brauchen (ein vernünftige System hat nicht jeden dieser Protokollierer installiert und gestartet), stellen wir sicher, dass all diese Dienste eine virtuelle Abhängigkeit bereitstellen.

Lassen Sie uns einen Blick auf die Abhängigkeitsinformationen des Postfix-Dienstes werfen.

Befehlsauflistung 4.2: Abhängigkeitsinformationen zu Postfix

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

Wie Sie sehen können, der Postfix-Dienst:

  • benötigt die (virtual) net Abhängigkeit (die z.B. von /etc/init.d/net.eth0 bereitgestellt wird)
  • nutzt die (virtual) logger Abhängigkeit (die z.B. von /etc/init.d/syslog-ng bereitgestellt wird)
  • nutzt die (virtual) dns Abhängigkeit (die z.B. von /etc/init.d/named bereitgestellt wird)
  • stellt die (virtual) mta Abhängigkeit (die allen Mail-Servern gemein ist) zur Verfügung

Reihenfolge kontrollieren

Wie im vorherigen Abschnitt beschrieben, können Sie dem Init-System sagen, in welcher Reihenfolge die Skripte gestartet (oder gestoppt) werden sollen. Diese Reihenfolge wird durch die Abhängigkeitsangaben use und need beeinflusst, aber auch durch die Reihenfolgenangaben before und after. Da wir diese Angaben bereits erklärt haben, schauen wir uns beispielhaft das Init-Skript des Dienstes Portmap an.

Befehlsauflistung 4.3: Die depend() Funktion im Portmap-Dienst

depend() {
  need net
  before inetd
  before xinetd
}

Sie können auch den "*" Ausdruck benutzen, um alle Dienste im selben Runlevel zu erwischen, obwohl das nicht sehr ratsam ist.

Befehlsauflistung 4.4: Ein Initskript als erstes in einem Runlevel starten

depend() {
  before *
}

Wenn Ihr Dienst auf lokale Festplatten schreiben muss, wird er wahrscheinlich localmount benötigen. Wenn er etwas in /var/run platziert, wie ein Pidfile, dann sollte er nach bootmisc gestartet werden.

Befehlsauflistung 4.5: Beispiel der depend() Funktion

depend() {
  need localmount
  after bootmisc
}

Standardfunktionen

Neben der depend() Funktionalität benötigen Sie vielleicht auch die start Funktion. Diese enthält alle Befehle, die zum Starten Ihres Dienstes notwendig sind. Es ist ratsam, die ebegin und eend Funktionen zu nutzen, um dem User mitzuteilen, was passiert:

Befehlsauflistung 4.6: Beispiel der start() Funktion

start() {
  if [ "${RC_CMD}" = "restart" ];
  then
    # Befehle, falls ein Restart mehr erfordert als stop, start
  fi

  ebegin "Starten meines Dienstes"
  start-stop-daemon --start --exec /pfad/zu/meinem_dienst \
   --pidfile /pfad/zu/meinem_pidfile
  eend $?
}

Sowohl --exec als auch --pidfile sollten in den Start- und Stopp-Funktionen verwendet werden. Falls der der Dienst kein Pidfile erstellt sollten Sie, wenn möglich, --make-pidfile verwenden. Sie sollten dies aber testen um sicher zu sein. Verwenden Sie ansonsten kein Pidfile. Sie können zudem --quiet zu den start-stop-daemon Optionen hinzufügen; dies wird aber nicht empfohlen, solange der Dienst nicht extrem detailliert berichtet. Die Verwendung von --quiet kann die Fehlersuche behindern, wenn der Dienst nicht erfolgreich gestartet werden kann.

Eine weitere zu bemerkende Einstellung in obigem Beispiel ist das Prüfen des Inhalts der Variable RC_CMD. Im Gegensatz zum alten Init-System unterstützt das neuere System openrc keine Skript-spezifische Restart-Funktionalität. Stattdessen muss das Skript den Inhalt der Variable RC_CMD prüfen, um zu sehen, ob eine Funktion (sei es start() oder stop()) als Teil eines Restarts aufgerufen wird oder nicht.

Notiz: Stellen Sie sicher, dass --exec wirklich einen Dienst aufruft und nicht nur ein Shell-Skript, welches den Dienst startet und dann beendet. Das ist die Aufgabe des Initskripts.

Wenn Sie weitere Beispiele der start() Funktion benötigen, lesen Sie bitte den Quellcode der verfügbaren Initskripte in Ihrem /etc/init.d Verzeichnis.

Eine weitere Funktion, die Sie definieren können, ist stop(). Sie sind nicht verpflichtet, diese Funktion zu erstellen! Unser Init-System ist intelligent genug, diese selbst auszufüllen, sofern Sie den start-stop-daemon nutzen.

Hier ist ein Beispiel einer stop() Funktion:

Befehlsauflistung 4.7: Beispiel der stop() Funktion

stop() {
  ebegin "Stoppen meines Dienstes"
  start-stop-daemon --stop --exec /pfad/zu/meinem_dienst \
    --pidfile /pfad/zu/meinem_pidfile
  eend $?
}

Wenn Ihr Dienst ein anderes Skript ausführt (zum Beipsiel Bash, Python oder Perl) und das Script später den Namen ändert (zum Beispiel von foo.py auf foo) werden Sie --name zum start-stop-daemon hinzufügen müssen. Sie müssen den Namen angeben, auf den Ihr Skript geändert wird. In diesem Beispiel startet ein Dienst foo.py, welches seinen Namen auf foo ändert:

Befehlsauflistung 4.8: Ein Dienst, der das Skript foo startet

start() {
  ebegin "Starten meines Skripts"
  start-stop-daemon --start --exec /pfad/zu/meinem_skript \
    --pidfile /pfad/zu/meinem_pidfile --name foo
  eend $?
}

Für den start-stop-daemon existiert auch eine exzellente man-Seite, falls Sie weitere Informationen benötigen.

Befehlsauflistung 4.9: Aufrufen der man-Seite des start-stop-daemon

$ man start-stop-daemon

Die Syntax für Gentoos Initskripte basiert auf der POSIX-Shell; es steht Ihnen also frei, sh-kompatible Konstrukte innerhalb Ihrer Initskripte zu verwenden. Verwenden Sie keine anderen Konstrukte, z.B. bash-spezifische, um sicherzustellen, dass die Skripte auch dann noch funktionieren, wenn Gentoo Änderungen am Init-System vornimmt.

Eigene Optionen hinzufügen

Falls Sie wollen, dass Ihr Initskript mehr Optionen besitzt, als wir bisher aufgeführt haben, sollten Sie Ihre Option zur extra_commands Variable hinzufügen und eine Funktion mit demselben Namen wie die Option erstellen. Zum Beispiel, um eine Funktion namens restartdelay zu unterstützen:

Befehlsauflistung 4.10: Unterstützung der restartdelay Option

extra_commands="restartdelay"

restartdelay() {
  stop
  sleep 3    # Warte 3 Sekunden vor dem Neustart
  start
}

Wichtig: Die Funktion restart() kann in openrc nicht überschrieben werden!

Variablen zur Dienstkonfiguration

Sie müssen nichts machen, um eine Konfigurationsdatei in /etc/conf.d zu unterstützen: Wenn Ihr Initskript ausgeführt wird, wird folgendes automatisch zu Grunde gelegt (d.h. diese Variablen können benutzt werden):

  • /etc/conf.d/<Ihr Initskript>
  • /etc/conf.d/basic
  • /etc/rc.conf

Falls Ihr Initskript eine virtuelle Abhängigkeit (wie net) bereitstellt, wird dazu die Datei, die mit dieser Abhängigkeit in Verbindung gebracht wird (wie /etc/conf.d/net), auch zu Grunde gelegt.

4.e. Ändern des standardmäßigen Runlevel-Verhaltens

Wer kann hiervon profitieren?

Viele Laptop-Benutzer kennen die Situation: Daheim müssen Sie net.eth0 starten, wenn Sie unterwegs sind möchten sie net.eth0 nicht starten (weil grade kein Netzwerk verfügbar ist). Mit Gentoo können Sie das Runlevel Verhalten nach Ihren eigenen Vorstellungen anpassen.

Zum Beispiel können Sie ein zweites Runlevel "default" anlegen, dass Sie booten können mit anderen Initskripten die diesem Runlevel zugeordnet sind. Sie können während des Booten wählen, welches default Runlevel Sie benutzen möchten.

softlevel benutzen

Zunächst erstellen Sie das Runlevel Verzeichnis für Ihr zweites "default" Runlevel. Als Beispiel werden wir das offline Runlevel erstellen:

Befehlsauflistung 5.1: Erstellen eines Runlevel-Verzeichnisses

# mkdir /etc/runlevels/offline

Fügen Sie die notwendigen Initskripte in das neu erstelle Runlevel. Wenn Sie zum Bespiel eine exakte Kopie Ihres aktuellen default Runlevels anlegen möchten, lediglich ohne net.eth0:

Befehlsauflistung 5.2: Hinzufügen der notwendigen Initskripte

(Kopieren Sie alle Dienste vom default zum offline Runlevel)
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Entfernen unerwünschter Dienste vom offline Runlevel)
# rc-update del net.eth0 offline
(Anzeigen aktivierter Dienste für das offline Runlevel)
# rc-update show offline
(Verkürzte Beispielsausgabe)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

Obwohl net.eth0 aus dem Runlevel offline entfernt wurde, könnte udev trotzdem versuchen jegliche Geräte, die es findet, zu starten und die passenden Dienste aufzurufen. Diese Funktionalität nennt sich Hotplugging. Standardmäßig verwendet Gentoo kein Hotplugging.

Falls Sie Hotplugging verwenden wollen, aber nur für eine ausgewählte Menge an Skripten, verwenden Sie die rc_hotplug Variable in /etc/rc.conf:

Befehlsauflistung 5.3: Deaktivierung der von Geräten gestarteten Dienste in /etc/rc.conf

# Hotplugging erlauben für net.wlan sowie alle anderen Dienste, die nicht auf net.* matchen

rc_hotplug="net.wlan !net.*"

Notiz: Für weitere Informationen zu Diensten, die von Geräten gestartet werden, schauen Sie sich bitte die Kommentare in /etc/rc.conf an.

Editieren Sie nun die Bootloader-Konfiguration und fügen einen neuen Eintrag für das Runlevel offline hinzu. Zum Beispiel in /boot/grub/grub.conf:

Befehlsauflistung 5.4: Einen zusätzlichen Eintrag für das Runlevel offline hinzufügen

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

Voilà, Sie sind soweit. Wenn Sie Ihr System booten und die neu hinzugefügte Option auswählen wird das System das Runlevel offline anstelle des Runlevels default starten.

Bootlevel benutzen

Die Nutzung von bootlevel ist komplett analog zu softlevel. Der einzige Unterschied ist, dass Sie hier ein zweites "boot" Runlevel anstelle eines zweiten "default" Runlevel definieren können.

5. Umgebungsvariablen

5.a. Umgebungsvariablen

Was sind Umgebungsvariablen?

Eine Umgebungsvariable ist ein Objekt mit vorgegebenem Namen, welches Informationen für eine oder mehrere Anwendungen bereitstellt. Viele Benutzer (speziell diejenigen, die neu in Linux sind) finden dies etwas seltsam oder schlecht handhabbar. Diese Annahme ist ein Fehler: Durch Verwendung von Umgebungsvariablen kann die Konfigurationseinstellung von einem oder mehreren Programmen sehr einfach geändert werden.

Wichtige Beispiele

Die folgende Tabelle enthält einige Variablen, die in einem Linux-System verwendet werden und beschreibt deren Bedeutung. Einige Beispiele werden im Anschluss an die Tabelle dargestellt.

Variable Beschreibung
PATH Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen Ihr System nach ausführbaren Dateien schaut. Wenn Sie den Namen einer ausführbaren Datei, wie zum Beispiel ls, rc-update oder emerge eingeben und sich diese Datei nicht in einem der Verzeichnisse dieser Liste befindet, wird sie nicht ausgeführt, es sei denn, Sie geben den vollständigen Pfad an (z.B. /bin/ls).
ROOTPATH Diese Variable hat die gleiche Funktion wie PATH, aber hier werden die Verzeichnisse aufgelistet, die durchsucht werden, wenn man als root einen Befehl eingibt.
LDPATH Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen Ihr dynamischer Linker nach System-Bibliotheken sucht.
MANPATH Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen der man Befehl nach der entsprechenden man-page sucht.
INFODIR Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen der info Befehl nach der entsprechenden info Seite sucht.
PAGER Diese Variable enthält den Pfad zu dem Standard-Programm, welches zur Anzeige von Dateiinhalten verwendet wird (z.B. less oder more).
EDITOR Diese Variable enthält den Pfad zu dem Standard-Programm, welches zur Bearbeitung von Dateien verwendet wird (z.B. nano oder vi).
KDEDIRS Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen KDE-spezifisches Material enthalten ist.
CONFIG_PROTECT Diese Variable enthält eine durch Leerzeichen getrennte Liste von Anwendungen, die bei Aktualisierungen durch Portage nicht angetastet werden.
CONFIG_PROTECT_MASK Diese Variable enthält eine durch Leerzeichen getrennte Liste von Anwendungen, die durch Aktualisierungen von Portage nicht geschützt sind.

Hier finden Sie eine Beispieldefinition der oben vorgestellten Variablen:

Befehlsauflistung 1.1: Beispielsdefinition

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"
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. Variablen global definieren

Das /etc/env.d Verzeichnis

Um die einzelnen Definitionen der Variablen zentralisieren zu können, wurde in Gentoo das /etc/env.d Verzeichnis angelegt. Innerhalb dieses Verzeichnisses finden Sie einige Dateien, wie zum Beispiel 00basic, 05gcc, etc. welche die Variablen der einzelnen Applikationen enthalten.

In unserem Beispiel wird, wenn Sie gcc installieren, die Datei 05gcc von dem ebuild angelegt und enthält die Definition folgender Variablen:

Befehlsauflistung 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"

In anderen Linux Distributionen werden solche Variablen in /etc/profile geändert oder hinzugefügt. Gentoo hingegen macht es so für Sie (und für Portage) deutlich einfacher die Umgebungsvariablen zu verwalten, ohne auf die vielen verschiedenen Dateien, welche Umgebungsvariablen enthalten können, eingehen zu müssen.

In unserem Fall wird, wenn ein Update von gcc durchgeführt wird, die Datei /etc/env.d/05gcc automatisch aktualisiert, ohne den Benutzer unnötig damit konfrontieren zu müssen.

Von dieser Methode profitiert nicht nur Portage sondern auch Sie als Benutzer. Gelegentlich werden Sie gefragt, ob Sie eine bestimmte Umgebungsvariable systemweit setzen wollen. Zum Beispiel bei der Variable http_proxy. Anstatt sich mit /etc/profile auseinander zu setzen müssen, legen Sie einfach eine entsprechende Datei (/etc/env.d/99local) an und tragen darin die gewünschten Definitionen ein:

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

http_proxy="proxy.server.com:8080"

Indem Sie dieselbe Datei für alle Variablen verwenden, haben Sie einen schnellen Überblick über alle Variablen, die Sie selbst gesetzt haben.

Das env-update Skript

Einige Dateien in /etc/env.d definieren die Variable PATH. Dies ist kein Fehler: Wenn Sie env-update ausführen, wird es die ganzen zusätzlichen Definitionen anhängen, bevor es die Umgebungsvariablen aktualisert. Somit wird es den Benutzern (oder Entwicklern) sehr einfach gemacht, eigene Umgebungsvariablen hinzuzufügen, ohne sich mit den bestehenden Werten herumschlagen zu müssen.

Das env-update Skript wird diese Werte in alphabetischer Reihenfolge der /etc/env.d Dateien hinzufügen. Die Dateinamen müssen mit einer zweistelligen Dezimalzahl beginnen.

Befehlsauflistung 2.3: Update-Reihenfolge von env-update

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

Die Verkettung von Variablen geschieht nicht bei allen, sondern nur bei folgenden Variablen: ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH und PYTHONPATH. Für alle anderen Variablen wird der zuletzt definierte Wert (in alphabetischer Reihenfolge der Dateien in /etc/env.d) verwendet.

Sie können dieser Liste weitere Variablen hinzufügen indem Sie den Variablennamen zu einer der Variablen COLON_SEPARATED und SPACE_SEPARATED (ebenfalls in einer env.d Datei) hinzufügen.

Wenn Sie env-update ausführen, wird das Skript alle Umgebungsvariablen erstellen und sie in /etc/profile.env ablegen (welches von /etc/profile verwendet wird). Zusätzlich wird es die Informationen aus der LDPATH Variable verwenden, um /etc/ld.so.conf anzulegen. Anschließend wird es ldconfig ausführen, um für den dynamischen Linker die Datei /etc/ld.so.cache neu zu erstellen.

Um sofort von den Änderungen in env-update profitieren zu können, ohne das System neu zu booten, müssen Sie nur folgenden Befehl ausführen. Den meisten Benutzern wird er noch von der Installationsanleitung her bekannt sein:

Befehlsauflistung 2.4: Umgebungsvariablen aktualisieren

# env-update && source /etc/profile

Notiz: Der obige Befehl aktualisiert nur die Variablen im aktuellen Terminal, in neuen Konsolen und in deren Nachfolgern. Daher müssen Sie, wenn Sie mit X11 arbeiten, entweder source /etc/profile in jedem neuen Terminal, dass Sie öffnen, eintippen oder X neustarten, damit alle Terminals per source die neuen Variablen erhalten. Wenn Sie einen Loginmanager verwenden, müssen Sie root werden und /etc/init.d/xdm restart eintippen. Wenn nicht, dann müssen Sie sich ausloggen und wieder einloggen damit X Nachfolger mit den neuen Variablenwerten erzeugt.

Wichtig: Sie können Shell-Variablen nicht verwenden, wenn Sie andere Variablen definieren. Das bedeutet, dass Dinge wie FOO="$BAR" (wo $BAR eine weitere Variable ist) nicht erlaubt sind.

5.c. Variablen lokal definieren

Benutzerspezifisch

Nicht immer wollen Sie eine Umgebungsvariable global definieren. Wenn Sie zum Beispiel /home/mein_benutzer/bin und das momentane Arbeitsverzeichnis (das Verzeichnis in dem Sie sich befinden) zu der PATH Variable hinzufügen wollen, es aber nicht allen anderen Benutzern ebenfalls in ihre PATH Variable schreiben wollen, dann sollten Sie die Variable in ~/.bashrc oder ~/.bash_profile lokal definieren:

Befehlsauflistung 3.1: Erweitern des PATH für lokale Verwendung in ~/.bashrc

(Ein Doppelpunkt gefolgt von keinem Verzeichnis wird als das momentane Arbeitsverzeichnis angesehen)
PATH="${PATH}:/home/my_user/bin:"

Wenn Sie sich nun erneut anmelden, werden Ihre PATH Variablen aktualisiert.

Sitzungsspezifisch

Mannchmal müssen die einzelnen Definitionen noch strikter gehandhabt werden. Wenn Sie zum Beispiel Binärdateien von einem temporär angelegtem Verzeichnis verwenden wollen, ohne den Pfad zu den entsprechenden Daten anzulegen, oder ~/.bashrc für diesen Verwendungszweck extra abändern zu müssen.

In diesem Fall können Sie PATH für Ihre aktuelle Sitzung mit dem export Befehl setzen. Diese Einstellungen bleiben Ihnen bis zum nächsten Logout erhalten.

Befehlsauflistung 3.2: Setzen einer sitzungsspezifischen Variable

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

C. Arbeiten mit Portage

1. Dateien und Verzeichnisse

1.a. Portage Dateien

Konfigurationsrichtlinien

Portage kommt mit einer Standardkonfiguration gespeichert in /etc/make.globals daher. Wenn Sie einen Blick auf die Datei werfen, werden Sie feststellen, dass sämtliche Portage Konfiguration durch Variablen durchgeführt wird. Welche Variablen Portage kennt und was diese bedeuten beschreiben wir später.

Da viele Konfigurationsanweisungen sich zwischen verschiedenen Architekturen unterscheiden hat Portage auch Standardkonfigurationsdateien welche Teile Ihres Profils sind. Durch den symbolischen Link /etc/portage/make.profile wird auf Ihr Profil verwiesen. Die Einstellungen von Portage werden durch die make.defaults Dateien Ihres Profils und aller übergeordneten Profile gesetzt. Wir erklären später mehr zu den Profilen und zum /etc/make.profile Verzeichnis.

Wenn Sie planen Änderungen an Konfigurationsvariablen vorzunehmen verändern Sie nicht /etc/make.globals oder make.defaults. Anstelle dessen benutzen Sie /etc/portage/make.conf, welche eine Vorrangstellung gegenüber den vorher genannten Dateien hat. Sie finden ebenfalls eine /usr/share/portage/config/make.conf.example. Wie der Name impliziert ist dies eine Beispieldatei, Portage greift nicht auf diese Datei zu.

Sie können eine Portage Konfigurationsvariable auch als Umgebungsvariable deklarieren, wir empfehlen dies jedoch nicht.

Profile spezifische Informationen

Wir sind bereits einem /etc/portage/make.profile Verzeichnis über den Weg gelaufen. Gut, dies ist nicht wirklich ein Verzeichnis, aber ein symbolischer Link zu einem Profil, standardmäßig eines innerhalb von von /usr/portage/profiles. Sie können Profile selbst erstellen und diese auch ablegen wo Sie mögen, Sie müssen lediglich den Symlink anpassen.

Ein Profile beinhaltet Architektur-spezifische Informationen für Portage, wie eine Liste aller Pakete die zum System gehören, eine Liste von Paketen die in diesem Profil nicht funktionieren (oder maskiert sind).

Benutzerspezifische Konfiguration

Wenn Sie das Verhalten von Portage bezüglich der Installation von Software beeinflussen wollen, führt kein Weg am Editieren von Dateien in /etc/portage vorbei. Es wird Ihnen wärmstens empfohlen die Dateien in /etc/portage zu benutzen und es ist wärmstens empfohlen das Verhalten von Portage nicht durch Umgebungsvariablen zu beeinflussen!

Innerhalb von /etc/portage können Sie die folgenden Dateien erstellen:

  • package.mask listet alle Pakete auf, die Sie niemals installieren wollen
  • package.unmask listet alle Pakete, die Sie installieren wollen, obwohl Gentoo Entwickler aus guten Gründen davon abraten
  • package.accept_keywords listet alle Pakete, die Sie installieren möchten, obwohl dieses Paket (noch) nicht für Ihre Architektur freigegeben wurde
  • package.use listet alle USE Flags, die Sie für ein bestimmtes Paket und nur für dieses eine Paket verwenden möchten

Dies müssen nicht Dateien sein, es können auch Verzeichnisse sein die eine Datei per Paket enthalten. Weitere Informationen über das /etc/portage Verzeichnis und eine vollständige Liste von möglichen Dateien, die Sie erstellen können finden Sie in der Portage Manpage:

Befehlsauflistung 1.1: Lesen der Portage Manpage

$ man portage

Ändern von Portage Datei- & Verzeichnisorten

Die zuvor erwähnten Konfigurationsdateien können nicht irgendwo anders abgelegt werden, Portage wird nach diesen Dateien immer an diesen genauen Stellen suchen. Portage benutzt jedoch zahlreiche weitere Orte für zahlreiche verschiedene Zwecke: Build-Verzeichnis, Quellcode Ablage, Portage Tree, ...

Alle diese Zwecke haben bekannte Standardorte, diese können jedoch nach Ihrem persönlichen Geschmack in /etc/portage/make.conf verändert werden. Der Rest dieses Kapitels erklärt Ihnen welche speziellen Orte Portage benutzt und wie Sie den Ort abändern können.

Dieses Dokument ist dennoch nicht als Referenz gedacht. Wenn Sie eine Datei suchen, die alles umfasst konsultieren Sie die make.conf Manpages:

Befehlsauflistung 1.2: Lesen der portage und make.conf Manpages

$ man portage
$ man make.conf

1.b. Ablegen von Dateien

Der Portage-Tree

Der Portage Tree befindet sich standardmäßig in /usr/portage. Dies wird durch die PORTDIR Variable definiert. Wenn Sie den Portage Tree irgendwo anders (durch Anpassen der PORTDIR Variable) ablegen, vergessen Sie nicht den /etc/portage/make.profile Symlink anzupassen.

Wenn Sie die PORTDIR Variable anpassen, möchten Sie vermutlich auch die folgenden Variablen (PKGDIR, DISTDIR, RPMDIR) anpassen, da diese den PORTDIR Wechsel nicht beachten.

Vorkompilierte Pakete

Auch wenn Portage vorkompilierte Binärpakete nicht per default nutzt gibt es eine hervorragende Unterstützung für diese. Wenn Sie Portage anweisen Binärpakete zu erstellen werden diese in /usr/portage/packages abgelegt. Dieser Ort wird durch die PKGDIR Variable definiert.

Quellcode

Quellcode von Anwendungen wird in /usr/portage/distfiles abgelegt. Dieser Ort wird durch die DISTDIR Variable festgeelgt.

Portage-Datenbank

Portage speichert den Stand Ihres Systems (welche Pakete installiert sind, welche Dateien zu welchem Paket gehören, ...) in /var/db/pkg. Editieren Sie diese Dateien nicht per Hand! Es könnte Portages Wissen über Ihr System verwüsten.

Portage-Cache

Der Portage-Cache (mit Modifikationszeitpunkt, virtuals, Informationen zum Abhängigkeitsbaum, ...) wird in /var/cache/edb gespeichert. Dieser Ort ist wirklich ein Cache: Sie können ihn ausleeren, wenn keine Portage-basierenden Anwendungen momentan laufen.

1.c. Software übersetzen

Temporäre Portage-Dateien

Portage lagert seine temporären Dateien in /var/tmp. Dies wird durch die PORTAGE_TMPDIR Variable deklariert.

Wenn Sie die Variable PORTAGE_TMPDIR ändern, möchten Sie vermutlich auch die folgenden Variablen ändern, da diese die Änderung an der PORTAGE_TMPDIR Variable nicht übernehmen: BUILD_PREFIX.

Build-Verzeichnis

Portage erstellt spezifische Build-Verzeichnisse für jedes Paket, das installiert wird, in /var/tmp/portage. Dieser Ort wird durch die Variable BUILD_PREFIX definiert.

Live-Dateisystem Ort

Standardmäßig installiert Portage alle Dateien in das aktuelle Dateisystem (/), Sie können dies jedoch durch setzen der ROOT-Umgebungsvariable ändern. Dies ist nützlich, wenn Sie neue Build-Images erstellen wollen.

1.d. Protokollierungsfunktionen

Protokollierung von Ebuilds

Portage kann für jedes Ebuild ein Protokolldatei anlegen, falls die Variable auf ein PORT_LOGDIR-Verzeichnis zeigt, in dem der Benutzer portage Schreibrechte hat. Standardmäßig ist diese Variable nicht gesetzt. Wenn Sie PORT_LOGDIR nicht setzen, werden Sie keine Erstellungsprotokolle mit dem aktuellen Protokollsystem erhalten, jedoch könnten Sie einige Nachrichten des neuen elog erhalten. Wenn Sie PORT_LOGDIR gesetzt haben und elog verwernden, werden Sie Erstellungsprotokolle und jegliche Protokolle, die von elog gespeichert werden (wie folgt erklärt), erhalten

Portage bietet eine fein abgestimmte Kontrolle über die Protokollierung durch die Verwendung von elog:

  • PORTAGE_ELOG_CLASSES: Hier legen Sie fest welche Art von Nachrichten protokolliert werden sollen. Sie können jegliche, durch Leerzeichen getrennte, Kombination von info, warn, error, log und qa verwenden.
    • info: Protokolliert "einfo" Meldungen, die von einem Ebuild ausgegeben werden.
    • warn: Protokolliert "ewarn" Meldungen, die von einem Ebuild ausgegeben werden.
    • error: Protokolliert "eerror" Meldungen, die von einem Ebuild ausgegeben werden.
    • log: Protokolliert die "elog" Meldungen, welche sich in einigen Ebuilds finden.
    • qa: Protokolliert "QA Notice" Meldungen, die von einem Ebuild ausgegeben werden.
  • PORTAGE_ELOG_SYSTEM: Dies wählt das/die Modul(e) um die Protokollmeldungen zu bearbeiten. Wenn es leer bleibt wird Protokollierung deaktiviert. Sie können jegliche, durch Leerzeichen getrennte, Kombination von save, custom, syslog, mail, save_summary und mail_summary verwenden. Sie müssen wenigstens ein Modul auswählen um elog zu verwenden.
    • save: Dies speichert ein Protokoll pro Paket in $PORT_LOGDIR/elog, oder /var/log/portage/elog, wenn $PORT_LOGDIR nicht gesetzt ist.
    • custom: Übergibt alle Nachrichten an einen, vom Benutzer in $PORTAGE_ELOG_COMMAND spezifizierten, Befehl. Dies wird später erläutert.
    • syslog: Sendet alle Nachrichten an den installierten System-Protokollierer.
    • mail: Übergibt alle Nachrichten an einen, vom Benutzer in $PORTAGE_ELOG_MAILURI spezifizierten, Mailserver. Dies wird später erläutert. Die Mail-Funktionen von elog benötigen >=portage-2.1.1.
    • save_summary: Ähnlich wie save, aber es vereint alle Nachrichten in $PORT_LOGDIR/elog/summary.log oder /var/log/portage/elog/summary.log, wenn $PORT_LOGDIR nicht gesetzt ist.
    • mail_summary: Ähnlich wie mail, sendet aber alle Nachrichten in einer einzigen Mail wenn emerge beendet.
  • PORTAGE_ELOG_COMMAND: Dies wird nur verwendet, wenn das Modul custom aktiviert ist. Hier geben Sie einen bestimmten Befehl an, der die Protokollmeldungen bearbeitet. Beachten Sie, dass Sie von zwei Variablen Gebrauch machen können: ${PACKAGE} ist der Paketname und die Version, während ${LOGFILE} der absolute Pfad zur Protokolldatei ist. Hier ist eine mögliche Anwendung:
    • PORTAGE_ELOG_COMMAND="/pfad/zum/protokollierer -p '\${PACKAGE}' -f '\${LOGFILE}'"
  • PORTAGE_ELOG_MAILURI: Dies enthält Einstellungen für das Modul mail, wie zum Beispiel Addresse, Benutzer, Passwort, Mailserver und Portnummer. Die Standardeinstellung ist "root@localhost localhost".
  • Hier ist ein Beispiel für einen SMTP-Server, der eine Authentifizierung basierend auf Benutzername und Passwort an einem bestimmten Port benötigt (der Standardport ist 25):
    • PORTAGE_ELOG_MAILURI="benutzer@eine.domain benutzername:passwort@smtp.eine.domain:995"
  • PORTAGE_ELOG_MAILFROM: Erlaubt es Ihnen die "Von" Adresse der Protokollmails zu setzen. Der Standard ist Portage, wenn nicht gesetzt.
  • PORTAGE_ELOG_MAILSUBJECT: Erlaubt es Ihnen eine Betreffzeile für die Protokollmails zu setzen. Beachten Sie, dass Sie zwei Variablen verwenden können: ${PACKAGE} wird den Namen des Pakets und die Version anzeigen, während ${HOST} der Fully Qualified Domain-Name des Hosts ist, auf dem Portage ausgeführt wird.
  • Hier ist eine mögliche Anwendung:
    • PORTAGE_ELOG_MAILSUBJECT="Paket \${PACKAGE} wurde auf \${HOST} mit mit emerge installiert und produzierte einige Meldungen

Wichtig: Wenn Sie enotice mit Portage-2.0.* verwendet haben, müssen Sie enotice komplett entfernen, da es nicht mit elog kompatibel ist.

2. Konfiguration durch Variablen

2.a. Konfiguration von Portage

Wie bereits erwähnt können Sie Portage durch zahlreiche Variablen, die Sie in /etc/portage/make.conf definieren, an Ihre persönlichen Bedürfnisse anpassen. Lesen Sie als weitere und vollständige Referenz die make.conf Manpage:

Befehlsauflistung 1.1: Lesen der make.conf Manpage

$ man make.conf

2.b. Build-spezifische Optionen

Configure und Compiler Optionen

Wenn Portage Anwendungen übersetzt wendet es die folgenden Variablen auf den Compiler, bzw. das Configure-Skript an:

  • CFLAGS & CXXFLAGS definieren die gewünschten Flags für C and C++ Kompilierung.
  • CHOST definiert die Build Host Information für das Configure-Skript der Anwendung
  • MAKEOPTS wird an das make Kommando weitergegeben und ist für gewöhnlich gesetzt, um die Menge der Parallelität während der Kompilierung zu bestimmen. Weitere Informationen zu Optionen von make finden Sie in der make Manpage.

Die USE Variable wird ebenfalls während der Configure- und Kompilierungsschritte benutzt, diese Variable wurde jedoch schon ausführlich in vorgehenden Kapitel behandelt.

Merge Optionen

Wenn Portage eine neuere Version einer bestimmten Anwendung installiert hat, wird es die nicht mehr benötigten Dateien der alten Version von Ihrem System entfernen. Portage gibt dem Benutzer eine 5 Sekunden lange Pause, bevor das Deinstallieren der alten Version begonnen wird. Diese 5 Sekunden sind in der CLEAN_DELAY Variable definiert.

Sie können emerge sagen, dass es bestimmte Optionen, jedes Mal wenn es ausgeführt wird, verwenden soll, indem Sie EMERGE_DEFAULT_OPTS setzen. Einige nützliche wären --ask, --verbose, --tree, usw.

2.c. Schutz von Konfigurationsdateien

Abgesicherte Pfade

Portage überschreibt Dateien einer alten Version bei der Installation einer neuen Version, sofern diese sich nicht in einem geschützten Verzeichnis befinden. Diese geschützten Verzeichnisse sind durch die CONFIG_PROTECT Variable definiert und sind im Normalfall Verzeichnisse, die Konfigurationsdateien enthalten. Es können getrennt durch ein Leerzeichen beliebig viele Pfade angegeben werden.

Eine Datei, die in ein solches geschütztes Verzeichnis geschrieben werden soll, wird umbenannt und der Anwender darüber informiert, dass eine neue Version einer (wahrscheinlich) Konfigurationsdatei vorliegt.

Die aktuellen CONFIG_PROTECT Einstellungen können Sie sich mittels emerge --info anzeigen lassen:

Befehlsauflistung 3.1: Anzeigen der CONFIG_PROTECT Einstellungen

$ emerge --info | grep 'CONFIG_PROTECT='

Weitere Informationen über den Schutz von Konfigurationsdateien sind im Abschnitt CONFIGURATION FILES der man Seite von emerge verfügbar:

Befehlsauflistung 3.2: Weitere Informationen über den Schutz von Konfigurationsdateien

$ man emerge

Verzeichnisse ausschließen

Um den Schutz von einzelnen Unterverzeichnissen aufzuheben können Sie die CONFIG_PROTECT_MASK Variable nutzen.

2.d. Download Optionen

Server Auswahl

Wenn angeforderte Informationen oder Daten auf Ihrem System nicht verfügbar sind versucht Portage diese aus dem Internet zu beziehen. Die Server für die verschiedenen Informationen und Daten werden durch die folgenden Variablen deklariert:

  • GENTOO_MIRRORS definiert eine Liste von Servern die Quellcode (Distfiles) enthalten
  • PORTAGE_BINHOST definiert einen bestimmten Server der vorkompilierte Pakete für Ihr System bereit hält

Eine dritte Konfiguration beinhaltet den Rsync Server, den Sie zum aktualisieren Ihres Portage Tree nutzen möchten:

  • SYNC definiert einen bestimmten Server von dem Sie den Portage Tree beziehen wollen

Die GENTOO_MIRRORS und SYNC Variablen können automatisch durch die mirrorselect Anwendung gesetzt werden. Dazu müssen Sie zunächst mirrorselect installieren. Für weitere Informationen schauen Sie in die Hilfe von mirrorselect:

Befehlsauflistung 4.1: Weitere Informationen über mirrorselect

# mirrorselect --help

Wenn Ihre Umgebung vorschreibt einen Proxy-Server zu nutzen können Sie die http_proxy, ftp_proxy und RSYNC_PROXY Variablen nutzen um einen Proxy-Server zu deklarieren.

Download Kommandos

Wenn Portage Quellcode beziehen muss wird standardmäßig wget benutzt. Sie können dies durch die FETCHCOMMAND Variable anpassen.

Portage kann halbfertige Downloads fortsetzen. Es benutzt standardmäßig wget, Sie können dies durch die RESUMECOMMAND Variable anpassen.

Stellen Sie sicher, dass Ihre FETCHCOMMAND und RESUMECOMMAND Variablen den Quellcode im richtigen Verzeichnis ablegen. Innerhalb der Variablen sollten Sie \${URI} und \${DISTDIR} benutzen, um die Quellcode URI und das Distfiles Verzeichnis anzugeben.

Sie können weiterhin mit FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP und so weiter protokollspezifische Handler erstellen.

Rsync-Einstellungen

Sie können den von Portage ausgeführten Rsync-Befehl zur Aktualisierung des Portage-Tree nicht ändern. Sie können jedoch einige Variablen, die in Verbindung zu diesem Rsync-Vorgang stehen, anpassen:

  • PORTAGE_RSYNC_OPTS setzt zahlreiche Standardvariablen, jede durch Leerzeichen getrennt, die während des Sync-Vorgangs verwendet werden. Diese sollten nicht geändert werden, wenn Sie nicht exakt wissen, was Sie tun. Beachten Sie bitte, dass bestimmte Optionen, die absolut zwingend benötigt werden, immer verwendet werden, auch wenn PORTAGE_RSYNC_OPTS leer ist.
  • PORTAGE_RSYNC_EXTRA_OPTS kann verwendet werden um zusätzliche Optionen für den Sync-Vorgang zu setzen. Alle Optionen sollten durch ein Leerzeichen getrennt sein.
    • --timeout=<zahl>: Dies definiert die Anzahl von Sekunden, welche die Verbindung idle sein kann, bevor rsync für die Verbindung einen Zeitüberlauf feststellt. Diese Variable hat den Standardwert 180. Modembenutzer und Personen mit langsamen Rechnern werden jedoch unter Umständen den Wert auf 300 oder höher setzen wollen.
    • --exclude-from=/etc/portage/rsync_excludes: Dies verweist auf eine Datei mit Liste von Paketen und/oder Kategorien, die rsync während des Aktualisierungsvorgangs ignorieren soll. In diesem Fall verweist es auf /etc/portage/rsync_excludes. Bitte lesen Einen Teil des Portage-Tree verwenden für die Syntax in dieser Datei.
    • --quiet: Reduziert die Ausgabe für den Bildschirm
    • --verbose: Gibt eine komplette Dateiliste aus
    • --progress: Gibt einen Fortschrittsbalken für jede Datei aus
  • PORTAGE_RSYNC_RETRIES definiert wie oft rsync versuchen soll mit einem Mirror zu verbinden, auf den in der SYNC-Variable verwiesen wird, bevor es aufgibt. Diese Variable hat den Standardwert 3.

Für weitere Informationen über diese und andere Optionen, lesen Sie bitte man rsync.

2.e. Gentoo Konfiguration

Zweigauswahl

Sie können den standardmäßigen Zweig mit der ACCEPT_KEYWORDS Variable auswählen. Per default wird der stabile Zeig Ihrer Architektur genutzt. Weitere Informationen zu Software Zweigen innerhalb von Gentoo entnehmen Sie dem nächsten Kapitel.

Portage Features

Sie können zahlreiche Portage Optionen durch die FEATURES Variable aktivieren. Die Portage Optionen wurden in vorhergehenden Kapiteln behandelt, wie z.B. in Portage Features.

2.f. Portage Verhalten

Ressourcenmanagement

Mit der PORTAGE_NICENESS Variable können Sie den Nice Wert anpassen, mit dem Portage ausgeführt wird. Der Wert der PORTAGE_NICENESS Variable wird zum aktuellen Nice Wert hinzugefügt.

Für weitere Informationen über Nice Werte schauen Sie in die nice Manpage:

Befehlsauflistung 6.1: Weitere Informationen über nice

$ man nice

Ausgabeverhalten

Mit der NOCOLOR Variable können Sie die Ausgabe von farbigen Meldungen durch Portage deaktivieren. Der Standardwert ist false.

3. Mischen von Softwarezweigen

3.a. Einen Zweig benutzen

Der stabile Zweig

Die ACCEPT_KEYWORDS Variable definiert welchen Softwarezweig Sie auf Ihrem System benutzen wollen. Standardmäßig wird der stabile Zweig, also zum Beispiel x86, benutzt.

Wir empfehlen Ihnen nur den stabilen Zweig zu benutzen. Wenn jedoch Stabilität für Sie nicht sonderlich wichtig ist und Sie Gentoo mit dem Einbringen von Fehlermeldungen in http://bugs.gentoo.org Gentoo unterstützen möchten, lesen Sie weiter.

Der Test Zweig

Wenn Sie mehr aktuelle Software benutzen möchten macht es Sinn, über die Nutzung des Test Zweiges nachzudenken. Um diesen Testzweig zu nutzen fügen Sie ein ~ vor Ihrer Architektur ein.

Der Testzweig beinhaltet genau das was der Name verspricht - Tests. Wenn ein Paket sich in Test befindet, dann bedeutet es dass die Entwickler der Meinung sind, dass es funktionsfähig ist aber noch nicht ausgiebig getestet worden ist. Es könnte sehr gut sein, dass Sie die erste Person wären, welche einen Bug in einem bestimmten Paket entdeckt. In diesem Fall könnten Sie einen Bugreport erstellen und die Entwickler so davon in Kenntnis setzen.

Wappnen Sie sich aber dafür, dass Probleme mit der Stabilität auftreten, die Handhabung von Paketen nicht perfekt funktioniert (wie z.B. falsche/fehlende Abhängigkeiten) oder Pakete kaputt sind. Wenn Sie nicht wissen, wie Gentoo funktioniert und wie man solche Probleme löst, empfehlen wir Ihnen, dass Sie beim stabilen und getesteten Zweig bleiben.

Um zum Beispiel den Testzweig der x86 Architektur zu nutzen editieren Sie /etc/portage/make.conf wie folgt:

Befehlsauflistung 1.1: Setzen der ACCEPT_KEYWORDS Variable

ACCEPT_KEYWORDS="~x86"

Wenn Sie nun Ihr System aktualisieren wollen werden Sie feststellen, dass viele Pakete aktualisiert werden. Bedenken Sie jedoch: Wenn Sie einmal in den Testzweig gewechselt sind, gibt es für gewöhnlich keinen einfachen Weg zurück zum stabilen, offiziellen Zweig (außer mit Backups, natürlich).

3.b. Den stabilen mit dem Testzweig vermischen

Die Datei package.accept_keywords

Sie können Portage anweisen, bei bestimmten Paketen den Testzweig zu benutzen, für den Rest des Systems jedoch den stabilen Zweig. Um dies zu erreichen fügen Sie die Paketkategorie und den Paketnamen in /etc/portage/package.accept_keywords ein. Sie können auch ein Verzeichnis (mit demselben Namen) erstellen und das Paket in Dateien innerhalb dieses Verzeichnisses auflisten. Um zum Beispiel für gnumeric den Testzweig zu benutzen:

Befehlsauflistung 2.1: /etc/portage/package.accept_keywords Konfiguration für gnumeric

app-office/gnumeric

Testen von bestimmten Versionen

Wenn Sie eine bestimmte Version aus dem Testzweig nutzen wollen, aber nicht generell die Version aus dem Testzweig installieren möchten, können Sie dies ebenfalls in package.accept_keywords angeben. In diesem Fall müssen Sie den = Operator nutzen. Sie können dank der <=, <, > or >= Operatoren auch eine Reihe von Versionen eines Pakets freischalten.

In jedem Fall: Wenn Sie Versionsinformationen hinzufügen müssen Sie einen Operator angeben. Wenn Sie keine Versionsinformationen hinzufügen können Sie keinen Operator nutzen.

Im folgenden Beispiel geben wir gnumeric-1.2.13 frei:

Befehlsauflistung 2.2: Nutzen einer speziellen gnumeric Version

=app-office/gnumeric-1.2.13

3.c. Nutzung maskierter Pakete

Die Datei package.unmask

Wichtig: Die Gentoo-Entwickler unterstützen die Verwendung dieses Features nicht. Bitte gehen Sie mit entsprechender Vorsicht vor, wenn Sie dieses verwenden. Anfragen zu Support, welche in Verbindung mit package.unmask und/oder package.mask stehen, werden nicht beantwortet. Sie sind gewarnt worden.

Wenn ein Paket von Gentoo-Entwicklern maskiert wird und Sie dennoch (Sie werden sicherlich einen guten Grund haben) dieses Paket nutzen möchten (trotz der Gründe, die in package.mask (standardmäßig in /usr/portage/profiles) genannt sind), fügen Sie die gewünschte Version (normalerweise ist dies die exakt gleiche Zeile aus profiles) in der Datei /etc/portage/package.unmask (oder in einer Datei in dem Verzeichnis, wenn es ein Verzeichnis ist) ein.

Wenn zum Beispiel =net-mail/hotwayd-0.8 maskiert ist, können Sie es durch ein Hinzufügen der exakt gleichen Zeile zur package.unmask demaskieren:

Befehlsauflistung 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

Notiz: Falls ein Eintrag in /usr/portage/profiles/package.mask einen Bereich an Paketversionen enthält, müssen Sie nur die Version(en) unmasken, die Sie wirklich verwenden wollen. Bitte lesen Sie den vorherigen Abschnitt, in dem erklärt wird, wie Versionen in der package.unmask spezifiziert werden.

Die Datei package.mask

Wenn Sie nicht wollen, dass Portage bestimmt Pakete oder bestimmt Versionen von Paketen installiert, bzw. grundsätzlich installieren kann, können Sie dieses Paket (oder die Version) durch das Hinzufügen einer entsprechenden Zeile zur /etc/portage/package.mask (entweder in der Datei oder in einer Datei in dem Verzeichnis) maskieren.

Wenn Sie zum Beispiel nicht wollen, dass Portage neuere Kernelquellen als gentoo-sources-2.6.8.1 installiert, fügen Sie die folgende Zeile zur package.mask hinzu:

Befehlsauflistung 3.2: /etc/portage/package.mask Beispiel

>sys-kernel/gentoo-sources-2.6.8.1

4. Zusätzliche Portage Tools

4.a. dispatch-conf

Das Programm dispatch-conf hilft Ihnen bei der Einbindung der ._cfg0000_<name> Dateien. Diese ._cfg0000_<name> Dateien werden von Portage angelegt, wenn eine Datei die innerhalb einem durch die CONFIG_PROTECT Variable abgedecktem Pfad überschrieben werden soll.

Mit dispatch-conf können Sie Aktualisierungen an Ihren Konfigurationsdateien einbringen und alle Änderungen nachvollziehen. dispatch-conf legt alle Änderungen zwischen Konfigurationsdateien als Patches oder in einem RCS Revisionssystem ab. Das bedeutet, dass wenn Sie einen Fehler begehen bei der Aktualisierung einer Konfigurationsdatei Sie zu jedem Zeitpunkt zur vorherigen Version Ihrer Konfigurationsdatei zurückkehren können.

Wenn Sie dispatch-conf verwenden können Sie Konfigurationsdateien so belassen wie sie sind, die neue Konfigurationsdatei verwenden, die aktuelle bearbeiten, oder die Änderungen interaktiv einpflegen. dispatch-conf hat zudem noch einige weitere hilfreiche Funktionen:

  • Automatisches mergen von Konfigurationsaktualisierungen, wenn Änderungen nur in kommentierten Bereichen stattgefunden haben
  • Automatisches mergen von Konfigurationsdateien, wenn die Änderungen nur in der Menge von Leerzeichen bestehen

Editieren Sie zuerst /etc/dispatch-conf.conf und erstellen Sie das Verzeichnis, welches in der Variable archive-dir genannt wird.

Befehlsauflistung 1.1: dispatch-conf ausführen

# dispatch-conf

Wenn Sie dispatch-conf ausführen werden Sie durch jede veränderte Konfigurationsdatei, eine nach der anderen, geführt. Drücken Sie u zur Aktualisierung (ersetzen) der aktuellen Konfigurationsdatei durch die neuere und um mit der nächsten Datei fortzufahren. Drücken Sie z um die neue Konfigurationsdatei zu löschen und um mit der nächsten Datei fortzufahren. Wenn alle Konfigurationsdateien abgearbeitet wurden wird dispatch-conf beendet. Sie können es auch jeder Zeit durch drücken von q beenden.

Ziehen Sie für weitere Informationen die Manpage von dispatch-conf zu Rate. Diese zeigt Ihnen wie man interaktiv aktuelle und neue Konfigurationsdateien einpflegt, neue Konfigurationsdateien editiert, die Unterschiede zwischen Dateien betrachtet, und mehr.

Befehlsauflistung 1.2: Lesen der dispatch-conf Manpage

$ man dispatch-conf

4.b. etc-update

Sie können auch etc-update benuzten um Konfigurationsdateien zusammenzuführen. Es ist nicht so einfach zu benuzten wie dispatch-conf, noch hat es alle seine Funktionen, bietet aber ein interaktiven Modus für die Zusammenführung und kann außerdem triviale Änderungen automatisch einbinden.

Jedoch, anders als bei dispatch-conf, wird etc-update alte Versionen Ihrer Konfigurationsdateien nicht erhalten. Sowie sie eine Datei aktualisieren ist die alte Version für immer verloren! Sein Sie also vorsichtig, die Benutzung von etc-update ist erheblich unsicherer als die Verwendung von dispatch-conf.

Befehlsauflistung 2.1: etc-update ausführen

# etc-update

Nach dem Mischen der einfachen Änderungen wird Ihnen eine Liste mit allen geschützten Dateien, die auf eine Aktualisierung warten, angezeigt. Zum Schluss wird Ihnen eine Liste mit den möglichen Optionen angezeigt:

Befehlsauflistung 2.2: etc-update Optionen

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'):

Wenn Sie -1 eingeben wird etc-update beendet und es werden keine weiteren Änderungen durchgeführt. Wenn Sie -3 oder -5 eingeben werden alle gelisteten Konfigurationsdateien mit den neuen Versionen überschrieben. Es ist daher sehr wichtig, dass Sie zunächst alle Konfigurationsdateien auswählen, die nicht automatisch aktualisiert werden sollen. Dies geschieht durch das Eingeben der Zahl links neben der Konfigurationsdatei.

Als Beispiel wählen wir /etc/pear.conf aus:

Befehlsauflistung 2.3: Aktualisieren einer spezifischen Konfigurationsdatei

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

Sie sehen nun die Änderungen zwischen diesen beiden Dateien. Wenn Sie glauben, dass die aktualisierte Datei ohne Probleme benutzt werden kann, so geben Sie 1 ein. Wenn Sie glauben, dass eine Aktualisierung der Konfigurationsdatei nicht notwendig ist geben Sie 2 ein. Wenn Sie die Konfigurationsdatei interaktiv aktualisieren wollen geben sie 3 ein.

Es gibt keine Grund das interaktive mergen (Zusammenführen) hier näher auszuführen. Um eine gewisse Vollständigkeit zu gewährleisten listen wir hier alle möglichen Kommandos, die während des mergen der beiden Konfigurationsdateien benutzt werden können. Ihnen werden zwei Zeilen (eine originale, eine vorgeschlagene neue) angezeigt sowie ein Prompt an welchem Sie eines der folgenden Kommandos eingeben können:

Befehlsauflistung 2.4: Verfügbare Kommandos bei interaktivem mergen

ed:     Edit then use both versions, each decorated with a header.
eb:     Edit then use both versions.
el:     Edit then use the left version.
er:     Edit then use the right version.
e:      Edit a new version.
l:      Use the left version.
r:      Use the right version.
s:      Silently include common lines.
v:      Verbosely include common lines.
q:      Quit.

Wenn Sie das Aktualisieren der wichtigen Konfigurationsdateien abgeschlossen haben können Sie nun die restlichen Dateien automatisch überschreiben. etc-update wird beendet, wenn es keine aktualisierbaren Konfigurationsdateien mehr findet.

4.c. quickpkg

Mit quickpkg können Sie Archive von bereits installierten Paketen erstellen. Diese Archive können genauso wie vorkompilierte Pakete (GRP) verwender werden. Die Nutzung von quickpkg ist recht simpel: Fügen Sie einfach den Namen des Pakets an das Kommando an:

Um beispielsweise Archive für curl, orage und procps zu erstellen:

Befehlsauflistung 3.1: quickpkg Nutzung

# quickpkg curl orage procps

Die vorkompilierten Pakete werden in $PKGDIR (standardmäßig /usr/portage/packages/) abgelegt. Diese Pakete werden in $PKGDIR/<category> abgelegt.

5. Abweichen vom Offiziellen Tree

5.a. Nur einen Teil des Portage Tree nutzen

Pakete/Kategorien ausschließen

Sie können eine Auswahl von Kategorien/Paketen aktualisieren und andere Kategorien/Pakete ignorieren. Wir erreichen dies durch das Ausschließen von bestimmten Kategorien/Paketen während des emerge --sync Vorgangs mittels rysnc.

Sie müssen den Namen der Datei, welche die Ausschlussmuster enthält, in der PORTAGE_RSYNC_EXTRA_OPTS Variable in Ihrer /etc/portage/make.conf spezifizieren.

Befehlsauflistung 1.1: Spezifizieren der Exclude-Datei in /etc/portage/make.conf

PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"

Befehlsauflistung 1.2: Ausschluss aller Spiele in /etc/portage/rsync_excludes

games-*/*

Beachten Sie, dass dies zu Abhängigkeitsproblemen führen kann, wenn ein gewünschtes Paket von einem neuen, aber ausgeschlossenem Paket abhängt.

5.b. Inoffizielle Ebuilds hinzufügen

Definieren eines Portage Overlay Verzeichnis

Sie können Portage mitteilen, auch nicht offizielle Ebuilds zu nutzen, welche nicht durch den Portage Tree verfügbar sind. Erstellen Sie ein neues Verzeichnis (zum Beispiel /usr/local/portage), in welchem Sie Ebuilds von anderen Anbietern ablegen können. Benutzen Sie die gleich Struktur wie im offiziellen Portage Tree!

Definieren Sie nun die PORTDIR_OVERLAY Variable in /etc/portage/make.conf und lassen Sie sie auf das zuvor definierte Verzeichnis zeigen. Wenn Sie nun Portage benutzen wird es diese Ebuilds mit einbeziehen und diese beim nächsten emerge --sync nicht löschen/überschreiben.

Mit mehreren Overlays arbeiten

Für die Poweruser, welche mit verschiedenen Overlays entwickeln, Pakete testen bevor sie in den Portage-Baum übernommen werden oder einfach inoffizielle Ebuilds von unterschiedlichen Quellen verwenden wollen, bietet das Paket app-portage/layman Ihnen layman an. Es ist ein Tool, das Ihnen hilft, die Overlay-Repositories aktuell zu halten.

Installieren und konfigurieren Sie zuerst layman wie im Overlays Users' Guide erklärt und fügen Sie Ihre gewünschten Repositories mit layman -a <overlay-name> hinzu.

Nehmen wir an, dass Sie zwei Repositories, genannt java (für die Java-Ebuilds, die momentan in Arbeit sind) und entapps (für die Anwendungen, die firmenintern für Ihren Betrieb entwickelt werden), haben. Diese Repositories können mit folgendem Befehl aktualisiert werden:

Befehlsauflistung 2.1: layman verwenden um alle Repositories zu aktualisieren

# layman -S

Für weitere Informationen zum Arbeiten mit Overlays, lesen Sie bitte man layman und den layman/overlay Benutzerleitfaden.

5.c. Software ohne Portage installieren

Nutzung von Portage mit selbst installierter Software

In einigen Fällen wollen Sie die Konfiguration, Installation und Betreuung von Software selbst vornehmen, ohne das Portage unterstützend eingreift; auch wenn Portage die in Frage kommenden Pakete ebenfalls installieren könnte. Bekannte Gründe können Kernelquellen oder Nvidia Treiber sein. Sie können Portage so konfigurieren, dass es weiß, dass bestimmte Pakete manuell auf Ihrem System installiert sind. Dieser Schritt wird als Injecting bezeichnet und wird durch die Datei /etc/portage/profile/package.provided durchgeführt. Portage wird die dort aufgelisteten Pakete nicht installieren.

Wenn Sie zum Beispiel Portage informieren wollen, dass Sie gentoo-sources-2.6.11.6 manuell installiert haben, fügen Sie die folgende Zeile in /etc/portage/profile/package.provided hinzu:

Befehlsauflistung 3.1: Beispiel für package.provided

sys-kernel/gentoo-sources-2.6.11.6

6. Erweiterte Portage-Funktionen

D. Gentoo Netzwerk Konfiguration

1. Zu Beginn

1.a. Einführung

Notiz: Diese Anleitung geht davon aus, das Sie ihren Kernel richtig konfiguriert haben, die Module für ihre Hardware eingebunden haben und Ihnen die Namen der Schnittstellen bekannt sind. Des Weiteren nehmen wir an, das sie die Schnittstelle eth0 konfigurieren, es könnte gleichwohl aber auch eth1, wlan0 etc. sein.

Um mit der Konfiguration Ihrer Netzwerkkarte zu beginnen, müssen Sie Gentoos RC-System über diese informieren. Das machen Sie, indem Sie einen symbolischen Link von net.lo zu net.eth0 in /etc/init.d erstellen.

Befehlsauflistung 1.1: Einen symlink von net.eth0 zu net.lo einrichten

# cd /etc/init.d
# ln -s net.lo net.eth0

Das RC-System von Gentoo kennt nun die Schnittstelle. Es muss aber auch wissen, wie die neue Schnittstelle konfiguriert werden soll. Alle Netzwerkschnittstellen werden in /etc/conf.d/net konfiguriert. Es folgt eine Beispielkonfiguration für DHCP und statische Adressen.

Befehlsauflistung 1.2: Beispiele für /etc/conf.d/net

# Für DHCP
config_eth0="dhcp"

# Für statische IP-Adresse mit CIDR Notation
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

# Für statische IP-Adresse mit netmask Notation
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

Notiz: Wenn Sie keine Konfiguration für ihr Interface angeben, wird DHCP benutzt.

Notiz: CIDR steht für Classless InterDomain Routing. Ursprünglich wurden IPv4-Adressen in Klassen A, B und C unterteilt. Diese frühe Einteilung wurde der großen Popularität des Internets nicht gerecht und es bestand Gefahr, das der Vorrat an einzigartigen Adressen ausgeschöpft würde. CIDR ist ein Adressierungsschema, das die Zuordnung von mehreren IP-Adressen zu einer erlaubt. Eine CIDR IP-Adresse sieht aus wie eine normale IP-Adresse, mit dem Unterschied, das sie mit einem Schrägstrich endet gefolgt von einer Zahl, beispielsweise 192.168.0.0/16. Weitere Informationen zu CIDR gibt es im RFC 1519.

Nachdem wir die Schnittstelle konfiguriert haben, können wir sie mit untenstehenden Befehlen starten und stoppen:

Befehlsauflistung 1.3: Starten and Stoppen von Netzwerkskripten

# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop

Wichtig: Um Fehlern bei der Konfiguration des Netzwerks auf die Schliche zu kommen, werfen Sie einen Blick in /var/log/rc.log. Sofern Sie nicht rc_logger="NO" in /etc/rc.conf gesetzt haben, werden dort Informationen zur Boot-Aktivität abgelegt.

Haben Sie ihre Netzwerkschnittstelle erst einmal erfolgreich gestartet und wieder angehalten, möchten Sie vielleicht einen automatischen Start beim Booten von Gentoo. Das erreichen Sie durch untenstehende Kommandos. Der letzte "rc" Befehl weist Gentoo an, all jene Skripte zu starten, die im derzeitigen Runlevel noch nicht gestartet wurden.

Befehlsauflistung 1.4: Konfiguration der Netzwerkschnittstelle zum automatischen Start während des Bootvorgangs

# rc-update add net.eth0 default
# rc

2. Fortgeschrittene Konfiguration

2.a. Erweiterte Konfiguration

Das Herz der Konfiguration der Schnittstellen ist die Variable config_eth0. Es ist eine hochsprachliche Anweisungsliste zur Konfiguration der Schnittstelle (in diesem Fall eth0). Die Anweisungen in der Liste werden der Reihe nach abgearbeitet. Wenn mindestens eine Anweisung korrekt ausgeführt wird, wird von einer erfolgreichen Konfiguration der Schnittstelle ausgegangen.

Hier ist eine Liste der eingebauten Anweisungen.

Anweisung Beschreibung
null Nichts machen
noop Wenn die Schnittstelle aktiviert ist und eine Adresse vorhanden ist, beende die Konfiguration erfolgreich.
eine IPv4 oder IPv6 Adresse Die angegebene Adresse zur Schnittstelle hinzufügen
dhcp, adsl or apipa (oder ein spezielles Kommando von einem externen Modul) Das Modul ausführen, das das Kommando bereitstellt. Beispielsweise ruft dhcp ein Modul auf, das DHCP bereitstellt - das kann entweder dhcpcd, dhclient oder pump sein.

Schlägt eine Anweisung fehl, können sie eine andere Anweisung als Ausweichlösung angeben. Dieses muss der Konfigurationsstruktur genau folgen.

Sie können die verschiedenen Anweisungen aneinanderhängen. Es folgen einige Beispiele aus der Praxis.

Befehlsauflistung 1.1: Konfigurationsbeispiel

# Drei IPv4 Adressen hinzufügen
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"

# Eine IPv4 und zwei IPv6 Adressen hinzufügen
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"

# Die vom Kernel zugewiesene Adresse so lange behalten wie die Schnittstelle
# aktiviert ist. Danach wird eine neue per DHCP zugewiesen.
# Schlägt DHCP fehl, füge eine statische IP Adresse per APIPA hinzu.
config_eth0="noop
dhcp"

fallback_eth0="null
apipa"

Notiz: Wenn Sie das ifconfig Modul benutzen und mehr als eine Adresse hinzufügen, wird für jede neue Adresse ein Alias erstellt. Mit obigem Beispiel erhalten Sie zum Beispiel die Schnittstellen eth0, eth0:1 und eth0:2. Sie können damit nichts weiter anfangen, da der Kernel und andere Programme eth0:1 und eth0:2 einfach als eth0 behandeln werden.

Wichtig: Die Reihenfolge in den Anweisungen der Ausweichlösung ist wichtig! Würden wir nicht die null Option hinzufügen, würde apipa nur ausgeführt, wenn noop fehlschlagen würde.

Notiz: APIPA und DHCP werden später im Detail behandelt.

2.b. Netzwerk-Abhängigkeiten

Initskripte in /etc/init.d können von einer speziellen Netzwerkschnittstelle abhängen oder einfach von net. Alle Netzwerkschnittstellen in Gentoos Init-System stellen net bereit.

Falls in /etc/rc.conf rc_depend_strict="YES" gesetzt ist, müssen alle Netzwerkschnittstellen, die net bereitstellen, aktiv sein, bevor eine Abhängigkeit auf "net" als gegeben angenommen wird. In anderen Worten, falls Sie ein net.eth0 und net.eth1 sowie ein Init-Skript haben, das von "net" abhängt, müssen beide Schnittstellen aktiviert sein.

Andernfalls, wenn Sie rc_depend_strict="NO" gesetzt haben, dann wird die "net"-Abhängigkeit als gegeben angenommen, sobald mindestens eine Netzwerkschnittstelle aktiv ist.

Was aber, wenn net.br0 von net.eth0 und net.eth1 abhängt? net.eth1 könnte eine drahtlose oder Wählverbindung sein, die vor dem Hinzufügen zur Bridge konfiguriert werden muss. Das kann nicht in /etc/init.d/net.br0 erfolgen, da es sich um einen symbolischen Link auf net.lo handelt.

Die Antwort darauf lautet, dass Sie eine rc_need_ Einstellung in /etc/conf.d/net definieren.

Befehlsauflistung 2.1: net.br0 Abhängigkeit in /etc/conf.d/net

rc_need_br0="net.eth0 net.eth1"

Das allein reicht aber nicht aus. Gentoos Init-Skripte verwenden eine virtuelle Abhängigkeit namens net, die dem System mitteilt, wann Netzwerkfunktionalität vorhanden ist. In obigem Beispiel sollte die Netzwerkfunktionalität aber offensichtlich erst als vorhanden gesehen werden, wenn net.br0 gestartet wurde, nicht wenn die anderen gestartet wurden. Wir müssen dies ebenfalls in /etc/conf.d/net angeben:

Befehlsauflistung 2.2: Aktualisieren der virtuellen Abhängigkeiten und Voraussetzungen für Netzwerkfunktionalität

rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"

Weitere Details zu Abhängigkeiten gibt es im Kapitel Schreiben von Initskripten des Gentoo Handbuchs. Weitere Informationen zur /etc/rc.conf finden Sie als Kommentare innerhalb der Datei.

2.c. Variablennamen und ihre Werte

Variablennamen sind dynamisch. Normalerweise gehorchen sie der Struktur variable_${interface|mac|essid|apmac}. Zum Beispiel verwaltet die Variable dhcpcd_eth0 die Werte für dhcpcd Optionen für eth0 und dhcpcd_essid verwaltet die Werte der dhcpcd Optionen, wann immer sich eine Schnittstelle zur ESSID "essid" verbindet.

Nichtsdestotrotz gibt es keine harte Regel, die angibt, das Schnittstellen dem Schema ethx folgen müssen. In der Tat besitzen viele drahtlose Schnittstellen die Namen wlanx, rax oder auch ethx. Einige benutzerdefinierte Schnittstellen wie Bridges können frei wählbare Namen gegeben werden, etwa foo. Um das ganze noch etwas interessanter zu gestalten, können drahtlose Zugangspunkte Namen mit nicht alphanumerischen Zeichen haben - das ist wichtig, da Netzwerkparameter per ESSID eingestellt werden können.

Der Nachteil dessen ist aber, das dadurch Konflikte auftreten, denn Gentoo benutzt bash Variablen - die dürfen allerdings nur englische alphanumerische Zeichen enthalten. Um diese Beschränkung zu umgehen, ersetzen wir alle Zeichen, die keine englischen alphanumerischen Zeichen sind, durch ein _ Zeichen.

Ein weiterer Nachteil der bash ist der Variableninhalt - einige Zeichen müssen escaped (durch umgekehrten Schrägstrich geschützt) werden. Dazu setzt man ein \ Zeichen vor das Zeichen, das escaped werden muss. Die folgende Liste von Zeichen muss auf diese Weise escaped werden: ", ' und \.

In diesem Beispiel benutzen wir eine drahtlose ESSID, da diese den größten Bereich an Zeichen zulässt. Gehen wir davon aus, dass wir die ESSID My "\ NET verwenden:

Befehlsauflistung 3.1: Beispiel für Variablennamen

(Dies funktioniert, aber die Domäne ist ungültig)
dns_domain_My____NET="My \"\\ NET"

(Obige Anweisung setzt die DNS-Domain auf My "\ NET, wenn eine drahtlose
Netzwerkkarte sich mit dem Zugangspunkt mit der ESSID My "\ NET verbindet.)

3. Modulare Vernetzung

3.a. Netzwerkmodule

Wir unterstützen nun auch modulare Netzwerk-Skripte, sodass wir leicht Unterstützung für neue Schnittstellen-Typen und Konfigurations-Module hinzufügen können, während die Kompatibilität mit bereits vorhandenen erhalten bleibt.

Module werden standardmäßig geladen, wenn das Paket, das sie benötigen, installiert ist. Wenn Sie hier ein Modul angeben, dessen Paket nicht installiert ist, erhalten Sie eine Fehler, der Ihnen mitteilt, welche Pakete installiert werden müssen. Im besten Fall verwenden Sie nur die Modul-Einstellungen, wenn Sie zwei oder mehr Pakete installiert haben, die den gleichen Dienst zur Verfügung stellen, und geben so einem Paket den Vorzug.

Notiz: Alle besprochenen Einstellungen werden in /etc/conf.d/net gespeichert, sofern nicht anders angegeben.

Befehlsauflistung 1.1: Modul-Präferenz

# Ziehen Sie ifconfig dem Modul iproute2 vor
modules="ifconfig"

# Sie können auch andere Module als Schnittstelle angeben
# Im folgenden Fall bevorzugen wir pump vor dhcpcd
modules_eth0="pump"

# Sie können auch angeben, welche Module nicht verwendet werden sollen
#- beispielsweise könnten Sie supplicant oder linux-wlan-ng verwenden um
#die Drahtlos-Konfiguration zu steuern, möchten aber die Netzwerk-Einstellungen
#trotzdem per verbundener ESSID konfigurieren.
modules="!iwconfig"

3.b. Schnittstellen-Handler

Wir liefern aktuell zwei Schnittstellen: ifconfig und iproute2. Sie benötigen eine von diesen, um irgendeine Netzwerk-Konfiguration machen zu können.

ifconfig ist standardmäßig installiert (das Paket net-tools ist Bestandteil des Systemprofils). iproute2 ist mächtiger und flexibler, aber nicht standardmäßig enthalten.

Befehlsauflistung 2.1: Installation von iproute2

# emerge sys-apps/iproute2

# Um ifconfig vor iproute2 den Vorzug zu geben, falls beide installiert sind, da openrc
# ansonsten iproute2 bevorzugt
modules="ifconfig"

Da ifonfig und iproute2 beide sehr ähnlich funktionieren, erlauben wir eine Zusammenarbeit beider Basis-Konfigurationen. Zum Beispiel funktionieren die folgenden beiden Code-Abschnitte unabhängig vom verwendeten Modul.

Befehlsauflistung 2.2: Beispiele für ifconfig und iproute2

config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"

# Wir können auch Broadcast angeben
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 ist eine Möglichkeit, Netzwerk-Informationen (IP-Adresse, DNS-Server, Gateways, etc.) von einem DHCP-Server zu erhalten. Wenn es in Ihrem Netzwerk einen DHCP-Server gibt, bedeutet dies, dass die Clients nur DHCP verwenden müssen und der DHCP-Server für das richtige Setup sorgt. Natürlich müssen Sie andere Dinge, wie Drahtlosnetzwerke, PPP, und so weiter, wenn nötig, selbst konfigurieren, bevor Sie DHCP verwenden können.

DHCP kann durch dhclient, dhcpcd oder pump zur Verfügung gestellt werden. Jedes DHCP-Modul hat seine Vor- und Nachteile - hier ein kurzer Überblick.

DHCP-Modul Paket Vorteile Nachteile
dhclient net-misc/dhcp Kommt von ISC, die gleichen Leute, aus deren Feder die BIND DNS-Software stammt. In hohem Maße konfigurierbar. Die Konfiguration ist allzu komplex, die Software ist ziemlich überladen, kann keine NTP-Server über DHCP erhalten, sendet standardmäßig den Hostnamen nicht.
dhcpcd net-misc/dhcpcd Seit langem der Standard unter Gentoo, keine Abhängigkeiten zu anderen Tools und wird aktiv von Gentoo weiterentwickelt. Kann manchmal etwas langsam sein und funktioniert nicht als Daemon, wenn das Lease unendlich ist.
pump net-misc/pump Leichtgewicht, keine Abhängigkeiten von fremden Tools Wird nicht mehr gepflegt, unzuverlässig, insbesondere über Modems, kann keine NIS-Server über DHCP erhalten.

Wenn Sie mehr als einen DHCP-Client installiert haben, müssen Sie angeben, welcher verwendet werden soll - anderenfalls verwenden wir, wenn verfügbar, dhcpcd als Standard.

Verwenden Sie module_eth0="..." um dem Modul bestimmte Optionen zu übergeben. (ändern Sie module zu dem DHCP-Modul, dass Sie verwenden - z.B. dhcpcd_eth0).

Wir versuchen DHCP relativ unwissend zu machen - deswegen unterstützen wir die folgenden Befehle mit Hilfe der dhcp_eth0 Variable. Der Normalfall ist, keine davon zu setzen:

  • release - gibt die IP-Adresse für die Wiederverwendung frei
  • nodns - /etc/resolv.conf nicht überschreiben
  • nontp - /etc/ntp.conf nicht überschreiben
  • nonis - /etc/yp.conf nicht überschreiben

Befehlsauflistung 3.1: Beispiel-DHCP-Konfiguration in /etc/conf.d/net

# Wird nur benötigt, wenn mehr als ein DHCP-Module installiert ist.
modules="dhcpcd"

config_eth0="dhcp"
dhcpcd_eth0="-t 10" # Timeout nach 10 Sekunden
dhcp_eth0="release nodns nontp nonis" # Nur eine Adresse anfordern

Notiz: dhcpcd und pump senden im Normalfall den aktuellen Hostnamen zum DHCP-Server, sodass Sie ihn nicht mehr angeben müssen.

3.d. ADSL mit PPPoE/PPPoA

Zunächst müssen wir die ADSL-Software installieren.

Befehlsauflistung 4.1: Das ppp-Paket installieren

# emerge net-dialup/ppp

Zweitens, erzeugen Sie das PPP-Netzwerkskript und das Netzwerkskript für die Ethernet-Schnittstelle, die von PPP verwendet werden soll:

Befehlsauflistung 4.2: Erzeugen des PPP Netzwerkskripts

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Stellen Sie sicher, dass rc_depend_strict in /etc/rc.conf auf "YES" gesetzt ist.

Nun müssen wir /etc/conf.d/net konfigurieren.

Befehlsauflistung 4.3: Eine grundlegende PPPoE-Konfiguration

config_eth0=null (Geben Sie Ihre Ethernet-Schnittstelle an)
config_ppp0="ppp"
link_ppp0="eth0" (Geben Sie Ihre Ethernet-Schnittstelle an)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"

rc_need_ppp0="net.eth0"

Ihr Kennwort können Sie auch in /etc/ppp/pap-secrets angeben.

Befehlsauflistung 4.4: Beispiel einer /etc/ppp/pap-secrets

# Der * ist wichtig
"username"  *  "password"

Wenn Sie PPPoE mit einem USB-Modem verwenden werden Sie br2684ctl emergen müssen. Bitte lesen Sie hierzu /usr/portage/net-dialup/speedtouch-usb/files/README für weitere Informationen zur korrekten Konfiguration.

Wichtig: Bitte lesen Sie den Abschnitt zu ADSL und PPP in /usr/share/doc/openrc-0.8.3-r1/net.example.bz2 sorgfältig durch. Dort sind viel detailliertere Erklärungen zu allen Einstellungen enthalten, die Sie für Ihre spezielle PPP-Einrichtung wahrscheinlich nutzen können. Natürlich müssen Sie 0.8.3-r1 durch Ihre OpenRC-Version ersetzen.

3.e. APIPA (Automatic Private IP Addressing)

APIPA versucht, freie Adressen im Bereich 169.254.0.0-169.254.255.255 durch Ansprechen einer zufälligen Adresse aus diesem Bereich über die Schnittstelle mit Hilfe von arping zu finden. Wenn darauf keine Antwort erfolgt, wird diese Adresse der Schnittstelle zugewiesen.

Das ist nur für LANs sinnvoll, in dem sich kein DHCP-Server befindet, Sie sich nicht direkt mit dem Internet verbinden und alle anderen Computer ebenfalls APIPA verwenden.

Für APIPA-Unterstützung muss net-misc/iputils oder net-analyzer/arping emerged werden.

Befehlsauflistung 5.1: APIPA-Konfiguration in /etc/conf.d/net

# Versuchen Sie zuerst DHCP - schlägt das fehl, greifen Sie auf APIPA zurück
config_eth0="dhcp"
fallback_eth0="apipa"

# Nur APIPA verwenden
config_eth0="apipa"

3.f. Bonding

Zum Bonding/Trunking von Links muss net-misc/ifenslave emerged werden.

Bonding wird zur Erhöhung der Netzwerk-Bandbreite verwendet. Wenn Sie zwei Netzwerkkarten im gleichen Netzwerk verwenden, können Sie beide Karten so verbinden, dass Ihre Anwendungen nur eine Schnittstelle sehen, aber tatsächlich beide Karten nutzen.

Befehlsauflistung 6.1: Bonding-Konfiguration in /etc/conf.d/net

# Um Schnittstellen zu verbinden
slaves_bond0="eth0 eth1 eth2"

# Weisen Sie einer verbundenen Schnittstelle keine IP-Adresse zu
config_bond0="null"

# Von eth0, eth1 and eth2 abhängen, da sie möglicherweise weitere Konfiguration benötigen
rc_need_bond0="net.eth0 net.eth1 net.eth2"

3.g. Bridging (802.1d-Unterstützung)

Für Bridging-Unterstützung muss net-misc/bridge-utils emerged werden.

Bridging wird verwendet, um Netzwerke zusammenzufügen. Zum Beispiel: Sie haben einen Server, der sich über ein ADSL-Modem mit dem Internet verbindet und eine drahtlose Netzwerkkarte, um andere Computer über das ADSL-Modem mit dem Internet zu verbinden. Sie könnten nun mit Hilfe einer Bridge beide Schnittstellen zusammenfügen.

Befehlsauflistung 7.1: Bridge-Konfiguration in /etc/conf.d/net

# Konfigurieren Sie die Bridge - weitere Details liefert "man brctl"
brctl_br0="setfd 0" "sethello 0" "stp off"

# Um Ports zur Bridge br0 hinzuzufügen
bridge_br0="eth0 eth1"

# Die Ports müssen mit Null-Werten konfiguriert werden, damit DHCP nicht gestartet wird.
config_eth0="null"
config_eth1="null"

# Letztendlich weisen Sie der Bridge eine Adresse zu - Sie könnten dazu auch DHCP verwenden
config_br0="192.168.0.1/24"

# Von eth0, eth1 and eth2 abhängen, da sie möglicherweise weitere Konfiguration benötigen
rc_need_br0="net.eth0 net.eth1"

Wichtig: Um weitere Bridge-Setups zu verwenden, sollten Sie die Dokumentation zu Variablennamen lesen.

3.h. MAC-Adresse

Falls Bedarf besteht, können Sie die MAC-Adresse Ihres Interfaces mit Hilfe der Netzwerk-Konfigurationsdatei ebenfalls ändern.

Befehlsauflistung 8.1: Beispiel zum Wechseln der MAC-Adresse

# Um die MAC-Adresse der Schnittstelle zu setzen
mac_eth0="00:11:22:33:44:55"

# Um nur die letzten 3 Bytes willkürlich auszuwählen
mac_eth0="random-ending"

# Um aus gleichen Typen physikalischer Verbindungen (z.B. fibre,
# copper, wireless) willkürlich auszuwählen, alle Hersteller
mac_eth0="random-samekind"

# Um aus allen Typen physikalischer Verbindungen (z.B. fibre, copper,
# wireless) willkürlich auszuwählen, alle Hersteller
mac_eth0="random-anykind"

# komplett willkürliche Auswahl - VORSICHT: manche auf diese Weise
# generierte MAC-Adressen verhalten sich nicht wie erwartet.
mac_eth0="random-full"

3.i. Tunnelling

Es muss nichts emerged werden, da der Schnittstellen-Handler alles erledigt.

Befehlsauflistung 9.1: Tunnelling-Konfiguration in /etc/conf.d/net

# Für GRE-Tunnel
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# Für IPIP-Tunnel
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Um die Schnittstelle zu konfigurieren
config_vpn0="192.168.0.2 peer 192.168.1.1"

3.j. VLAN (802.1q-Unterstützung)

Für VLAN-Unterstützung muss net-misc/vconfig emerged werden.

Virtual LAN ist eine Gruppe von Netzwerk-Geräten, die sich verhalten, als wären sie mit einem einzelnen Netzwerk-Segment verbunden, auch wenn dies nicht der Fall ist. Mitglieder eines VLANs können nur Mitglieder des gleichen VLANs sehen, auch wenn sie sich im gleichen physikalischen Netzwerk befinden.

Befehlsauflistung 10.1: VLAN-Konfiguration in /etc/conf.d/net

# VLAN-Nummer für die Schnittstelle wie folgt angeben
# Stellen Sie sicher, dass Ihre VLAN-IDs NICHT mit Nullen aufgefüllt sind
vlans_eth0="1 2"

# Sie können auch das VLAN konfigurieren
# Weitere Details liefert "man vconfig"
vconfig_eth0="set_name_type VLAN_PLUS_VID_NO_PAD"
vconfig_vlan1="set_flag 1" "set_egress_map 2 6"

# Die Schnittstellen wie gewohnt onfigurieren
config_vlan1="172.16.3.1 netmask 255.255.254.0"
config_vlan2="172.16.2.1 netmask 255.255.254.0"

Wichtig: Um VLAN-Setups zu verwenden, sollten Sie die Dokumentation Variablennamen lesen.

4. Drahtlose Netzwerkfunktionalität

4.a. Einleitung

Kabellose Netzwerkverbindungen sind unter Linux recht einfach einzurichten. Es gibt zwei Möglichkeiten, Wifi zu konfigurieren: Mit grafischen Clients oder mit der Kommandozeile.

Der einfachste Weg führt über die Verwendung von grafischen Clients, sobald Sie eine Desktopumgebung installiert haben. Die meisten grafischen Clients, wie z.B. wicd und NetworkManager, sind ziemlich selbsterklärend. Sie bieten ein praktisches Interface an, mit dem Sie innerhalb von ein paar Sekunden mit ein paar Mausklicks in ein Netzwerk gelangen.

Notiz: wicd bietet zusätzlich zum grafischen Interface ein Kommandozeilen-Tool an. Sie erhalten dieses, indem Sie wicd mit aktiviertem ncurses USE-Flag emergen. Das wicd-curses Tool ist insbesondere für Leute nützlich, die keine gtk-basierte Desktopumgebung verwenden, aber trotzdem ein einfaches Kommandozeilenwerkzeug haben wollen, das keine manuelle Bearbeitung von Konfigurationsdateien erforderlich macht.

Wenn Sie jedoch keinen grafischen Client verwenden wollen, dann können Sie Wifi auf der Kommandozeile durch Bearbeiten einiger Konfigurationsdateien konfigurieren. Das dauert etwas länger, aber erfordert auch die wenigsten heruntergeladenen und installierten Pakete. Da die grafischen Clients größtenteils selbsterklärend sind (mit hilfreichen Screenshots auf deren Homepages), werden wir uns hier auf die Kommandozeilenalternativen konzentrieren.

Sie können kabellose Netzwerke auf der Kommandozeile aufsetzen, indem Sie wireless-tools und wpa_supplicant installieren. Was Sie hier beachten müssen, ist, dass Sie die kabellosen Netzwerke global konfigurieren, und nicht pro Netzwerkkarte.

Die beste Wahl ist wpa_supplicant. Sie finden eine Auflistung der unterstützten Treiber auf der wpa_supplicant Seite.

wireless-tools unterstützt fast alle Karten und Treiber, aber es kann keine Verbindung zu Access-Points, die nur WPA unterstützen, aufbauen. Wenn Ihre Netzwerke nur WEP-Verschlüsselung anbieten oder komplett ungeschützt sind, dann werden Sie die Einfachheit der wireless-tools vorziehen.

Warnung: Der Treiber linux-wlan-ng wird zu diesem Zeitpunkt nicht von baselayout unterstützt. Dies liegt daran, dass linux-wlan-ng eine eigene Einrichtung und Konfiguration hat, die sich von allen anderen unterscheidet. Es gibt Gerüchte, dass die linux-wlan-ng Entwickler ihre Umgebung zu der von wireless-tools wechseln wollen. Wenn dies geschieht steht es Ihnen frei linux-wlan-ng mit baselayout zu verwenden.

4.b. WPA Supplicant

WPA Supplicant ist ein Paket, welches es Ihnen erlaubt, sich mit einem Access-Point mit aktiviertem WPA zu verbinden.

Befehlsauflistung 2.1: Installieren von wpa_supplicant

# emerge net-wireless/wpa_supplicant

Wichtig: Sie müssen CONFIG_PACKET in Ihrem Kernel aktiviert haben, damit wpa_supplicant funktionieren kann. Führen Sie grep CONFIG_PACKET /usr/src/linux/.config aus, um zu sehen, ob Sie es in Ihrem Kernel aktiviert haben.

Notiz: Abhängig von Ihren USE-Flags kann wpa_supplicant ein grafisches, in Qt4 geschriebenes Interface, das sich gut in KDE integriert, installieren. Um dieses zu erhalten, führen Sie echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use als root aus, bevor Sie wpa_supplicant emergen.

Nun muss /etc/conf.d/net konfiguriert werden, so dass wpa_supplicant gegenüber wireless-tools bevorzugt wird (wenn beide installiert sind ist wireless-tools der Standard).

Befehlsauflistung 2.2: Konfiguration von /etc/conf.d/net für wpa_supplicant

# wpa_supplicant gegenüber wireless-tools bevorzugen
modules="wpa_supplicant"

# Es ist wichtig, dass wir wpa_supplicant mitteilen welcher Treiber
# verwendet werden soll, da es nicht sehr gut raten kann.
wpa_supplicant_eth0="-Dmadwifi"

Notiz: Wenn Sie den host-ap Treiber verwenden, müssen Sie Ihre Karte in den Managed Modus versetzen, bevor diese mit wpa_supplicant korrekt verwendet werden kann. Sie können dies mit iwconfig_eth0="mode managed" in /etc/conf.d/net erreichen.

Das war einfach, oder? Trotzdem müssen wir noch wpa_supplicant selbst konfigurieren. Dies ist einen Tick schwieriger und abhängig davon wie abgesichert die Access-Points sind, mit denen Sie sich verbinden wollen. Das folgende Beispiel ist vereinfacht worden und stammt aus /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz, welches mit wpa_supplicant ausgeliefert wird.

Befehlsauflistung 2.3: Ein /etc/wpa_supplicant/wpa_supplicant.conf Beispiel

# Die folgende Zeile nicht ändern, sonst wird nichts funktionieren
ctrl_interface=/var/run/wpa_supplicant

# Sicherstellen, dass nur root die WPA Konfiguration lesen kann
ctrl_interface_group=0

# wpa_supplicant soll sich um scannen und AP Auswahl kümmern
ap_scan=1

# Einfacher Fall: WPA-PSK, wobei PSK eine ASCII Passphrase ist,
# erlauben aller gülten Chiffre
network={
  ssid="einfach"
  psk="sehr geheime Passphrase"
  # Je höher die Priorität, desto schneller werden wir verknüpft
  priority=5
}

# Dasselbe wie zuvor, jedoch mit SSID-spezifischem scannen (für APs,
#die SSID Broadcast ablehnen)
network={
  ssid="zweite ssid"
  scan_ssid=1
  psk="sehr geheime Passphrase"
  priority=2
}

# Nur WPA-PSK wird verwendet. Jede gültige Chiffre-Kombination wird
# akzeptiert
network={
  ssid="Beispiel"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Klartext Verbindung (kein WPA, kein IEEE 802.1X)
network={
  ssid="klartext-test"
  key_mgmt=NONE
}

# Verbindung mit gemeinsamen WEP Schlüssel
# (kein WPA, kein IEEE 802.1X)
network={
  ssid="statischer-wep-test"
  key_mgmt=NONE
  # Schlüssel in Anführungszeichen sind ASCII-Schlüssel
  wep_key0="abcde"
  # Schlüssel ohne Anführungszeichen sind Hex-Schlüssel
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Verbindung mit gemeinsamen WEP Schlüssel (kein WPA, kein IEEE 802.1X)
# mit Shared Key IEEE 802.11 Authentifizierung
network={
  ssid="statischer-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 Netzwerk mit WPA-None/TKIP
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="geheime Passphrase"
}

4.c. Wireless-Tools

Erste Einrichtung und Managed Modus

Wireless Tools liefert eine generische Art grundlegende Wireless-Schnittstellen zu konfigurieren; bis zum WEP Sicherheitslevel. WEP ist zwar eine schwache Sicherheitsmethode, aber auch die am meisten verbreitetste.

Die Konfiguration von Wireless-Tools wird von einer kleinen Anzahl von Hauptvariablen kontrolliert. Die folgende Beispielskonfigurationsdatei sollte allen Ihren Bedürfnissen entsprechen. Eins sollte jedoch beachtet werden: bei keiner Konfiguration gilt die Regel "verbinde mit dem stärksten unverschlüsselten Access-Point", wir versuchen unter allen Umständen eine Verbindung mit irgendetwas aufzubauen.

Befehlsauflistung 3.1: Installieren von wireless-tools

# emerge net-wireless/wireless-tools

Notiz: Auch wenn Sie Ihre Wireless-Einstellungen in /etc/conf.d/wireless speichern können, empfiehlt dieser Leitfaden dennoch dass Sie diese in /etc/conf.d/net speichern.

Wichtig: Sie werden die Dokumentation über Variablennamen konsultieren müssen.

Befehlsauflistung 3.2: Beispielseinrichtung von iwconfig in /etc/conf.d/net

# iwconfig gegenüber wpa_supplicant bevorzugen
modules="iwconfig"

# Konfiguriere WEP Schlüssel für Access-Points mit Namen ESSID1 und ESSID2
# Sie können bis zu vier WEP Schlüssel konfigurieren, aber es kann
# immer nur einer zu einem Zeitpunkt aktiv sein. Daher wird ein Standardindex
# von [1] verwendet um den Schlüssel [1] zu setzen und danach auch um den
# aktiven Schlüssel auf [1] zu wechseln. Wir tun dies für den Fall, dass Sie
# anderen ESSIDs andere WEP Schlüssel als [1] zuweisen.
#
# Ein vorangehendes s: bedeutet, dass es sich um einen ASCII Schlüssel handelt,
# ansonsten ist es ein HEX Schlüssel.
#
# enc open specified open security (am sichersten)
# enc restricted specified restricted security (am wenigsten sicher)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# Das folgende läuft nur, wenn für verfügbare Access-Points gescannt wird

# Manchmal ist mehr als ein Access-Point sichtbar, daher müssen wir
#eine bevorzugte Reihenfolge der Verbindung definieren
preferred_aps="'ESSID1' 'ESSID2'"

Feinabstimmung der Auswahl von Access-Points

Sie können einige weitere Optionen hinzufügen um eine Feinabstimmung, der Auswahl der Access-Points, zu erreichen. Normalerweise sind diese Einstellungen nicht notwendig.

Sie können entschieden ob nur mit bevorzugten Access-Points verbunden werden soll, oder nicht. Standardmäßig wird, wenn alles konfigurierte fehlschlug und mit einem unverschlüsselten Access-Point verbunden werden kann, dies auch erfolgen. Dies kann von der associate_order Variable kontrolliert werden. Es folgt eine Tabelle mit den Werten und welche Funktion sie ausüben.

Wert Beschreibung
any Standardverhalten
preferredonly Es wird nur mit sichtbaren APs in der bevorzugten Liste verbunden
forcepreferred Es wird zwinged mit APS in der bevorzugten Reihenfolge verbunden, wenn Sie bei einem Scan nicht gefunden wurden.
forcepreferredonly Es wird nicht nach APs gescannt, stattdessen wird versucht der Reihenfolge nach mit jeden einzelnen eine Verbindung aufzubauen
forceany Genau wie forcepreferred und es wird zudem mit jedem anderen verfügbaren AP verbunden

Schließlich haben wir Auslese durch blacklist_aps und unique_ap. blacklist_aps funktioniert in ähnlicher Weise wie preferred_aps. unique_ap ist ein yes oder no Wert, der mitteilt ob eine zweite Wireless-Schnittstelle sich mit demselben Access-Point verbinden kann wie die erste Schnittstelle.

Befehlsauflistung 3.3: Beispiele von blacklist_aps und unique_ap

# Manchmal wollen Sie sich nie mit bestimmten Access-Points verbinden
blacklist_aps="'ESSID3' 'ESSID4'"

# Wenn Sie mehr als eine Wireless-Karte besitzen, dann können Sie
# definieren ob sich jede Karte mit demselben Access-Point assoziieren darf
# oder nicht. Werte sind "yes" und "no", Standard ist "yes".
unique_ap="yes"

Ad-Hoc und Master Modi

Wenn Sie sich als einen Ad-Hoc Knoten einrichten wollen, weil die Verbinung mit Access-Points im Managed-Modus fehlschlägt, dann können Sie folgendes tun.

Befehlsauflistung 3.4: Rückfall auf Ad-Hoc Modus

adhoc_essid_eth0="Dieser Ad-Hoc Knoten"

Was ist mit der Verbindung zu Ad-Hoc Netzwerken oder das Laufen im Master-Modus um ein Access-Point zu werden? Hier ist eine Konfiguration für genau das! Sie müssen unter Umständen, wie oben beschrieben, WEP Schlüssel angeben.

Befehlsauflistung 3.5: Beispiels ad-hoc/master Konfiguration

# Setzen des Modus. Kann entweder Managed (Standard), Ad-Hoc oder
# Master sein. Nicht alle Treiber unterstützten alle Modi.
mode_eth0="ad-hoc"

# Setzen der ESSID für die erste Schnittstelle im Managed Modus, dies
# zwingt die Schnittstelle dazu den Versuch zu starten, eine Verbindung mit der
# spezifizierten ESSID aufzubauen und sonst nichts
essid_eth0="Dieser Ad-Hoc Knoten"

# Wir verwerden Kanal 3, wenn Sie keinen spezifzieren
channel_eth0="9"

Wichtig: Das folgende stammt wörtlich aus der BSD-Wavelan-Dokumentation, welche sich in der NetBSD Dokumentation findet. Es gibt 14 mögliche Kanäle. Es wurde berichtet, dass Kanäle 1-11 legal sind in Nordamerika, Kanäle 1-13 für den größten Teil von Europa, Kanäle 10-13 für Frankreich und nur Kanal 14 für Japan. Wenn im Zweifel, wenden Sie sich bitte an die Dokumentation, die mit Ihrer Karte oder Ihrem Access-Point ausgeliefert wurde. Stellen Sie sicher, dass der Kanal, den Sie wählen auch derselbe ist, den Sie für Ihren Access-Point (oder die andere Karte im Ad-Hoc Netzwerk) gewählt haben. Der Standard für Karten, die in den Vereinigten Staaten und dem größten Teil von Europa verkauft werden ist 3. Der Standard für Karten die in Frankreich verkauft werden ist 11 und der Standard für Karten die in Japan verkauft werden ist 14.

Fehlerbehebung bei Wireless-Tools

Es gibt einige weitere Variablen die Sie verwenden können, die Ihnen helfen Ihr Wireless zum Laufen zu kriegen, wegen Treiber- oder Umgebungsproblemen. Hier ist eine Tabelle mit weiteren Dingen die Sie versuchen können:

Variable Standardwert Beschreibung
iwconfig_eth0 Siehe die iwconfig man Seite für Details was iwconfig gesendet werden soll
iwpriv_eth0 Siehe die iwpriv man Seite für Details was iwpriv gesendet werden soll
sleep_scan_eth0 0 Die Anzahl der Sekunden die gewartet werden bevor ein Scan versucht wird. Dies wird benötigt wenn der/das Treiber/Firmware mehr Zeit benötigt um aktiv zu werden, bevor es verwendet werden kann.
sleep_associate_eth0 5 Die Anzahl der Sekunden die die Schnittstelle warten soll um sich mit dem Access-Point zu assoziieren, bevor es zum Nächsten übergeht
associate_test_eth0 MAC Einige Treiber setzen die MAC Adresse assoziiert mit einer ungültigen nicht zurück wenn sie die Verbindung verlieren oder versuchen zu assoziieren. Einige Treiber setzen das Qualitätslevel nicht zurück wenn sie die Verbindung verlieren oder versuchen zu assoziieren. Gültige Einstellungen sind MAC, quality und all.
scan_mode_eth0 Einige Treiber müssen im Ad-Hoc Modus scannen, also sollten Sie versuchen hier ad-hoc zu setzen, wenn das Scannen fehlschlägt.
iwpriv_scan_pre_eth0 Sendet einige iwpriv Befehle zur Schnittstelle vor dem scannen. Siehe die iwpriv man Seite für weitere Details
iwpriv_scan_post_eth0 Sendet einige iwpriv Befehle zur Schnittstelle nach dem scannen. Siehe die iwpriv man Seite für weitere Details

4.d. Definieren von Netzwerkkonfigurationen nach ESSID

Manchmal kann es vorkommen, dass Sie bei ESSID1 eine statische IP benötigen und bei der Verbindung mit ESSID2 benötigen Sie DHCP. Genauer gesagt können die meisten der Modulvariablen per ESSID kontrolliert werden. So funktioniert es:

Notiz: Diese funktionieren, wenn Sie WPA Supplicant oder Wireless-Tools verwenden.

Wichtig: Sie werden die Dokumentation über Variablennamen konsultieren müssen.

Befehlsauflistung 4.1: Netzwerkeinstellungen nach ESSID gehen vor

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"

# Wir können Nameserver und auch andere Dinge definieren
# Anmerkung: DHCP überschreibt diese Einstellungen, sofern es ihm
# nicht verboten wurde
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="suche.diese.Domäne suche.jene.Domäne"

# Sie überschreiben anhand der MAC-Adresse des Access-Points
# Dies ist hilfreich wenn Sie sich an verschiedene Orte begeben, die dieselbe
# ESSID haben
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"

5. Funktionalität hinzufügen

5.a. Erweiterung der Standardfunktionen

Vier Funktionen können in /etc/conf.d/net definiert werden, die im Zusammenhang mit den start/stop Funktionen aufgerufen werden. Die Funktionen werden mit dem Namen der Schnittstelle zuerst aufgerufen, so dass eine Funktion mehrere Adapter kontrollieren kann.

Der Rückgabewert der preup() und predown() Funktionen sollte 0 (Erfolg) sein um die erfolgreiche Konfiguration der Schnittstelle anzuzeigen. Gibt preup() einen von Null verschiedenen Wert zurück, wird die Konfiguration abgebrochen. Eine Dekonfiguration wird nicht durchgeführt, falls predown() einen von Null verschiedenen Wert zurückgibt.

Die Rückgabewerte der postup() und postdown() Funktionen werden ignoriert, da dort keine Reaktion auf Fehler vorgesehen ist.

${IFACE} wird auf die Schnittstelle gesetzt, die (de-)aktiviert werden soll. ${IFVAR} ist ${IFACE} konvertiert zu einem Variablennamen, den die Bash erlaubt.

Befehlsauflistung 1.1: Beispiele für pre/post up/down Funktionen in /etc/conf.d/net

preup() {
  # Überprüfe die Verbindung der Schnittstelle, bevor sie aktiviert wird.
  # Funktioniert nur bei einigen Netzwerkadaptern und setzt voraus,
  # das das ethtool Paket installiert ist.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Denken Sie daran, im Erfolgsfall 0 zurückzugeben
  return 0
}

predown() {
  # Standardmäßig wird die Deaktivierung einer Schnittstelle nicht
  # durchgeführt, wenn darüber NFS Laufwerke gemounted sind. Geben Sie jedoch eine
  # eigene predown() Funktion an, wird dieses Verhalten überschrieben. Hier ist
  # diese Funktion für den Fall, das sie sie brauchen...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Denken Sie daran, im Erfolgsfall 0 zurückzugeben
  return 0
}

postup() {
  # Diese Funktion können Sie beispielsweise benutzen, um bei einem dynamischen
  # DNS Service zu registrieren. Eine weitere Möglichkeit wäre, bei Aktivierung der
  # Schnittstelle Emails zu senden und zu empfangen.
  return 0
}

postdown() {
  # Diese Funktion gibt es in erster Linie aus Vollständigkeitsgründen.
  # Mir ist bislang noch nichts Sinnvolles eingefallen, was man mit ihr
  # machen könnte ;-)
  return 0
}

Notiz: Für weitere Informationen, wie Sie Ihre eigenen Funktionen schreiben können, siehe /usr/share/doc/openrc-*/net.example.bz2.

5.b. Funktionserweiterungen für die Wireless Tools

Notiz: Funktioniert nicht mit WPA Supplicant - die ${ESSID} und ${ESSIDVAR} Variablen sind in der postup() Funktion verfügbar.

Zwei Funktionen können in /etc/conf.d/net definiert werden, die im Zusammenhang mit der associate Funktion aufgerufen werden. Die Funktionen werden mit dem Namen der Schnittstelle zuerst aufgerufen, so das man mit einer Funktion mehrere Adapter kontrollieren kann.

Der Rückgabewert der preassociate() Funktion sollte 0 sein, um anzuzeigen, dass die (De-)Konfiguration der Schnittstelle fortgesetzt werden kann. Wenn preassociate() einen von Null verschiedenen Wert zurückgibt, wird die Konfiguration der Schnittstelle abgebrochen.

Der Rückgabewert der postassociate() Funktion wird ignoriert, da es im Fehlerfall nichts zu tun gibt.

${ESSID} wird auf die exakte ESSID des Zugangspunktes gesetzt, zu dem Sie sich verbinden. ${ESSIDVAR} ist ${ESSID} umgewandelt in einen Variablennamen, den Bash erlaubt.

Befehlsauflistung 2.1: pre/post association Funktionen in /etc/conf.d/net

preassociate() {
  # Im folgenden werden zwei Konfigurationsvariablen leap_user_ESSID
  # und leap_pass_ESSID hinzugefügt. Sind beide für die ESSID gesetzt, zu der
  # verbunden wird, dann wird das CISCO LEAP Skript ausgeführt.

  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() {
  # Diese Funktion gibt es in erster Linie aus Vollständigkeitsgründen.
  # Mir ist bislang noch nichts Sinnvolles eingefallen, was man mit ihr
  # machen könnte ;-)

  return 0
}

Notiz: Auf ${ESSID} und ${ESSIDVAR} kann in den predown() und postdown() Funktionen nicht zugegriffen werden.

Notiz: Für weitere Informationen, wie Sie Ihre eigenen Funktionen schreiben können, siehe /usr/share/doc/openrc-*/net.example.bz2.

6. Netzwerkmanagement

6.a. Netzwerkmanagement

Wenn Sie und Ihr Computer ständig unterwegs sind, haben sie schätzungsweise nicht immer ein Ethernet Kabel oder einen Zugangspunkt in Reichweite. Oder aber Sie möchten das Netzwerk automatisch konfiguriert haben, wenn ein Netzwerkkabel eingesteckt wird bzw ein Zugangspunkt gefunden wird.

An dieser Stelle finden Sie einige Tools, die Ihnen dabei behilflich sind.

Notiz: Diese Anleitung stellt nur ifplugd vor, es gibt jedoch Alternativen wie netplug. netplug ist eine schlanke Alternative zu ifplugd, ist aber abhängig davon, dass Ihre Netzwertreiber im Kernel korrekt funktionieren, was viele Treiber jedoch nicht tun.

6.b. ifplugd

ifplugd ist ein Dämon, der Schnittstellen startet oder stoppt wenn ein Netzwerkkabel einsteckt oder abgezogen wird. Es kann außerdem die Verbindung zu drahtlosen Zugangspunkten erkennen, wenn diese in Reichweite kommen.

Befehlsauflistung 2.1: ifplugd installieren

# emerge sys-apps/ifplugd

Die Konfiguration von ifplugd is relativ simpel. Die Konfigurationsdatei ist /etc/conf.d/net. Führen Sie man ifplugd aus, für Details zu den verfügbaren Variablen. Sehen Sie sich auch /usr/share/doc/openrc-*/net.example.bz2 für weitere Beispiele an.

Befehlsauflistung 2.2: Beispielhafte Konfiguration für ifplug

(Ersetzen Sie eth0 mit der Schnittstelle, die überwacht werden soll.)
ifplugd_eth0="..."

(Um eine Wireless-Schnittstelle zu überwachen)
ifplugd_eth0="--api-mode=wlan"

Zusätzlich zur Verwaltung von verschiedenen Netzwerkverbindungen, möchten Sie unter Umständen ein Tool hinzufügen, dass es erleichtert mit verschiedenen DNS-Servern und Konfigurationen zu arbeiten. Dies ist sehr hilfreich, wenn Sie Ihre IP-Adresse über DHCP erhalten. Installieren Sie einfach mit emerge openresolv.

Befehlsauflistung 2.3: Installation von openresolv

# emerge openresolv

Sehen Sie sich man resolvconf an, um mehr über seine Funktionen zu lernen.

Drucken

Seite aktualisiert 23. Februar 2013

Die Originalversion dieses Dokuments wurde zuletzt am 13. April 2014 aktualisiert

Zusammenfassung: Dies ist das Gentoo Handbuch - ein Versuch Gentoo/Linux Informationen zu bündeln. Dieses Handbuch enthält die Installationsanweisungen für eine Installation mit Internetzugang auf AMD64-Systemen und Abschnitte zur Arbeit mit Gentoo und Portage.

Sven Vermeulen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Entwickler

Tavis Ormandy
Gentoo Alpha Entwickler

Jason Huebel
Gentoo AMD64 Entwickler

Guy Martin
Gentoo HPPA Entwickler

Pieter Van den Abeele
Gentoo PPC Entwickler

Joe Kallar
Gentoo SPARC Entwickler

John P. Davis
Bearbeiter

Pierre-Henri Jondot
Bearbeiter

Eric Stockbridge
Bearbeiter

Rajiv Manglani
Bearbeiter

Jungmin Seo
Bearbeiter

Stoyan Zhekov
Bearbeiter

Jared Hudson
Bearbeiter

Colin Morey
Bearbeiter

Jorge Paulo
Bearbeiter

Carl Anderson
Bearbeiter

Jon Portnoy
Bearbeiter

Zack Gilburd
Bearbeiter

Jack Morgan
Bearbeiter

Benny Chuang
Bearbeiter

Erwin
Bearbeiter

Joshua Kinard
Bearbeiter

Tobias Scherbaum
Bearbeiter

Xavier Neys
Bearbeiter

Joshua Saddler
Bearbeiter

Gerald J. Normandin Jr.
Korrektor

Donnie Berkholz
Korrektor

Ken Nowack
Korrektor

Lars Weiler
Mitarbeiter

Tobias Scherbaum
Übersetzer

Jens Schittenhelm
Übersetzer

Patrick Sudowe
Übersetzer

Torsten Veller
Übersetzer

Michael Frey
Übersetzer

Markus Nigbur
Übersetzer

Boris Ruppert
Übersetzer

Jan Hendrik Grahl
Übersetzer

Tobias Heinlein
Übersetzer

Christian Hartmann
Korrektor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.