Gentoo Logo

Gentoo Linux 2006.0 PPC 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
      Wenn Sie mit Gentoo nicht sonderlich vertraut sind, kennen Sie vielleicht nicht alle Möglichkeiten, die Ihnen Gentoo bietet.
    2. Booten der Universellen Installations CD
      Mit unserer Universellen Installations CD können Sie Ihre Maschine in eine laufende Umgebung booten, die es Ihnen erlaubt Gentoo zu installieren.
    3. Konfiguration des Netzwerks
      Wenn Sie eine Netzwerkverbindung benötigen, erläutert Ihnen dieses Kapitel wie Sie das Netzwerk und eine Verbindung ins Internet einrichten.
    4. Vorbereiten der Festplatte(n)
      Um Gentoo installieren zu können, müssen Sie die benötigten Partitionen erstellen. Dieses Kapitel beschreibt, wie Sie eine Festplatte für die zukünftige Benutzung partitionieren.
    5. Installation der Gentoo Installations Dateien
      In diesem Kapitel beschreiben wir, wie Sie ein Stage 3 Archiv entpacken und Portage konfigurieren.
    6. Chroot in das Gentoo Basis System
      Nachdem Sie das Stage 3 Archiv entpackt haben, wechseln Sie in das Neue System und konfigurieren die USE Variable.
    7. Konfiguration des Kernels
      Der Linux Kernel ist der Kern jeder Distribution. Dieses Kapitel erklärt, wie Sie Ihren Kernel konfigurieren.
    8. Konfiguration des Systems
      Sie müssen einige wichtige Konfigurationsdateien editieren. In diesem Kapitel erhalten Sie einen Überblick über diese Dateien und eine Erklärung wie sie fortfahren sollten.
    9. Installation der benötigten System Tools
      Wie bereits gesagt, bei Gentoo geht es um die Anpassbarkeit. In diesem Kapitel helfen wir Ihnen bei der Auswahl und Installation wichtiger Tools.
    10. Konfiguration des Bootloaders
      Es gibt verschiedene Bootloader für die ppc Architektur. Jeder wird anders konfiguriert. In diesem Kapitel führen wir Sie durch die Konfiguration eines Bootloader nach Ihren Anforderungen.
    11. Abschließen Ihrer Gentoo Installation
      Sie sind fast fertig. Wir werden nun noch einen (oder mehrere) Benutzer zu Ihrem System hinzufügen und installieren (optional) vorkompilierte Pakete.
    12. Wie geht es weiter?
      Sie haben nun ihr Gentoo System, aber 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 defnitiv benötigt, um Software auf seinem System zu betreuen.
    2. USE Flags
      USE Flags sind ein sehr wichtiger Aspekt von Gentoo. In diesem Kapitel lernen Sie mit den USE Flags zu arbeiten und wie USE Flags mit dem System interagieren.
    3. Portage Features
      Gentoos Portage erlaubt verschiedene Features, die Portage bezogene Aspekte verbessern. Dieses Kapitel erläutert die existierenden Features.
    4. Initskripte
      Gentoo benutzt ein spezielles Initskript Format, welches neben weiteren Features abhängigkeitsbezogene Entscheidungen und virtuelle Initskripte mitbringt. 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. files and data.
    2. Konfiguration durch Variablen
      Portage ist vollständig durch verscheidene Variablen in der Konfigurationsdatei oder Umgebungsvariablen konfigurierbar.
    3. Mischen von Software Zweigen
      Gentoo bietet Software in separierten Zweigen an, abhängig von der Architektur und Stabilität. "Mischen von Software Zweigen" informiert Sie über diese Zweige und wie Sie diese Zweige konfigurieren können.
    4. Zusätzliche Portage Tools
      Portage kommt einen zusätzlichen Tools, die Ihnen das Gentoo Erlebnis etwas vereinfachen sollen. Lesen Sie, wie sie disptach-conf und andere Tolls nutzen.
    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 aktualisierne, die Sie möchten, "inject" von Paketen und mehr ...
  • Gentoo Netzwerk Konfiguration
    Eine verständliche Anleitung zur Netzwerknutzung in Gentoo.
    1. Der Beginn
      Eine Anleitung zur Einrichtung der Netzwerkschnittstellen in den gebräuchlichen Umgebungen.
    2. Fortgeschrittene Konfiguration
      Hier lernen Sie, wie die Konfiguration funktioniert - Sie benötigen dieses Wissen bevor wir über modulare Netzwerknutzung sprechen können.
    3. Modulare Vernetzung
      Gentoo bietet Ihnen eine flexible Vernetzung - Hier erfahren Sie wichtiges über verschiedene DHCP Clients sowie due Nutzung von Bonding, Bridging und VLANs.
    4. Drahtlose Netzwerkfunktionalität
      Die Nutzung drahtloser Netzwerke ist nicht grade selbsterklärend. Hoffentlich bekommen wir es zum Laufen!
    5. Funktionalität hinzufügen
      Wenn Sie auf ein Abenteuer aus sind, können Sie hier Ihre eigenen Funktionen hinzufügen.
    6. Netzwerkmanagement
      Für Benutzer von Notebooks und Personen, die sich mit Ihrem PC in verschiedenen Netzwerken bewegen.

A. Gentoo installieren

1. Über die Gentoo Linux Installation

1.a. Einleitung

Willkommen

Zuerst, Willkommen bei Gentoo. Sie sind dabei in die Welt der Anpassbarkeit und Performance einzusteigen. Bei der Installation von Gentoo, das wird Ihnen mehrfach klargemacht, können Sie auswählen, wie viel Sie selbst kompilieren möchten, wie Sie Gentoo installieren möchten, welche Systemlogger Sie benutzen möchten, usw.

Gentoo ist eine schnelle, moderne Metadistribution mit einem klaren und flexiblen Design. Gentoo ist rund um Freie Software gebaut und versteckt vor den Benutzern nicht, was unter der Haube steckt. Portage, das von Gentoo benutzte Paketmanagementsystem, ist in Python geschrieben, was bedeutet, dass Sie sich den Quellcode einfach anschauen und nach belieben verändern können. Gentoos Paketsystem benutzt Quellcode (auch wenn 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 Erweiterung Ihres Handlungsspielraums das ist, was Gentoo ausmacht. Wir versuchen Sie nicht dazu zu zwingen irgendetwas bestimmtes zu tun, das Ihnen nicht gefällt. Wenn Sie der Meinung sind, dass wir das tun, dann füllen Sie bitte einen Bugreport darüber aus.

Wie ist die Installation strukturiert?

Die Gentoo Installation kann als eine Prozedur von 10 Schritten gesehen werden, die den Kapiteln 2 bis 11 entsprechen. 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 (dies ist optional)
  • Nach Schritt 3 sind Ihre Festplatten für die Gentoo 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 Konfigurationsdateien 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 dazu erforscht 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, gekennzeichnet durch "Standard: " im Titel. Die anderen Möglichkeiten werden als "Alternativ: " gekennzeichnet. Denken Sie nicht, dass der Standard ist, was wir empfehlen. Es ist der Weg, von dem wir denken, dass ihn die meisten Benutzer gehen werden.

Machmal können Sie optionalen Schritten folgen. Solche Schritte sind als "Optional: " gekennzeichnet und nich 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 viele verschiedene Arten installieren. Sie können eine Installations-CD herunterladen und von dieser CD aus eine Installation durchführen, Sie können eine existierende Distribution nutzen, eine bootbare CD (wie Knoppix), eine aus dem Netz gestartete Umgebung, etc.

Dieses Dokument beschreibt die Installation mit einer Gentoo Linux Installations-CD, einer bootbaren CD, die alles beinhaltet um Gentoo Linux zu installieren. Es gibt zwei Arten von Installations-CD, die InstallCD und die Installer LiveCD. Die InstallCD ist eine minimale Umgebung, welche nur die Pakete enthält um Gentoo Linux zu installieren. Die LiveCD ist eine komplette Gentoo Linux Umgebung und kann für zahlreiche Aufgaben verwendet werden, einer davon ist die Installation von Gentoo Linux. Die LiveCD ist zu diesem Zeitpunkt nicht für alle Architekturen verfügbar. Wenn Ihre Architektur keine LiveCD hat, wird diese Dokument für Sie auf die Universal InstallCD verweisen.

Dieser Installationsansatz benutzt nicht zwangsläufig die aktuellsten Versionen aller Pakete. Wenn Sie dies tun möchten, sollten Sie die Installationsanweisungen in unseren Gentoo Linux Handbüchern befolgen.

Für Hilfe zu anderen Installationsmöglichkeiten lesen Sie bitte unseren Alternative Installationsmöglichkeiten Leitfaden. Wir bieten ebenfalls ein Gentoo Installation Tipps & Tricks Dokument, das weitere nützliche Informationen enthält. Wenn Sie das Gefühl haben, dass diese Installationsanleitung zu ausführlich ist nutzen Sie unsere Schnellinstallationsanleitung, verfügbar in unserer Dokumentationsübersicht. Nicht jede Architektur verfügt zur Zeit über eine Schnellinstallationsanleitung.

Probleme?

Wenn Sie ein Problem in der Installation (oder in der Dokumentation) entdecken, besuchen sie bitte die Errata des Gentoo Release Engineering Projekts und schauen Sie in unserer Fehlerdatenbank nach, ob der Fehler 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 obwohl das Dokument welches Sie gerade lesen Architektur-spezifisch ist wird es auch Referenzen zu anderen Architekturen beinhalten. Dies liegt daran, dass große Teile des Gentoo Handbuchs Quellcode verwenden, welcher identisch ist für alle Architekturen (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 :)

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. Wenn Sie dort keine Antwort finden können, fragen Sie in #gentoo.de, unserem IRC Channel auf irc.freenode.net. Ja, viele von uns sind Freaks, die im IRC sitzen.

1.b. Schnelle Installation mit der Gentoo Referenzplattform

Was ist die Gentoo Referenzplattform?

Die Gentoo Referenzplattform, von jetzt an als GRP abgekürzt, ist ein Schnappschuss von vorkompilierten Paketen, die Benutzer (also Sie!) während der Installation benutzen können, um den Installationsverlauf zu beschleunigen. Die GRP besteht aus allen Paketen, die für eine vollständige Gentoo Installation notwendig sind. Sie werden nicht nur benötigt, um ein Basissystem in kürzester Zeit zu installieren; auch verbreitete Ebuilds (wie xorg-x11, GNOME, OpenOffice, Mozilla, ...) sind als GRP-Pakete verfügbar.

Jedoch werden diese vorkompilierten Pakete während der Lebensdauer einer Gentoo Distribution nicht betreut. Sie sind Schnappschüsse, die zusammen mit jedem Gentoo Release veröffentlicht werden und es ermöglichen in kürzester Zeit eine funktionsfähige Umgebung zu haben. Sie können dann das System im Hintergrund aktualisieren, während sie daran arbeiten.

Wie handhabt Portage GRP-Pakete?

Ihr Portagebaum - die Sammlung von ebuilds (Dateien die alle Informationen zu einem Paket enthalten, wie Beschreibung, Homepage, URL zum Quellcode, Kompilierungsinstruktionen, Abhängigkeiten, etc.) - müssen synchron zum GRP-Satz sein: Die Versionen der verfügbaren Ebuilds und begleitenden GRP-Pakete müssen stimmen.

Aus diesem Grund können Sie nur einen Nutzen aus GRP-Paketen, die Gentoo liefert, ziehen, solange Sie die momentane Installationsmethode verwenden. GRP ist nicht erhältlich für jene, die daran interessiert sind eine Installation mit den aktuellesten Versionen aller verfügbaren Pakete durchzuführen.

Sind GRP-Pakete verfügbar?

Nicht alle Architekturen bieten GRP-Pakete an. Das bedeuted nicht, dass GRP auf den anderen Architekturen nicht verfügbar ist, wir haben nur nicht die Ressourcen die GRP-Pakete für diese Architekturen zu bauen und zu testen.

Aktuell bieten wir GRP-Pakete für die folgenden Architekturen an:

  • Die amd64 Architektur (amd64)
  • Die sparc Architektur (sparc64)
  • Die ppc Architektur (ppc32,ppc64)
  • Die x86 Architektur (athlon, athlon-xp, athlon-mp, pentium-pro, pentium2, pentium3, pentium4 and pentium-m). Notiz: Die Pakete sind für i686 und sind über die Installer LiveCD verfügbar.

Wenn Ihre Architektur (oder Subarchitektur) nicht in dieser Liste enthalten ist besteht für diese keine optionale Möglichkeit der GRP-Installation.

Nach dieser kurzen Einleitung fahren wir nun mit dem Booten der Universal Installations-CD/Installer LiveCD fort.

2. Booten der Universellen Installations CD

2.a. Hardware Anforderungen

Einleitung

Bevor wir loslegen, listen wir zuerst auf welche Hardware Anforderungen Sie erfüllen müssen, um Gentoo erfolgreich auf Ihrem System installieren zu können.

Hardwareanforderungen

Apple NewWorld Maschinen Power/PowerPC Mikroprozessoren (G3, G4, G5), wie im iMac, eMac, iBook, PowerBook, Xserver, PowerMac
Apple OldWorld Maschinen Apple Maschinen mit einer OpenFirmware Revision kleiner als, solche wie die beigen G3, PCI PowerMacs und PCI Powerbooks. PCI basiernde Apple-Klone sollten auch unterstützt werden.
Genesis Pegasos Pegasos I/II, Open Desktop Workstation
IBM RS/6000, iSeries, pSeries
Arbeitsspeicher Mindestens 64 MB
Festplattenspeicher 1.5 GB freier Platz (zuzüglich Swapspeicher)
Swapspeicher Mindestens 256 MB

Bitte lesen Sie auch die Gentoo PPC FAQ für Hilfe zu einigen häufigen, installationsbezogenen Problemen oder wenn Sie unsicher sind was sich nun wirklich in dem PowerPC-Rechner auf Ihrem Schreibtisch versteckt.

2.b. Die Gentoo Universal Installations-CD

Einleitung

Gentoo Linux kann mit einem stage3 Archiv installiert werden. Solch ein Tarball ist ein (komprimiertes) Tar-Archiv, dass eine Minimalumgebung enthält, von der aus Sie Gentoo Linux erfolgreich auf Ihrem System installieren können.

Installationen mit einer stage1 oder stage2 Archivdatei sind nicht im Gentoo Handbuch dokumentiert. Bitte lesen sie die Gentoo FAQ für diese Ansätze.

Die Universal Installations-CD

Eine Installations-CD ist ein bootfähiges Medium, dass eine eigenständige Gentoo Umgebung enthält. Es erlaubt Ihnen, Linux von der CD zu booten. Während des Bootvorgangs wird Ihre Hardware erkannt und die entsprechenden Treiber werden geladen. Die Gentoo Installations-CDs werden von Gentoo Entwicklern betreut.

Zur Zeit sind zwei Installations-CDs verfügbar:

  • Die Universal Installations-CD beinhaltet alles was Sie brauchen um Gentoo zu installieren. Es stellt Stage 3 Archive für alle gebräuchlichen Architekturen, Quellcode für extra Applikationen aus denen Sie auswählen müssen und natürlich die Installationsanweisungen für Ihre Architektur zur Verfügung.
  • Die Minimal Installations-CD beinhaltet nur eine minimale Umgebung die es Ihnen erlaubt Ihr System zu starten und das Netzwerk einzurichten damit Sie ins Internet kommen können. Es sind keine weiteren Dateien enthalten und sie kann auch nicht für diesen Installationsansatz benutzt werden.

Gentoo stellt auch eine Paket-CD zur Verfügung. Diese CD ist keine Installations-CD, aber eine zusätzliche Quelle die bei netzwerklosen Installationen genutzt werden kann. Sie beinhaltet vorkompilierte Pakete (auch bekannt als GRP-Satz), mit denen Sie einfach und schnell zusätzliche Anwendungen (wie OpenOffice.org, KDE, Gnome, ...) direkt nach der Gentoo Installation und gerade vor dem Updaten des Portage-Baums installieren können.

Die Nutzung der Package CD wird später in diesem Dokument behandelt.

2.c. Downloaden, Brennen und Booten der Universal Installations-CD

Downloaden und Brennen der Installations-CD

Sie können die Universal Installations-CDs (und Package CDs auch, wenn Sie möchten) von einem unserer Spiegel herunterladen. Die Installations-CDs befinden sich im releases/ppc/2006.0/ppc32/installcd Verzeichnis, die Package-CDs befinden sich im releases/ppc/2006.0/ppc32/packagecd Verzeichnis.

In diesen Verzeichnissen finden Sie ISO-Dateien. Dies sind komplette CD-Images, die Sie auf CD-R schreiben können.

Nach dem Download der Datei, können Sie ihre Integrität überprüfen um festzustellen, ob sie beschädigt ist oder nicht:

  • Sie können die MD5-Prüfsumme mit der von uns bereitgestellten MD5-Prüfsumme vergleichen (z.B. unter Linux/Unix mit dem md5sum Tool oder md5sum für Windows Überprüfung der MD5-Prüfsumme unter Mac OS X wird in der Gentoo PPC FAQ beschrieben.
  • Sie können die von uns bereitgestellte kryptografische Signatur verifizieren. Dafür müssen Sie sich allerdings unseren Public Key (17072058) besorgen:

Um den Public Key mittels GnuPG abzurufen, benutzen Sie folgenden Befehl:

Befehlsauflistung 3.1: Beziehen des Public Key

$ gpg --keyserver subkeys.pgp.net --recv-keys 0x17072058

Verifizieren Sie nun die Signatur:

Befehlsauflistung 3.2: Verifizieren der kryptografischen Signatur

$ gpg --verify <Signatur Datei> <heruntergeladenes ISO>

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 werden hier cdrecord und K3B behandeln; weitere Informationen finden Sie in unserer Gentoo FAQ.

  • Mit cdrecord schreiben sie einfach cdrecord dev=/dev/hdc <heruntergeladenes ISO Image> (ersetzen Sie /dev/hdc mit dem Device Pfad Ihres CD-RW Laufwerk).
  • Mit K3B wählen Sie Tools > CD > Burn Image. Danach können Sie das ISO Image innerhalb des 'Image to Burn' Bereich auswählen. Schliesslich klicken Sie Start.
  • Mit MacOS X Jaguar starten Sie Disk Copy aus Applications/Utilities, wählen Sie Burn Image aus dem File Menü, wählen Sie das ISO Image und drücken den Burn Knopf.

2.d. Booten der Universellen Installations-CD

Default: Booten der Installations-CD mit Yaboot

Bei NewWorld Maschinen legen Sie die Installations-CD in das CD-ROM Laufwerk und starten das System neu. Wenn der Startsound ertönt drücken Sie "C" bis die CD lädt.

Nachdem die Installations-CD geladen wurde werden Sie von einer freundlichen Nachricht und einem boot: Prompt am unteren Ende des Bildschirm begrüßt.

Wir liefern einen generischen Kernel, ppc32. Dieser Kernel enthält Unterstützung für mehrere CPUs wird aber auch auf Rechern mit nur einem Prozessor booten.

Sie können an diesem Prompt einige Kerneloptionen anpassen. Die folgende Tabelle listet einige der verfügbaren Bootoptionen auf, die Sie nutzen können:

Bootoption Beschreibung
video Diese Option benötigt einen der herstellerabhängigen Angaben: nvidiafb, radeonfb, rivafb, atyfb, aty128 oder ofonly. Sie können an diese Angabe außerdem noch die Auflösung, Wiederholrate und Farbtiefe anhängen, die Sie benutzen möchten. Zum Beispiel video=radeonfb:1280x1024@75-32 wählt den ATI-Radeon Framebuffer mit einer Auflösung von 1280x1024, einer Wiederholrate von 75Hz und einer Farbtiefe von 32Bit. Wenn Sie nicht sicher sind, was Sie wählen sollten und der Standard nicht funktioniert, wird ofonly mit ziemlicher Sicherheit funktionieren.
nol3 Deaktiviert den Level 3 Cache bei einigen PowerBooks (benötigt zumindest am 17").
dofirewire Aktiviert die Unterstützung für IEEE1394 (FireWire) Geräte, wie externe Festplatten.
dopcmcia Wenn Sie PCMCIA Geräte während der Installation benutzen möchten (wie PCMCIA Netzwerkkarten), müssen Sie diese Option aktivieren.

Um die obigen Optionen an der boot: Eingabe zu verwenden, tippen Sie ppc32, gefolgt von den gewünschten Optionen, ein. In dem folgenden Beispiel zwingen wir den Kernel dazu den OpenFirmware-Framebuffer, anstatt des vom Gerät spezifizierten Treibers, zu verwenden.

Befehlsauflistung 4.1: Die Verwendung des OpenFirmware-Framebuffers erzwingen

boot: ppc32 video=ofonly

Wenn Sie keine weiteren Optionen hinzufügen müssen, drücken Sie einfach Enter an dieser Eingabezeile und eine komplette Gentoo Linux Umgebung wird von der CD geladen. Fahren Sie mit Und wenn Sie gestartet haben... fort.

Alternativ: Booten der Installations-CD auf einem Pegasos

Beim Pegasos legen sie die CD ein und geben am SmartFirmware Boot-Prompt boot cd /boot/menu ein. Dadurch öffnet sich ein kleines Bootmenu in dem Sie zwischen mehreren Grafikauflösungen wählen können. Benötigen Sie spezielle Bootoptionen, hängen Sie diese an die Kommandozeile an wie auch vorhin bei Yaboot beschrieben. Zum Beispiel boot cd /boot/pegasos video=radeonfb:1280x1024@75 mem=256M. Die Standardoptionen des Kernels (falls etwas schief geht und Sie diese benötigen) sind vorkonfiguriert mit: console=ttyS0,115200 console=tty0 init=/linuxrc looptype=squashfs loop=/image.squashfs cdroot root=/dev/ram0.

Alternative: Booten der Installations-CD mit BootX

Wenn Sie einen OldWorld Mac besitzen, dann kann der bootbare Abschnitt der Installations-CD nicht verwendet wird. Die einfachste Lösung ist es MacOS 9 oder älter zu verwenden, um mit einem Tool genannt BootX, in eine Linux Umgebung zu bootstrappen.

Laden Sie als erstes BootX herunter und entpacken Sie das Archiv. Kopieren Sie die BootX Extension aus dem entpackten Archiv nach Extensions Folder und finden Sie Ihren MacOS Systemordner. Als nächstes erstellen Sie einen Ordner mit dem Namen "Linux Kernels" in Ihrem Systemordner und kopieren den ppc32 Kernel von der CD in diesen Ordner. Zum Schluß kopieren Sie ppc32.igz vom boot Ordner der Installations-CD in den MacOs System Folder.

Um BootX vorzubereiten, starten Sie das BootX App Control Panel. Als erstes wählen Sie den Options Dialog und selektieren Use Specified RAM Disk und wählen ppc32.igz aus Ihrem Systemordner aus. Fahren Sie nun mit dem Bildschirm vom Anfang fort und stellen Sie sicher, dass die Ramdisk mindestens eine Größe von 32000 aufweist. Zuletzt setzen Sie die Kernelagumente wie folgt:

Befehlsauflistung 4.2: BootX Kernelargumente

cdroot root=/dev/ram0 init=linuxrc loop=image.squashfs looptype=squashfs console=tty0

Notiz: Die Kernelparameter aus dem yaboot-Abschnitt sind hier auch anwendbar. Sie können jegliche dieser Optionen zu den obigen Kernelargumenten hinzufügen.

Überprüfen Sie noch einmal alle Einstellungen und speichern Sie dann die Konfiguration ab. Dies spart Tipparbeit, für den Fall, dass das Booten fehlschlägt oder etwas fehlt. Drücken Sie den Linux Knopf im oberen Teil des Fensters. Wenn alles korrekt funktioniert sollte die Installations-CD gebootet werden. Fahren Sie mit Und wenn Sie gestartet haben... fort.

Und wenn Sie gestartet haben ...

Sie sollten einen Root Prompt ("#") auf der aktuellen Konsole haben und mit Alt-F2, Alt-F3 und Alt-F4 weitere Konsolen benutzen können. Gehen Sie mit Alt-F1 wieder auf die Ausgangskonsole zurück. Wegen dem Keyboardlayout müssen Sie unter Umständen Alt-fn-Fx auf einigen Apple-Rechern drücken.

Wenn Sie Gentoo auf einem System mit einer non-US Tastatur installieren, benutzen Sie loadkeys, um eine zu Ihrer Tastatur passende Keymap zu laden. Um die verfügbaren Keymaps aufzulisten, rufen Sie ls /usr/share/keymaps/i386 auf. Benutzen Sie nicht die Keymaps in den ppc oder mac Verzeichnissen, da diese für ADB basierte OldWorld Maschinen gedacht sind.

Befehlsauflistung 4.3: Auflisten der verfügbaren keymaps

(PPC benutzt x86 keymaps auf den meisten Systemen. Die mac/ppc keymaps
auf der Installations-CD sind ADB keymaps und nicht zur Benutzung mit dem
Installations-CD Kernel geeignet)
# ls /usr/share/keymaps/i386

Laden der Keymap Ihrer Wahl:

Befehlsauflistung 4.4: Laden einer keymap

# loadkeys be-latin1

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

Konfiguration zusätzlicher Hardware

Wenn die Installations-CD startet, versucht diese alle Ihre Hardware Geräte zu erkennen und die entsprechenden Kernelmodule zu laden um die Ihre Hardware unterstützen. 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 airport Modul zu laden. Dieses ist das Modul für die alte (802.11b) Airport-Karte. AirportExtreme (802.11g) wird auf der Installations-CD wegen Einschränkungen bei der Distribution der Firmware nicht unterstützt.

Befehlsauflistung 4.5: Laden des Airport-Modules

# modprobe airport

Auf älteren iMacs wird die Netzwerkkarte manchmal nicht korrekt erkannt. Diese verwenden den BMAC-Treiber:

Befehlsauflistung 4.6: Laden des bmac-Moduls

# modprobe bmac

Optional: Optimieren der Festplattenleistung

Wenn Sie ein fortgeschrittener Benutzer sind, möchten Sie die IDE Festplattenleistung möglicherweise mit hdparm optimieren. Mit den -tT Optionen können Sie die Leistung Ihrer Festplatte testen (führen Sie dieses Kommando mehrfach aus, um präzisere Werte zu erhalten).

Befehlsauflistung 4.7: Testen der Festplattenleistung

# hdparm -tT /dev/hda

Für die Optimierung können Sie eines der folgenden Beispiele verwenden (oder selber experimentieren) welches /dev/hda als Festplatte nutzt (ersetzen Sie das mit Ihrer Festplatte).

Befehlsauflistung 4.8: Optimieren der Festplattenleistung

DMA aktivieren:                                   # hdparm -d 1 /dev/hda
Aktivieren von sicheren Leistungsverbesserungen:  # hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda

Optional: Benutzeraccounts

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

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

Befehlsauflistung 4.9: Wechseln des root Passwort

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

Um einen Benutzeraccount zu erstellen geben wir zunächst den Namen des Accounts ein, gefolgt von einem Passwort. Wir benutzen useradd und passwd für diese Aufgaben. Im nächsten Beispiel erstellen wir den Benutzer "john".

Befehlsauflistung 4.10: Erstellen eines Benutzer Accounts

# useradd -m -G users john
# passwd john
New password: (Geben Sie Johns Passwort ein)
Re-enter password: (Wiederholen Sie Johns Passwort)

Sie können die Benutzerkennung von root zum neu erstellen Benutzer mit su wechseln:

Befehlsauflistung 4.11: Wechseln der Benutzerkennung

# su - john

Optional: Lesen der Dokumentation während der Installation

Wenn Sie das Gentoo Handbuch (entweder von der CD oder Online) während der Installation lesen möchten stellen Sie zunächst sicher, dass Sie einen Benutzer Account (wie in Optional: Benutzer Accounts beschrieben) angelegt haben. Drücken Sie nun Alt-F2 um sich an einem neuen Terminal anzumelden.

Wenn Sie die Dokumentation auf der CD lesen möchten können Sie direkt links - oder sogar links -g für einen grafischen Framebuffer-Browser - starten:

Befehlsauflistung 4.12: Lesen der Dokumentation auf der CD

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

Nichtsdestotrotz ist die Online Version des Gentoo Handbuch vorzuziehen, da diese aktueller sein wird als die auf der CD enthaltene. Sie können diese auch mit links durchblättern, allerdings erst, nachdem Sie das Kapitel Konfiguration des Netzwerk durchgearbeitet haben (andernfalls haben Sie keine Verbindung ins Internet um das Dokument anzuschauen):

Befehlsauflistung 4.13: Lesen der Online Dokumentation

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

Mit Alt-F1 kommen Sie zurück auf Ihr ursprüngliches Terminal.

Optional: Starten des SSH Daemon

Wenn Sie anderen Benutzern während der Installation Zugriff auf Ihren Rechner erlauben wollen (vielleicht weil diese Benutzer Sie bei der Installation unterstützen oder Sie diese für Sie durchführen), müssen Sie einen Benutzer Account für sie erstellen oder ihnen gar das root Passwort geben (machen Sie das nur, wenn Sie diesem Benutzer vollständig Vertrauen).

Um den SSH Daemon zu starten führen Sie folgendes Kommando aus:

Befehlsauflistung 4.14: Starten des SSH Daemon

# /etc/init.d/sshd start

Um sshd nutzen zu können müssen Sie Ihr Netzwerk einrichten. Fahren Sie nun mit dem nächsten Kapitel Konfiguration des Netzwerk fort.

3. Konfiguration des Netzwerks

3.a. Benötigen Sie die Netzwerkfunktionalität?

Wer kann ohne?

Generell benötigen Sie keine Netzwerkverbindung, um Gentoo mit der Univeral Installations-CD oder der Installer LiveCD zu installieren. Es gibt jedoch einige Situationen, in denen Sie eine funktionierende Internetverbindung haben möchten:

  • Die stage3-Dateien auf der der Universal Installations-CD passen nicht zu Ihrer Architektur und Sie müssen die passende stage3-Datei herunterladen
  • Die stage3-Datei, welche von der Installer LiveCD generiert wird, passt nicht zu Ihrer Architektur und Sie müssen die passende stage3-Datei herunterladen
  • Sie müssen eine spezielle Anwendung installieren, um eine Verbindung ins Internet herzustellen die auf der Universal Installations-CD oder der Installer LiveCD nicht vorhanden ist aber von der CD unterstützt wird (das heißt Sie können mit der CD eine Internetverbindung herstellen, die notwendigen Quellen befinden sich aber nicht auf der CD)
  • Sie wollen Remoteunterstützung während der Installation (mit SSH oder durch direkte Unterhaltungen im IRC)

Brauche ich das Netzwerk?

Um herauszufinden, ob die stage3-Datei für Ihre Architektur verfügbar ist und Sie eine Universal Installations-CD verwenden, schauen Sie in /mnt/cdrom/stages nach und kontrollieren, ob eines der verfügbaren Stages zu Ihrer Architektur passt. Wenn nicht können Sie noch eine stage3-Datei einer Architektur auswählen, die mit Ihrer kompatibel ist.

Die stage3-Datei, welche von der x86 Installer LiveCD erstellt wird ist optimiert für i686 oder besser und verwendet NPTL. Die stage3-Datei, welche von der amd64 Installer-LiveCD erstellt wird ist optimiert für generische amd64-Benutzung und verwendet NPTL.

Wenn Sie jedoch eine für Ihre Architektur optimierte stage3-Datei verwenden wollen, dieses jedoch nicht vorhanden ist, bleibt Ihnen nur die Einrichtung des Netzwerks als Option.

Wenn Sie keine Netzwerkverbindung benötigen, können Sie den Rest dieses Kapitels überspringen und mit Vorbereiten der Festplatten fortfahren. Andernfalls folgen Sie den weiteren Abschnitten in diesem Kapitel.

3.b. Automatische Netzwerk Erkennung

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 konfigurierrt wurde, zeigt Ihnen das /sbin/ifconfig Kommando weitere Netzwerkschnittstellen neben lo an, wie beispielsweise eth0:

Befehlsauflistung 2.1: /sbin/ifconfig for a working network configuration

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

Optional: Einen beliebigen Proxy konfigurieren

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 sei proxy.gentoo.org und der Port sei 8080.

Befehlsauflistung 2.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 2.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 auch korrekt arbeitet.

Befehlsauflistung 2.4: Der Netzwerktest

#  ping -c 3 www.yahoo.com

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

3.c. Automatische Netzwerk-Konfiguration

Wenn die Netzwerkverbindung nicht gleich zu stande kommt, beinhalten einige Installationsmedien den Befehl net-setup (für normale und drahtlose Verbindungen) oder adsl-setup (für ADSL Verbindungen) bzw. pptp (für PPTP-Benutzer - nur für x86 verfügbar).

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

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 3.1: Das net-setup Skript 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 Netzwerk Konfiguration fort.

Alternativ: Verwendung von RP-PPPoE

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 rp-pppoe mit. Verwenden Sie das Skript adsl-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 3.2: Verwendung von rp-pppoe

# adsl-setup
# adsl-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

Notiz: PPTP Unterstützung ist nur für x86 verfügbar.

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 3.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 3.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) um mit dem Server zu verbinden.

Befehlsauflistung 3.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.d. Manuelle Netzwerk Konfiguration

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 adsl-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 4.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 4.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 4.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 4.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 Sie sicher, dass die Netzwerkkarte, die Sie nutzen möchten, funktioniert, und denken Sie daran, den richtgen 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 adsl-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 4.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 iwconfig Kommando. Wenn Ihre das Kommando nicht enthält, können Sie den Anleitungen des linux-wlan-ng Projekt folgen.

Wenn Sie eine WLan Karte (802.11) benutzen, müssen Sie Einstellungen zur Nutzung der Karte vornehmen 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 4.6: Anzeigen der aktuellen Einstellungen für drahtlose Verbindungen

# 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 2 Einstellungen anzupassen. Die ESSID (der Name des drahtlosen Netz) oder den WEP Key. Wenn die ESSID und die Adresse des Access Point 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:

Befehlsauflistung 4.7: Ändern der ESSID und/oder Hinzufügen eines WEP Key

(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 Sie DCHP nicht einsetzen können, 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 den folgenden Abschnitt durchgearbeitet haben, werden Sie wissen was ein Gateway ist, wozu eine Netmask dient, wie eine Broadcast Adresse aussieht und wofür man einen Nameserver braucht.

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 4.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. soviel 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, der andere Teil mit Nullen entspricht dem Hostteil. Die Netzmaske kann wie eine IP-Adresse aufgeschrieben werden.

Befehlsauflistung 4.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 4.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 Nameserver 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:

Netzwerk Begriff 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 sog. "routing" ein. D.h. Daten die nicht für das lokale Netzwerk bestimmt sind, werden an das Gateway geschickt. Dies wird mit dem route Befehl 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 sollten.

Befehlsauflistung 4.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 4.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 4.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 4.14: /etc/resolv.conf Template

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

Das wars 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 mehr oder weniger komplizierten Eigenschaften 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 gängigste Block Device is wahrscheinlich das, welches das erste IDE Laufwerk in einem Linux System repräsentiert, namentlich /dev/hda. Wenn Sie auf SCSI-, FireWire-, USB- oder SATA-Laufwerken installieren, wäre Ihre erste Festplatte /dev/sda.

Das obige Block Device repräsentiert ein abstraktes Interface zur Festplatte. Benutzerprogramme können diese Block Device benutzen, um Ihre Festplatte anzusprechen, ohne sich darum zu kümmern, ob Ihre Festplatten IDE, SCSI oder irgendwas 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 den meisten Systemen werden sie Partitionen genant.

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:

Notiz: Wenn Sie einen OldWorld Rechner verwenden, werden Sie MacOS verfügbar halten müssen. Das Layout hier nimmt an, dass MacOS auf einem separaten Laufwerk installiert ist.

Partition NewWorld Partition OldWorld Partition Pegasos Partition RS/6000 Dateisystem Größe Beschreibung
/dev/hda1 /dev/hda1 (nicht anwendbar) (nicht anwendbar) (Partition Map) 32k Apple_partition_map
/dev/hda2 (nicht benötigt) (nicht anwendbar) (nicht anwendbar) (bootstrap) 800k Apple_Bootstrap
(nicht anwendbar) (nicht anwendbar) (nicht anwendbar) /dev/sda1 (PReP Boot) 800k Type 0x41
(nicht anwendbar) /dev/hda2 (wenn quik verwendet wird) /dev/hda1 (nicht anwendbar) ext2 32MB Boot Partition
/dev/hda3 /dev/hda2 (/dev/hda3 wenn quik verwendet wird) /dev/hda2 /dev/hda1 (swap) 512M Swap Partition, Type 0x82
/dev/hda4 /dev/hda3 (/dev/hda4 wenn quik verwendet wird) /dev/hda3 /dev/hda2 ext3, xfs Rest der Festplatte Root Partition, Type 0x83

Notiz: Es gibt einige Partionen mit Namen wie:Apple_Driver63, Apple_Driver_ATA, Apple_FWDriver, Apple_Driver_IOKit, Apple_Patches. Wenn Sie nicht planen MacOS 9 einzuseten können Sie diese löschen, da Mac OS X und Linux diese nicht benötigen. Um diese zu löschen verwenden Sie entweder parted oder löschen die gesamte Platte durch Initialisierung der Partition-Map.

Warnung: parted bietet die Möglichkeit die Größe von Partition anzupassen, auch HSF+. Leider ist es nicht möglich die Größe von journalisierten HSF+ Dateisystemen zu ändern, deaktivieren Sie also Journalisierung in Mac OS X bevor Sie die Größe ändern. Denken Sie daran, dass jede Anpassung der Größe gefährlich ist, Sie tun dies auf eigenes Risiko! Stellen Sie sicher, dass Sie immer ein Backup Ihrer Daten haben bevor Sie die Größe ändern!

Wenn Sie daran interessiert sind zu erfahren, wie groß eine Partition sein sollte, oder auch wie viele Partitionen Sie benötigen, lesen Sie weiter. Anderenfalls fahren Sie nun mit dem Standard: Partitionieren Ihrer Festplatte mit mac-fdisk (Apple) oder Alternativ: Benutzen von parted (IBM/Pegasos) zur Partitionierung.

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 Performanz. Gameserver sollten ein separates /opt haben, da die meisten Gameserver 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.

Wie dem auch sei, mehrere Partitionen haben einen großen Nachteil: wenn sie nicht ordentlich konfiguriert werden, könnte das Resultat ein System sein, welches viel Speicherplatz auf der einen Partition und keinen auf einer anderen frei hat. Es gibt weiterhin ein 15 Partitionen Limit bei SCSI und SATA.

4.c. Standard: Benutzung von mac-fdisk (Apple) zum Partitionieren der Festplatte

An dieser Stelle erstellen Sie Ihre Partitionen mit mac-fdisk:

Befehlsauflistung 3.1: Starten von mac-fdisk

# mac-fdisk /dev/hda

Löschen Sie zunächst die Partitionen, die Sie vorher geleert haben, um Platz für Ihre Linux Partitionen zu schaffen. Benutzen Sie d in mac-fdisk um diese Partitionen zu löschen. Es wird Sie beim Löschvorgang nach einer Partitionsnummer fragen. Für gewöhnlich kann die erste Partition auf NewWorld Maschinen (Apple_partition_map) nicht gelöscht werden.

Nun erstellen Sie eine Apple_Bootstrap Partition mit b. Sie werden nach einem Block gefragt, an dem Sie starten wollen. Geben Sie die Nummer Ihrer ersten freien Partition, gefolgt von einem p ein. Zum Beispiel 2p.

Notiz: Diese Partition ist keine /boot Partition. Sie wird nicht von Linux benutzt; Sie müssen darauf kein Dateisystem anlegen und sollten Sie niemals mounten. Apple Benutzer benötigen keine separate /boot Partition.

Erstellen Sie nun eine Swap Partition indem Sie c drücken. mac-fdisk wird Sie wieder nach einem Block fragen, an dem Sie diese Partition beginnen lassen wollen. Nachdem wir 2 vorher für die Apple_Bootstrap Partition gewählt haben, müssen Sie nun 3p eingeben. Wenn Sie nach der Größe gefragt werden geben Sie 512M ein (oder die Größe die Sie möchten ein — 512 MB ist empfohlen). Wenn Sie nach einem Namen gefragt werden, geben Sie swap ein (erforderlich).

Um die Root Partition zu erstellen, geben Sie c gefolgt von 4p ein, um auszuwählen, an welchem Block die Root Partition beginnen soll. Wenn Sie nach der Größe gefragt werden, geben Sie wieder 4p ein. mac-fdisk interpretiert dies als "Benutze den ganzen verfügbaren Platz". Wenn Sie nach dem Namen gefragt werden, geben Sie root ein (erforderlich).

Abschließend schreiben Sie die Partitionstabelle mit w und beenden mac-fdisk mit q.

Notiz: Um sicherzustellen, dass die Partitionierung wie gewünscht übernommen wurde sollten Sie mac-fdisk erneut ausführen und prüfen, ob alle Partitionen angelegt wurden. Wenn Sie keine der von Ihnen angelegten Partitionen (oder andere Änderungen) sehen können, sollten Sie die Partitionen mit "i" in mac-fdisk reinitialisieren. Beachten Sie, dass dies die Partitionstabelle neu erstellt und so alle Partitionen löscht.

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

4.d. Benutzen von parted (insbesondere Pegasos) zur Partitionierung

parted, der Partition Editor kann nun HFS+ Partitionen bearbeiten, die von MacOS und Mac OS X genutzt werden. Mit diesem Tool können Sie Mac-Partitionen verkleinern und Platz für Linux Partitionen schaffen. Das nachfolgende Beispiel beschreibt dennoch nur die Partitionierung für Pegasos Maschinen.

Starten Sie parted:

Befehlsauflistung 4.1: parted Starten

# parted /dev/hda

Wenn die Festplatte unpartitioniert ist führen sie mklabel amiga aus, um ein neues Disklabel für diese Festplatte zu erstellen.

Sie können in parted jederzeit print eingeben, um die aktuelle Partitionstabelle anzuzeigen. Sie können parted jederzeit mit Strg-c abbrechen, wenn Sie einen Fehler gemacht haben oder sich Ihre Vorstellungen ändern.

Wenn Sie auf Ihrem Pegasos auch MorphOS installieren möchten, erstellen Sie ein affs1 Dateisystem namens "BIO" (BI zero) um Anfang der Festplatte. 32MB sollten mehr als genug sein, um den MorphOS Kernel unterzubringen. Wenn Sie einen Pegasos I haben oder reiserfs oder xfs benutzen möchten, müssen Sie Ihren Linux Kernel ebenfalls auf dieser Partition ablegen (Der Pegasos II kann nur von ext2/ext3 oder affs1 Partitionen booten). Um diese Partition zu erstellen führen Sie mkpart primary affs1 START END aus, wobei START und END mit dem Megabyte Bereich ersetzt werden sollten. (0 32 erstellt eine 32 MB Partition beginnend bei 0MB und endend bei 32MB.

Für Linux müssen Sie zwei Partitionen erstellen, ein Root-Dateisystem für alle Programm Dateien etc. und eine Swap Partition. Um das Root-Dateisystem zu erstellen, müssen Sie sich zunächst entscheiden, welches Dateisystem Sie benutzen möchten. Mögliche Optionen sind ext2, ext3, reiserfs und xfs. Wählen Sie ext3, solange Sie nicht genau wissen, was Sie tun. Führen Sie mkpart primary ext3 START END aus, um eine ext3 Partition zu erstellen. Auch hier: Ersetzen Sie START und END mit den Megabyte Start- und End-Werten der Partition.

Es ist generell empfohlen eine Swap Partition zu erstellen, die doppelt so gross ist, wie der verfügbare Arbeitsspeicher. Sie kommen evtl. auch mit einer kleineren Swap Partition aus, solange Sie nicht planen eine Vielzahl an Applikationen gleichzeitig auszuführen (dennoch sind mindestens 512MB empfohlen). Um die Swap Partition zu erstellen führen Sie mkpart primary linux-swap START END aus.

Notieren Sie sich die Nummern der einzelnen Partitionen, da Sie diese während des weiteren Installationsvorgangs benötigen. Um die Nummern anzuzeigen führen sie print aus. Ihre Partitionen werden als /dev/hdaX angesprochen, wobei X durch die Nummer der Partition zu ersetzen ist.

Wenn Sie fertig sind, führen Sie quit aus.

4.e. Erstellen der Dateisysteme

Einleitung

Jetzt sind Ihre Partitionen erstellt, so dass es nun an der Zeit ist Dateisysteme anzulegen. Wenn Sie mit dem zufrieden sind, was wir Ihnen vorschlagen, dann fahren Sie mit Dateisystem auf einer Partition anlegen fort. Wenn nicht, lesen Sie weiter, um ein wenig mehr über Dateisysteme zu lernen ...

Dateisysteme?

Verschiedene Dateisysteme sind verfügbar. ext2, ext3, ReiserFS und XFS stufen wir als stabil auf der PPC-Plattform ein.

ext2 ist das erprobte und wahre Linux Dateisystem, unterstützt aber kein Metadata Journaling, was bedeutet, dass routinemäßige Dateisystem Checks beim Booten sehr 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.

ext3 ist die journalisierende Version des ext2 Dateisystems, die Metadaten Journaling für schnelle Wiederherstellung sowie andere verbesserte Journaling Modi wie "full data" und "ordered data" Jornaling unterstützt. ext3 ist ein sehr gutes und verlässliches Dateisystem. Es hat eine zusätzliche B-Baum Indexierungsoption, die in fast allen Situationen hohe Performanz ermöglicht. Sie können diese Indexierung aktivieren, indem Sie -O dir_index zum mke2fs Befehl hinzufügen. Kurz gesagt: ext3 ist ein exzellentes Dateisystem.

ReiserFS ist ein B*-tree basierendes Dateisystem mit einer guten Performance und überholt sowohl ext2 und ext3 im Umgang mit kleinen Dateien (Dateien kleiner als 4k) oftmals mit einem Faktor von 10x-15x. ReiserFS skaliert extrem gut und hat Metadata Journaling. Seit Kernel 2.4.18+ ist ReiserFS stabil und sowohl als Dateisystem für generelle Anwendungen, als auch für extreme Fälle wie große Dateisysteme, den Gebrauch mit vielen kleinen Dateien, den Gebrauch mit sehr großen Dateien und Verzeichnissen mit tausenden von Dateien brauchbar.

XFS ist ein Dateisytem mit metadata journaling, das mit einem robusten Feature-Set kommt und auf Skalierbarkeit ausgelegt ist. Wir empfehlen den Einsatz dieses Dateisystems nur auf Linux Systemen mit High-End SCSI und/oder Fibre Channel Storage und einer redundaten Stromversorgung. Da XFS agressiv vom RAM gebraucht macht, können unsachgemäß designte Programme (solche die keine Vorsichtsmaßnahmen treffen, wenn Sie auf die Festplatte schreiben und davon gibt es einige) dazu führen, dass eine ganze Menge Daten verloren gehen, wenn das System unerwartet ausfällt.

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
reiserfs mkfs.reiserfs
xfs mkfs.xfs

Um die Root Partition (/dev/hda4 in unserem Beispiel) als ext3 (wie in unserem Beispiel) zu formatieren, führen Sie folgende Kommandos aus:

Befehlsauflistung 5.1: Eine Partition mit einem Dateisystem formatieren

# mkfs.ext3 /dev/hda4

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

Notiz: Auf dem PegasosII muss die Partition, die den Kernel beherbergt, mit ext2 oder ext3 formatiert sein. NewWorld Maschinen können von ext2, ext3, XFS, ReiserFS oder sogar HFS/HFS+ Dateisystemen booten. Auf OldWorld Maschinen, die mit BootX starten, muss der Kernel sich auf einer HSF Partition befinden. Dies wird aber auch vervollständigt wenn Sie Ihren Bootloader konifgurieren.

Aktivieren der Swap Partition

mkswap ist das Kommando, mit dem Sie die Swap Partition initialisieren:

Befehlsauflistung 5.2: Erstellen der Swap Signatur

# mkswap /dev/hda3

Um die Swap Partition zu aktivieren, benutzen Sie swapon:

Befehlsauflistung 5.3: Aktivieren der Swap Partition

# swapon /dev/hda3

Erstellen und aktivieren Sie jetzt Ihre Swap Partition.

4.f. Mounten

Nachdem Ihre Partitionen nun initialisiert sind und ein Dateisystem beinhalten, können Sie diese 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 Partition:

Befehlsauflistung 6.1: Mounten von Partitionen

# mkdir /mnt/gentoo
# mount /dev/hda4 /mnt/gentoo

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 (ein virtuelles Interface zum Kernel) auf /proc mounten. Zunächst müssen wir jedoch alle Dateien auf der Partition ablegen.

Fahren Sie mit der Installation der Gentoo Installations Dateien fort.

5. Installation der Gentoo Installations Dateien

5.a. Ein Stage-Archiv installieren

Setzen von Zeit/Datum

Bevor Sie fortfahren, sollten Sie Ihre Zeit/Datum Einstellung ü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 Uhr 21 zu setzen, führen Sie zum Beispiel folgenden Befehl aus:

Befehlsauflistung 1.2: Setzen von UTC-Zeit/Datum

# date 032916212005

Das Stage 3 Archiv finden

Wenn Sie das Netzwerk eingerichtet haben, da Sie ein Stage3-Archiv herunterladen wollen, fahren Sie mit Alternativ: Herunterladen eines Stage3-Archiv fort. Andernfalls lesen Sie Standard: Stage-Archiv von der Installations-CD benutzen

5.b. Standard: Stage-Archiv von der Installations-CD benutzen

Enpacken des Stage-Archiv

Die Stage-Archive liegen auf der CD im Verzeichnis /mnt/cdrom/stages. Um eine Auflistung zu erhalten, benutzen Sie ls:

Befehlsauflistung 2.1: Liste aller verfügbarer Stage-Archive

# ls /mnt/cdrom/stages

Falls das System mit einem Fehler wie unten antwortet, müssen Sie die CD-ROM mounten:

Befehlsauflistung 2.2: Mounten der CD-ROM

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

Nun gehen Sie zu Ihrem Gentoo Mountpunkt (gewöhnlich /mnt/gentoo):

Befehlsauflistung 2.3: Wechseln des Verzeichnisses zu /mnt/gentoo

# cd /mnt/gentoo

Wir werden nun das von Ihnen gewählte Stage-Archiv entpacken. Dies erledigt tar. Benutzen Sie die gleichen Schalter (xvjpf)! Das x steht für Entpacken, das v für Verbose, was detailiertere Informationen über den Entpackungsvorgang ausgibt (optional), das j gibt das Dekomprimieren mit bzip2 an, p fordert Erhalten der Dateirechte und f gibt an, dass der Input eine Datei ist und nicht vom Standardinput gelesen werden soll. Beispielhaft entpacken wir das Stage-Archiv stage3-<Subarchitektur>-2006.0.tar.bz2. Ersetzen Sie den Dateinamen durch den Ihres Stage-Archivs!

Befehlsauflistung 2.4: Entpacken des Stage-Archivs

# tar xvjpf /mnt/cdrom/stages/stage3-<Subarchitektur>-2006.0.tar.bz2

Wenn das Stage-Archiv installiert ist, fahren Sie nun mit der Installation von Portage fort.

5.c. Alternativ: Ein Stage3-Archiv herunterladen

Herunterladen des Stage-Archivs

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

Befehlsauflistung 3.1: Wechseln zum Gentoo Mountpunkt

# cd /mnt/gentoo

Abhängig vom Installationsmedium finden Sie verschiedene Programme, um das Stage-Archiv 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.

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 3.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 nun davon aus, dass Ihnen links zur Verfügung steht.

Wechseln Sie dann in das Verzeichnis releases/, gefolgt von Ihrer Rechnerarchitektur (zum Beispiel x86/) und der Gentoo Version (2006.0). In dem Verzeichnis stages/ finden Sie die für Ihren Rechnertypen verfügbaren Stage-Archive (sie sind möglichweise in individuellen Unterverzeichnissen abgelegt). Wählen Sie eins und starten den Download mit der Taste D! Danach können Sie den Browser mit der Taste Q schließen.

Befehlsauflistung 3.3: Mirrorliste mit links anschauen

# links http://www.gentoo.org/main/en/mirrors.xml
(Wenn Sie Proxy Unterstützung in links2 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 länger unterstützt.

Wenn Sie die Integrität des heruntergeladenen Stage-Archivs prüfen wollen, benutzen Sie md5sum und vergleichen Sie die Ausgabe mit den MD5-Prüfsummen auf dem Mirror. Kontrollieren Sie zum Beispiel die Integrität eines x86-Stage-Archivs:

Befehlsauflistung 3.4: Integrität eines Stage-Archives prüfen

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

Entpacken des Stage-Archiv

Nun entpacken Sie das heruntergeladene Stage-Archiv auf Ihrem System. Wir benutzen tar dafür, weil es der direkte Weg ist:

Befehlsauflistung 3.5: Entpacken des Stage-Archivs

# tar xvjpf stage3-*.tar.bz2

Stellen Sie sicher, dass Sie die gleichen Optionen benutzen (xvjpf). Das x steht für Entpacken, das v für Verbose um zu sehen was geschieht (dies ist optional), das p für Erhalten der Dateirechte und das f besagt, dass Sie eine Datei entpacken möchten.

Wenn das Stage Archiv installiert ist, fahren Sie nun mit der Installation von Portage fort.

5.d. Installation von Portage

Einen Portage Snapshot entpacken

Sie müssen einen Snapshot des Portage Tree installieren, eine Sammlung von Dateien, die Portage informieren, welche Porgramme installiert werden können, welche Profile es gibt, etc.

Entpacken des Portage Snapshot von der Installations-CD

Um den Snapshot zu entpacken, schauen Sie in /mnd/cdrom/snapshots nach, welcher Snapshot verfügbar ist:

Befehlsauflistung 4.1: Kontrollieren des Inhalts von /mnt/cdrom/snapshots

# ls /mnt/cdrom/snapshots

Entpacken Sie nun den Snapshot mit dem folgenden Konstrukt. Stellen Sie erneut sicher, dass Sie die exakt gleichen tar Optionen benutzen. Das -C ist weiterhin ein großes C, kein c. Im nächsten Beispiel benutzen wir portage-<date>.tar.bz2 als Dateinamen. Passen Sie den Namen mit dem Namen des Snapshots von der Installations-CD an.

Befehlsauflistung 4.2: Einen Portage Snapshot entpacken

# tar xvjf /mnt/cdrom/snapshots/portage-<date>.tar.bz2 -C /mnt/gentoo/usr

Kopieren der Quelltext Archive

Sie müssen ebenfalls noch alle Quelltext Archive von der Universellen Installations-CD kopieren.

Befehlsauflistung 4.3: Quelltext Archive kopieren

# mkdir /mnt/gentoo/usr/portage/distfiles
# cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/

5.e. 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 gesetzt werden (mit export), dies ist aber keine dauerhafte Lösung. Um Ihre Einstellungen zu behalten, bietet Portage Ihnen /etc/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/etc/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 5.1: Öffnen von /etc/make.conf

# nano -w /mnt/gentoo/etc/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.

Warnung: Wenn Sie eine Stage3-Installation mit GRP durchführen, nehmen Sie keine Änderungen an der USE Variable vor. Sie können die USE Variable nach der Installation der GRP Pakete anpassen. Sollten Sie diese Warnung ignorieren werden Gremlins Ihr System angreifen!

CHOST

Die CHOST Variable deklariert den Zielerstellungs-Host für Ihr System. Diese Variable sollte schon auf den korrekten Wert gesetzt sein. Verändern Sie diese nicht, denn es kann Ihr System immens beschädigen. Wenn die CHOST Variable Ihnen falsch zu sein scheint, verwenden Sie unter Umständen ein falsches stage3 Archiv.

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 Ihr System allgemein am anspechbarsten ist. 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 -- geht 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= Flag, dieses spezifiziert den Namen der Zielarchitektur. Mögliche Optionen werden in make.conf.example (als Kommentare) beschrieben. Als Beispiel die Einstellung für eine x86 Athlon XP Architektur:

Befehlsauflistung 5.2: Die GCC march Einstellung

# AMD64 Benutzer die ein natives 64Bit-System nutzen möchten sollten -march=k8 benutzen
-march=athlon-xp

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 3 für auf höhere Geschwindigkeit optimierte Flags (jede Klasse erbt die Flags der kleineren, zuzüglich ein paar Extras). Zum Beispiel eine Klasse-2 Optimierung:

Befehlsauflistung 5.3: Die GCC O Einstellung

-O2

Weitere gerne benutzte Optimierungsflags sind -pipe (benutzt Pipes statt temporärer Dateien für die Kommunikation zwischen den verschiedenen Stufen des Übersetzungsvorganges)

Beachten Sie, dass die Nutzung von -fomit-frame-pointer (dadurch werden die Frame Pointer für Funktionen, die diese nicht brauchen, nicht mehr in einem Register gehalten) erhebliche Auswirkungen auf das Debuggen von Anwendungen hat!

In CFLAGS und CXXFLAGS können Sie mehrere Optimierungsflags kombinieren, wie das folgende Beispiel zeigt:

Befehlsauflistung 5.4: Setzen der CFLAGS und CXXFLAGS Variablen

CFLAGS="-march=athlon-xp -pipe -O2" # AMD64 Benutzer sollten march=k8 benutzen
                                    # EM64T Benutzer sollten march=nocona benutzen
CXXFLAGS="${CFLAGS}"                # Benutzen Sie die gleichen Einstellungen für beide Variablen

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 in Ihrem System erhöht um Eins, jedoch ist diese Richtlinie nicht immer passend.

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

MAKEOPTS="-j2"

Auf die Plätze, fertig, los!

Aktualisieren Sie /mnt/gentoo/etc/make.conf nach Ihren Bedürfnissen und speichern Sie die Datei (nano Benutzer drücken Strg-X). Nun sind Sie bereit um mit der Chroot in das Gentoo Basis System fort zu fahren.

6. Chroot in das Gentoo Basis System

6.a. Chroot

Mounten des /proc und /dev Dateisystems

Mounten Sie das /proc Dateisystem nach /mnt/gentoo/proc, um für die Installation vom Kernel angebotene Informationen innerhalb der chroot Umgebung nutzbar zu machen. Mounten Sie außerdem mit Bind das /dev Dateisystem.

Befehlsauflistung 1.1: Mounten von /proc und /dev

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

Optional: Kopieren der DNS Informationen

Wenn Sie das Netzwerk eingerichtet haben, um ein Stage Archiv herunterzuladen müssen Sie die DNS Informationen aus der /etc/resolv.conf in die Chroot Umgebung kopieren. 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.2: Kopieren der DNS Informationen

# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Betreten der neuen Umgebung

Nachdem nun alle Partitionen initialisiert und das Basis System installiert ist, können Sie nun Ihre neue Installationsumgebung zu 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 3 Schritten. Als erstes werden wir das root von / (auf dem Installationsmedium) nach /mnt/gentoo (auf Ihren Partitionen) mittels chroot wechseln. Sie müssen nun eine neue Umgebung anlegen, indem Sie env-update benutzen, was hauptsächlich neue Umgebungsvariablen anlegt. Zu guter Letzt laden Sie diese Variablen durch den Befehl source in den Speicher.

Befehlsauflistung 1.3: Chroot in die neue Umgebung

# chroot /mnt/gentoo /bin/bash
# env-update
>>> Regenerating /etc/ld.so.cache...
# 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.

Erstellen des Cache für Portage

Sie haben bereits den Portage-Baum installiert, jedoch sollten Sie nun den Cache für Portage erstellen, um zukünftige emerge Operationen zu beschleunigen. emerge --metadata erledigt das für Sie.

Befehlsauflistung 1.4: Erstellen des Cache für Portage

# emerge --metadata

6.b. Konfiguration der USE-Variable

Was ist die USE-Variable?

USE heißt eine der mächtigsten Variablen, 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 -qt 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.

Anpassen USE-Variable

Warnung: Nehmen Sie keinerlei Anpassungen an der USE-Variable vor, wenn Sie planen GRP Pakete zu installieren. Sie können die USE-Variable nach der Installation der GRP Pakete anpassen. Sollten Sie diese Warnung ignorieren, werden Gremlins Ihr System angreifen!

Die Standardeinstellungen für USE sind in der /etc/make.profile/make.defaults Datei in Ihrem Profil definiert. Sie finden make.defaults Dateien in dem Verzeichnis, auf welches /etc/make.profile zeigt und übergeordneten Verzeichnissen. Die Gesamtheite aller aktivierten USE-Flags ergibt sich, aus allen USE Angaben in allen make.defaults Dateien. Was Sie in /etc/make.conf plazieren, wird zu den Standardeinstellungen addiert. Wenn Sie der USE Einstellung etwas hinzufügen, werden die Standardvorgaben damit erweitert. Wenn Sie von 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/make.profile modifizieren; dies wird beim nächsten Portage Update überschrieben!

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

Befehlsauflistung 2.1: 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.2: /etc/make.conf Öffnen

# nano -w /etc/make.conf

Befehlsauflistung 2.3: USE-Einstellung

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

7. Konfiguration des Kernels

7.a. Setzen der Zeitzone des Systems

Zuerst müssen Sie dem System sagen, in welcher Zeitzone es sich befindet. Suchen Sie Ihre Zeitzone in /usr/share/zoneinfo/ und kopieren Sie diese dann 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: GMT)
# cp /usr/share/zoneinfo/GMT /etc/localtime

7.b. Installieren der Quellen

Auswählen eines Kernels

Der Kern um den herum alle Distributionen gebaut sind ist der Linux Kernel. Es ist 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.

Wir empfehlen die Verwendung von vanilla-sources oder gentoo-sources unter PPC, beide sind 2.6 Kernel. Der letztgenannte ist für netzwerklose Installationen verfügbar. Fahren wir mit dem Installieren der Kernel Sourcen fort. Das USE="-doc" ist notwendig um zu verhindern, dass xorg-x11 oder andere Abhängigkeiten zu diesem Zeitpunkt installiert werden. USE="symlink" ist nicht zwingend bei einer Neuinstallation, stellt aber sicher, dass der /usr/src/linux Symlink korrekt erstellt wird.

Befehlsauflistung 2.1: Installieren einer Kernelquelle

# USE="-doc symlink" emerge gentoo-sources

Wenn Sie einen Blick in /usr/src werfen, sollten Sie einen Symlink namens linux sehen, der auf Ihre momentane Kernelquelle verweist. In diesem Fall verweisen die installierten Kernelquellen auf gentoo-sources-2.6.15. Denken Sie daran, dass Ihre Version eine andere sein kann.

Befehlsauflistung 2.2: Anzeigen des Kernelquellen Symlinks

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           22  Mar 18 16:23 /usr/src/linux -> linux-2.6.15

Nun ist es Zeit Ihre Kernelquelle zu konfigurieren und zu kompilieren. Sie 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 verwenden möchten, dann sollten Sie stattdessen Alternative: Verwendung von genkernel lesen.

7.c. Standard: Manuelle Konfiguration

Einleitung

Einen Kernel manuell zu konfigurieren wird oft als der schwierigste Teil gesehen, den jeder Linux Benutzer 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 ;-)

Jedoch, eine Sache ist wahr: Sie müssen Ihr System kennen, wenn Sie beginnen einen Kernel manuell zu konfigurieren. Die meisten Informationen 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 auswirft, 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 netten Hinweis darauf geben was zu aktivieren ist). Ein weiterer Ort an dem man nach Hinweisen suchen kann, um festzustellen welche Komponenten aktiviert werden sollten, sind die Nachrichtenprotokolle des Kernels vom bisherigen erfolgreichen Boot. Tippen Sie dmesg ein um die Kernelnachrichten zu betrachten.

Gehen Sie nun in Ihr Kernelquellverzeichnis, es ist Zeit Ihren Kernel zu konfigurieren. Es wird empfohlen, dass Sie die Standardeinstellungen zu Ihrer Konfiguration hinzufügen indem Sie zuerst make defconfig ausführen. Nachdem die Standardkonfiguration generiert wurde, führen Sie make menuconfig aus. Dies startet ein ncurses-basierendes Konfigurationsmenü.

Befehlsauflistung 3.1: Menuconfig starten

# cd /usr/src/linux
# make defconfig
# 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

Zunächst aktivieren Sie die Benutzung von entwicklungs- und experiementellem/n Code/Treiber(n). Sie brauchen dies, denn ansonsten werden einige wichtige Codeabschnitte/Treiber nicht erscheinen.

Befehlsauflistung 3.2: Selektieren experimenteller/n Codes/Treiber, generelle Einstellungen

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

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 zu mounten. Wählen Sie auch /proc file system und Virtual memory.

Befehlsauflistung 3.3: Selektieren notwendiger Dateisysteme

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(Selektieren Sie eine oder mehrere der folgenden Optionen, wie benötigt
von Ihrem System)

  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> Second extended fs support
  <*> XFS filesystem support

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

Befehlsauflistung 3.4: Auswählen PPPoE notwendiger Treiber

Device Drivers --->
  Networking 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 vielleicht nur von rp-pppoe verwendet wird, wenn der Kernelmodus PPPoE benutzt wird.

Wenn Sie es benötigen, vergessen Sie nicht Unterstützung für Ihre Netzwerkkarte in Ihren Kernel einzubinden.

Benutzer von NewWorld und OldWorld Rechnern werden auch HSF Unterstützung haben wollen. OldWorld Benutzer benötigen es um kompilierte Kernel auf die MacOS Partition zu kopieren. NewWorld Benutzer benötigen es für die Konfiguration der speziellen Apple_Bootstrap Partition.

Befehlsauflistung 3.5: Aktivieren von HFS Unterstützung

File Systems --->
  [*] HFS Support

Zu diesem Zeitpunkt ist Kernel-Preemption noch instabil unter PPC und kann Fehler bei der Kompilierung sowie zufällige Segmentierungsfehler hervorrufen. Es wird Ihnen dringend empfohlen, dass Sie diese Funktion nicht verwenden. diese FunktioNachdruck davon ab diese Funktion zu verwenden.

Befehlsauflistung 3.6: Sicherstellen, dass die Preemptible Kerneloption aus ist

Platform options --->
  [ ] Preemptible Kernel

Wenn Sie von Firewire starten, dann werden Sie auch diese Optionen aktivieren müssen. Wenn Sie Unterstützung einkompilieren wollen, dann müssen Sie diese Module und die dazugehörigen Abhängigkeiten zu einem initrd hinzufügen.

Befehlsauflistung 3.7: Unterstützung für Firewire Geräte beim Boot aktivieren

Device Drivers --->
  IEEE 1394 (FireWire) support --->
    <*> IEEE 1394 (FireWire) support
    <*>   OHCI-1394 support
    <*>   SBP-2 support (Harddisks etc.)

Wenn Sie von USB starten, dann werden Sie auch diese Optionen aktivieren müssen. Wenn Sie Unterstützung einkompilieren wollen, dann müssen Sie diese Module und die dazugehörigen Abhängigkeiten zu einem initrd hinzufügen.

Befehlsauflistung 3.8: Unterstützung für USB Geräte beim Boot aktivieren

Device Drivers --->
  USB support --->
    <*> Support for Host-side USB
    <*>   OHCI HCD support
    <*>   USB Mass Storage support

Deaktivieren Sie Kernel Framebufferunterstützung nicht, da es für einen erfolgreichen Start benötigt wird. Wenn Sie einen NVIDIA basierenden Chipsatz verwenden, sollten Sie den OpenFirmware Framebuffer verwenden. Wenn sie einen ATI basierenden Chipsatz verwenden, sollten Sie den Framebuffer nach Ihrem Chipsatz wählen (Mach64, Rage128 oder Radeon).

Befehlsauflistung 3.9: Einen Framebuffer-Treiber auswählen

Device Drivers --->
  Graphics support --->
    <*> Support for frame buffer devices
    [*] Open Firmware frame buffer device support
    <*> ATI Radeon display support
    <*> ATI Rage128 display support
    <*> ATI Mach64 display support
    Console display driver support --->
      <*> Framebuffer Console support

Notiz: Wenn Sie mehr als ein Framebuffer-Treiber auswählen, kann es sein, dass standardmäßig ein nicht ganz optimalen Treiber verwendet wird. Entweder Sie verwenden nur einen Framebuffer-Treiber oder übergeben Sie an den Kernel mit einer Zeile wie video=radeonfb, welcher Treiber vom Kernel während des Bootens verwendet werden soll.

Wenn Sie die Konfiguration des Kernel beendet haben fahren Sie mit Kompilieren und Installieren fort.

Kompilieren und Installieren

Nun da Ihr Kernel konfiguriert ist, ist es Zeit ihn zu kompilieren und zu installieren. Verlassen Sie die Konfiguration und führen Sie die Kommandos zum kompilieren des Kernel aus:

Befehlsauflistung 3.10: Kompilieren des Kernels

# make && make modules_install

Wenn der Kernel fertig ist mit der Kompilierung, kopieren Sie das Kernel-Image nach /boot (stellen Sie sicher, dass es ordnungsgemäß auf Pegasos-Rechnern eingebunden ist). Wenn Sie BootX zum booten verwenden wird der Kernel später kopiert.

Yaboot und BootX erwarten einen nicht-komprimierten Kernel, anders als viele andere Bootloader. Der nicht-komprimierte Kernel heißt vmlinux und ist in /usr/src/linux plaziert, nachdem der Kernel die Kompilierung beendet hat. Wenn Sie einen Pegasos-Rechner verwenden benötigt das Pegasos-Firmware einen komprimierten Kernel mit Namen zImage.chrp welchen man in /usr/src/linux/arch/ppc/boot/images findet.

Befehlsauflistung 3.11: Installieren des Kernels

# cd /usr/src/linux
Ersetzen Sie  <Kernelversion> mit Ihrer Kernelversion
(Apple/IBM)
# cp vmlinux /boot/<Kernelversion>
(Pegasos)
# cp arch/ppc/boot/images/zImage.chrp /boot/<Kernelversion>

Fahren Sie nun mit dem Installieren separater Kernelmodule fort.

7.d. Installieren separater Kernelmodule

Konfiguration der Module

Sie sollten alle Module, die automatisch geladen werden sollen, in /etc/modules.autoload.d/kernel-2.6 eintragen. Wenn Sie möchten können Sie auch zusätzliche Optionen anhängen.

Um alle verfügbaren Module anzuzeigen führen Sie das folgende find Kommando aus. Vergessen Sie nicht "<kernel version>" mit der Version Ihres Kernel zu ersetzen, den Sie gerade kompiliert haben:

Befehlsauflistung 4.1: Listen aller verfügbarer Module

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

Um zum Beispiel das 3c59x.o Modul automatisch zu laden editieren Sie die kernel-2.6 Datei und tragen den Modulnamen ein.

Befehlsauflistung 4.2: /etc/modules.autoload.d/kernel-2.6

# nano -w /etc/modules.autoload.d/kernel-2.6

Befehlsauflistung 4.3: /etc/modules.autoload.d/kernel-2.6

3c59x

Fahren Sie nun mit der Konfiguration des System fort.

7.e. Alternative: Verwenden von genkernel

Wenn Sie diesen Abschnitt lesen, haben Sie sich entschieden unser genkernel Skript zu benutzen, um sich Ihren Kernel 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 Unwohl bei der Kompilierung eines eigenen Kernel ist.

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

Befehlsauflistung 5.1: genkerne mit emerge installierenl

# emerge genkernel

Kopieren Sie nun die Kernelkonfiguration, die von der Installations-CD verwendet wird, an den Platz wo genkernel die Standard Kernelkonfiguration erwartet:

Befehlsauflistung 5.2: Kopieren der Kernelkonfiguration der Installations-CD

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

Wenn Sie Firewire oder USB verwenden um zu booten, müssen Sie Module zum initrd hinzufügen. Editieren Sie /usr/share/genkernel/ppc/modules_load und ändern Sie MODULES_FIREWIRE="ieee1394 ohci1394 sbp2" für Firewire Unterstützung oder MODULES_USB="usbcore ohci-hcd ehci-hcd usb-storage" für USB-Unterstützung.

Kompilieren Sie nun Ihre Kernelquellen indem Sie genkernel --genzimage all Für Pegasos muss eine andere Konfiguration verwendet werden und es muss ein zImage anstatt des vmlinux Kernels, der auf Apple Maschinen verwendet wird, erstellt werden. ausführen. Beachten Sie jedoch, dass genkernel einen Kernel kompiliert, der fast jede Hardware unterstützt, daher wird diese Kompilierung einen relativ langen Zeitraum in Anspruch nehmen.

Beachten Sie, dass wenn Ihre Parititon auf der sich der Kernel befindet nich ext2 oder ext3 als Dateisystem verwendet, Sie möglicherweise manuell Ihren Kernel konfigurieren müssen mit genkernel --menuconfig --genzimage all und Unterstützung für das Dateisystem im Kernel (also nicht als Modul) hinzufügen müssen. Benutzer von EVMS2 oder LVM2 werden wahrscheinlich die Argumente --evms2 oder --lvm2 ebenfalls hinzufügen wollen.

Befehlsauflistung 5.3: Ausführen von genkernel

# genkernel --genzimage all

Befehlsauflistung 5.4: Ausführen von genkernel unter Pegasos

# genkernel --genzimage --kernel-config=/usr/share/genkernel/ppc/Pegasos all

Sowie genkernel abgeschlossen wurde, ist ein Kernel, ein voller Satz Module und eine initiale root disk (initrd) erstellt worden. Wir werden den Kernel und das initrd verwenden wenn wir einen Bootloader, später in diesem Handbuch, konfigurieren. Schreiben Sie sich die Namen des Kernels und des initrd auf, denn Sie werden diese benötigen, wenn Sie die Konfigurationsdatei für Ihren Bootloader schreiben. Das initrd wird direkt nach dem booten gestartet, um Hardware Autoerkennung durchzuführen (genau wie die Installations-CD), bevor ein "richtiges" System hochfährt. Stellen Sie sicher, dass Sie eine Notiz von den benötigten Bootargumenten gemacht haben, diese sind notwendig für einen erfolgreichen Boot mit genkernel.

Befehlsauflistung 5.5: Überprüfen der Namen des erstellten Kernel-Image und initrd

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

Lassen Sie uns nun einen weiteren Schritt durchführen um das System weiter der Installations-CD anzugleichen. Installieren Sie mit emerge coldplug. Während initrd dafür zuständig ist, die Hardware zu erkennen die benötigt wird um Ihr System zu starten, erkennt coldplug automatisch weitere Hardware. coldplug wird als Paket auf einer der Package CDs mitgeliefert.

Befehlsauflistung 5.6: Installieren und aktivieren von coldplug

(Führen Sie dies später während der Installation der GRP Pakete aus)
# emerge -k coldplug
# rc-update add coldplug boot

Wenn Sie wünschen, dass Ihr System auf Hotplug-Ereignisse reagiert, dann müssen Sie hotplug installieren und auch einrichten:

Befehlsauflistung 5.7: Installieren und aktivieren von hotplug

# emerge hotplug
# rc-update add hotplug default

Fahren Sie nun mit der Konfiguration des System fort.

8. Konfiguration des Systems

8.a. Dateisystem-Informationen

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 der /etc/fstab

/etc/fstab verwendet eine spezielle 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äte-Datei)
  • 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 werden soll oder nicht. Normalerweise lässt man diesen Wert auf 0 (Null).
  • Das sechste Feld wird von fsck ausgelesen um Reihenfolge festzustellen, in der das Dateisystem auf Inkonsistenz zu prüfen ist, wenn das System nicht ordentlich heruntergefahren wurde. 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).

Die von Gentoo mitgelieferte Datei /etc/fstab ist keine valide fstab-Datei. Starten Sie nano (oder den Editor Ihrer Wahl) um die Datei /etc/fstab zu editieren:

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, falls Ihr System keine /boot Partition benötigt (wie z.B. PPC Maschinen), übernehmen Sie den Eintrag einfach nicht.

In diesem Beispiel ist die /boot Partion auf /dev/hda1 mit dem ext2 Dateisystem formatiert. Die Partition soll beim Systemstart geprüft werden. Also muss der Eintrag folgendermaßen aussehen:

Befehlsauflistung 1.2: Beispiel: /boot-Partition in /etc/fstab

/dev/hda1   /boot     ext2    defaults        1 2

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

Um die Geschwindigkeit zu erhöhen, fügen manche Benutzer noatime als Mountoption hinzu. Das Ergebnis ist ein schnelleres System, da die Zugriffszeiten (die Sie normalerweise sowieso nicht benötigen) nicht registriert werden:

Befehlsauflistung 1.3: Eine verbesserte /boot-Zeile für /etc/fstab

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

Wenn wir das Beispiel auf die Partitionen /boot, / und die Swap-Partiton übertragen, erhalten wir folgende 3 Zeilen in der fstab:

Befehlsauflistung 1.4: 3 Zeilen in /etc/fstab

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

Zur Vervollständigung fehlen noch Einträge für /proc, tmpfs (notwendig) und für Ihr CD-ROM-Laufwerk. Falls Sie weitere Partitionen oder ein Diskettenlaufwerk haben, sollten Sie diese natürlich auch eintragen:

Befehlsauflistung 1.5: Beispiel: Vollständige /etc/fstab

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

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

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

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

Erstellen Sie nun anhand des Beispiels Ihre /etc/fstab. Falls Sie Gentoo auf einer SPARC-Architektur installieren, sollten Sie noch folgende Zeile hinzufügen:

Befehlsauflistung 1.6: openprom-Dateisystem in /etc/fstab

none        /proc/openprom  openpromfs    defaults      0 0

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

8.b. Netzwerk-Informationen

Hostname, Domainname usw.

Jetzt müssen Sie Ihrem Computer einen Namen geben, den sogenannten Hostnamen. Das ist eigentlich keine Kunst, aber einige Benutzer 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 folgenden Beispiel nennen wir unser System tux und die Domain homenetwork.

Zuerst tragen Sie den Hostnamen in die Datei /etc/hostname ein:

Befehlsauflistung 2.1: Setzen des Hostnamens

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

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

Danach wird der Domainname in /etc/dnsdomainname eingetragen:

Befehlsauflistung 2.2: Setzen des Domainnamens

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

(Setzen Sie die DNSDOMAIN Variable auf Ihren Domainnamen)
DNSDOMAIN="heimnetzwerk"

Falls Ihr Rechner Mitglied einer NIS-Domain ist, müssen Sie diesen in /etc/nisdomainname eintragen (Falls Sie nicht wissen, was NIS ist, benötigen Sie diesen Eintrag sehr wahrscheinlich nicht):

Befehlsauflistung 2.3: Setzen des NIS-Domainnamens

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

(Setzen Sie die NISDOMAIN Variable auf Ihren NIS-Domainnamen)
NISDOMAIN="meine-nisdomain"

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 vorhanden ist.

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 /etc/conf.d/net.example.

Standardmäßig wird DHCP verwendet und es benötigt keine weitere Konfiguration.

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 /etc/conf.d/net.example 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 gw 192.168.0.1" )

Spezifizieren Sie config_eth0 und dhcp_eth0 um DHCP zu verwenden und spezifische DHCP Optionen zu setzen:

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

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

Lesen Sie bitte /etc/conf.d/net.example für eine Liste aller verfügbaren Optionen.

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 default-Runlevel hinzufügen. Falls Sie eine PCMCIA-Netzwerkkarte haben, sollten Sie diese Sektion überspringen, weil diese durch das PCMCIA-Initscript gestartet werden.

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

# rc-update add net.eth0 default

Wenn Sie mehrere Netzwerk-Interfaces haben, müssen Sie für jedes ein entsprechendes Initscript anlegen. Sie können einen Link mit ln auf das Skript für eth0 setzen:

Befehlsauflistung 2.9: Anlegen von weiteren Initscripts

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

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.10: Öffnen von /etc/hosts

# nano -w /etc/hosts

Befehlsauflistung 2.11: 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 keine PCMCIA-Netzwerkkarte haben können Sie diesen Abschnitt überspringen und mit dem Kapitel System-Informationen fortfahren. PCMCIA-Benutzer sollten sich folgenden Abschnitt durchlesen.

Optional: PCMCIA zum Laufen bekommen

Notiz: pcmcia-cs ist nur für die Plattformen x86, amd64 und ppc verfügbar.

Zuerst muss das pcmcia-cs Paket installiert werden. Dies gilt auch für Anwender eines 2.6er Kernel (obwohl sie nicht die PCMCIA-Treiber aus diesem Paket nutzen werden). Es ist notwendig USE="-X" zu verwenden um zu verhindern, dass xorg-x11 zu diesem Zeitpunkt installiert wird:

Befehlsauflistung 2.12: Installation von pcmcia-cs

# USE="-X" emerge pcmcia-cs

Fügen Sie, nachdem pcmcia-cs installiert ist, pcmcia zu dem default-Runlevel hinzu:

Befehlsauflistung 2.13: pcmcia zum default-Runlevel hinzufügen:

# rc-update add pcmcia default

8.c. System-Informationen

Root-Passwort

Zuerst setzen wir das root-Passwort:

Befehlsauflistung 3.1: Setzen des root-Passwort

# passwd

Wenn Sie root-Logins durch die serielle Konsole aktivieren möchten, fügen Sie tts/0 zu /etc/securetty hinzu:

Befehlsauflistung 3.2: tts/0 zu /etc/securetty hinzufügen

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

System-Informationen

Gentoo benutzt die Datei /etc/rc.conf für systemweite Konfiguration. Öffnen Sie die Datei und lesen Sie sich vor dem Editieren die Kommentare durch.

Befehlsauflistung 3.3: Öffnen der Datei /etc/rc.conf

# nano -w /etc/rc.conf

Wenn Sie fertig sind mit der Bearbeitung von /etc/rc.conf, speichern Sie ab und verlassen Sie den Editor.

Wie Sie sehen können ist die Datei gut kommentiert um Ihnen bei der Einrichtung der Konfigurationsvariablen behilflich zu sein. Sie können Ihr System so konfigurieren, dass es Unicode verwendet und Ihren Standardeditor sowie Ihren Displaymanager (wie gdm oder kdm) definieren.

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

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

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

Sein Sie vorsichtig mit der KEYMAP Variable. Wenn Sie das falsche KEYMAP wählen, erhalten Sie sonderbare Ergebnisse wenn Sie auf der Tastatur tippen.

Notiz: Benutzer von USB-basierten SPARC-Systemen und SPARC-Clones sollten eine i386-Keymap (wie "us") anstelle von "sunkeymap" auswählen. PPC verwendet auf den meisten Systemen x86-Keymaps. Benutzer, die ADB-Keymaps beim Booten zur Verfügung haben möchten, müssen ADB-Keycode in ihrem Kernel aktivieren und eine Mac/PPC-Keymap in /etc/conf.d/keymaps konfigurieren.

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/clock um die Optionen der Uhr zu setzen. Editieren Sie diese enstprechend Ihren Bedürfnissen.

Befehlsauflistung 3.5: Öffnen der Datei /etc/conf.d/clock

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

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/clock editiert haben, speichern Sie diese und schließen Sie den Editor.

Wenn Sie Gentoo nicht auf IBM PPC64 Hardware installieren, fahren Sie mit der Installation notwendiger System Tools fort.

Konfiguration der Konsole

Notiz: Der folgende Abschnitt gilt nur für IBM PPC64 Hardware Plattformen.

Wenn Sie Gentoo auf IBM PPC64 Hardware laufen lassen und eine virtuelle Konsole verwenden, müssen Sie die passenden Zeilen in /etc/inittab entkommentieren, damit die virtuelle Konsole am Login-Prompt erzeugt werden kann.

Befehlsauflistung 3.6: Aktivieren von hvc oder hvsi Unterstützung in /etc/inittab

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

Sie sollte sich auch die Zeit nehmen und sicherstellen, dass die passende Konsole unter /etc/securetty aufgeführt ist.

Sie können nun mit der Installation notwendiger System-Tools fortfahren.

9. Installation der benötigten System Tools

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 Protokollierung 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 Systemloggern. 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 in Portage 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 eines 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).

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

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/slocate installieren.

Befehlsauflistung 3.1: Installation von slocate

# emerge slocate

9.d. File System Tools

Je nachdem, welche Dateisysteme Sie verwenden, müssen Sie noch die jeweiligen Utilities (zur Überprüfung der Dateisystem-Integrität, Anlegen neuer Dateisysteme etc..) installieren.

Die folgende Tabelle listet alle Tools auf, die für ein bestimmtes Dateisystem benötigt werden. Nicht alle Dateisysteme sind auf allen Architekturen verfügbar.

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

Wenn Sie ein EVMS Benutzer sind, müssen sie emvs installieren:

Befehlsauflistung 4.1: Installation der EVMS Programme

# USE="-gtk" emerge evms

Das USE="-gtk" verhindert die Installation von Abhängigkeiten. Wenn Sie die graphischen Tools von evms aktivieren wollen, können Sie evms einfach später erneut kompilieren.

Sollten Sie zur Verbindung mit dem Internet keine weiteren Tools (wie rp-pppoe oder einen dhcp Client) benötigen, dann können Sie mit dem Kapitel Konfiguration des Bootloader fortfahren.

9.e. Netzwerk Tools

Optional: Installation eines DHCP Client

Wenn Sie möchten, dass Gentoo automatisch eine IP Adresse für Ihre Netzwerkarte bezieht müssen Sie dhcpcd (oder einen anderen DHCP Clienten) 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 5.1: dhcpcd Installieren

# emerge dhcpcd

Optional: Installation eines PPPoE Client

Um mit rp-pppoe eine Verbindung mit dem Internet herstellen zu können, muss es vorher installiert werden.

Befehlsauflistung 5.2: Installation von rp-pppoe für alle anderen Benutzer

# USE="-X" emerge rp-pppoe

Das vorangestellte USE="-X" verhindert, dass xorg-x11 als Abhängigkeit mit installiert wird ( das rp-pppoe Paket enthält auch grafische Tools; sollten Sie diese verwenden wollen, können Sie rp-pppoe später noch einmal ohne USE="-X" neukompilieren, oder Sie installieren gleich xorg-x11 mit -- was allerdings recht lange dauern kann ).

Optional: RAID-Hilfsprogramme für IBM-Hardware

Wenn Sie ein SCSI-RAID auf einem Power5-basierenden System verwenden, sollten Sie in Betracht ziehen iprutils zu installieren. Es wird es Ihnen ermöglichen mit dem RAID Festplatten-Array zu arbeiten, den Status von Laufwerken im Array abzufragen und neben weiteren Funktionen den Microcode zu aktualisieren.

Befehlsauflistung 5.3: Installation von iprutils

# emerge iprutils

Nun fahren Sie mit der Konfiguration des Bootloaders fort.

10. Konfiguration des Bootloaders

10.a. Eine Bootloader auswählen

Einleitung

Nun, da Ihr Kernel konfiguriert und kompiliert ist, benötigen Sie einen Bootloader um Ihre neue Linux Installation zu starten. Der Bootloader, den Sie verwenden werden, entscheidet sich dadurch, was für einen PPC Rechner Sie besitzen.

Wenn sie einen NewWorld Apple oder IBM Rechner verwenden, müssen Sie yaboot verwenden. OldWorld Apple Rechner haben zwei Möglichkeiten: BootX (empfohlen) und quik. Der Pegasos benötigt keinen Bootloader, aber es wird der BootCreator zur Erstellung eines SmartFirmware Bootmenüs benötigt.

10.b. Standard: Die Benutzung von yaboot

Einleitung

Wichtig: yaboot kann nur auf NewWorld Apple und IBM Systemen verwendet werden!

Damit die Bootgeräte gefunden werden können, benötigt yaboot zunächst Zugriff auf die Device-Nodes welche von udev beim Hochfahren und vom sysfs-Dateisystem erstellt werden. Diese zwei Dateisysteme finden sich jeweils in /dev und sys. Um dies zu erreichen müssen Sie diese Dateisysteme vom Root der Installations-CD auf die Mountpunkte /dev und /sys innerhalb des chroot mit "bind" mounten. Wenn sie diese Dateisysteme bereits mit "bind" gemountet haben besteht kein Grund dies noch einmal zu tun.

Befehlsauflistung 2.1: Mounten des device- und sysfs-Dateisystems mit der bind Funktion

# exit  # dies verlässt das chroot
# mount -o bind /dev /mnt/gentoo/dev
# mount -o bind /sys /mnt/gentoo/sys
# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile 

Um yaboot einzurichten können Sie yabootconfig verwenden um damit automatisch eine Konfigurationsdatei für sich zu erstellen. Wenn Sie Gentoo auf einem G5 installieren (wo yabootconfig nicht immer funktioniert) oder Sie von Firewire oder USB booten wollen, müssen Sie yaboot manuell konfigurieren.

Notiz: Sie werden die yaboot.conf Datei manuell editieren müssen, wenn Sie genkernel verwenden, selbst wenn yabootconfig verwendet wird. Der Kernel-Image Abschnitt sollte wie folgt modifiziert werden:

Befehlsauflistung 2.2: Bootarguments für genkernel zu yaboot.conf hinzufügen

###########################################################
## Dieser Abschnitt kann vervielfältigt werden, wenn Sie mehr als
## einen Kernel oder Satz von Bootoptionen haben. Ersetzen Sie 
## kernel-2.6.15 mit dem exakten Dateinamen Ihres Kernels.
###########################################################
image=/boot/kernel-2.6.15
  label=Linux
  root=/dev/ram0
  partition=3
  append="real_root=/dev/hda3 init=/linuxrc"
  # Sie können weitere Kernelaugmente wie 
  # rootdelay=10 für einen USB/Firewire Boot hinzufügen
  read-only
##########################################################

Standard: Die Benutzung von yabootconfig

yabootconfig wird die Partitionen auf Ihrem System automatisch erkennen und wird Dual- und Dreifachbootkombinationen mit Linux, Mac OS und Mac OS X einrichten.

Um yabootconfig benutzen zu können, muss Ihr Laufwerk eine Apple_Bootstrap Partition haben und /etc/fstab muss konfiguriert sein. Diese Schritte sollten bereits erledigt sein, überprüfen sie aber /etc/fstab bevor Sie fortfahren. Stellen Sie nun sicher, dass yaboot installiert ist.

Befehlsauflistung 2.3: Installieren von Yaboot mit GRP

# emerge --usepkg yaboot

Verlassen Sie nun die chroot Umgebung und führen Sie yabootconfig --chroot /mnt/gentoo aus. Zuerst wird das Programm den Pfad der Bootstrap-Partition bestätigen. Wenn Sie das vorgeschlagene Partitionsschema verwenden sollte sich Ihre Bootstrap-Partition auf /dev/hda2 befinden. Geben Sie Y ein, wenn die Ausgabe korrekt ist. Falls nicht, überprüfen Sie erneut /etc/fstab. yabootconfig wird dann Ihre Systemkonfiguration überprüfen, /etc/yaboot.conf erstellen und mkofboot für Sie ausführen. mkofboot wird gebraucht, um die Apple_Bootstrap-Partition zu formatieren und dorthinein die yaboot-Konfigurationsdatei zu installieren. Betreten Sie hiernach wieder die chroot-Umgebung.

Befehlsauflistung 2.4: chroot-Umgebung erneut betreten

#  chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile

Sie sollten den Inhalt von /etc/yaboot.conf überprüfen. Wenn Sie Veränderungen an /etc/yaboot.conf vornehmen (wie die Standard-/Boot-OS-Einstellung zu setzen) stellen Sie sicher, dass Sie ybin -v erneut ausführen, um die Änderungen auf die Apple_Bootstrap Partition zu schreiben.

Fahren Sie nun mit dem Rebooten des Systems fort.

Alternativ: Die manuelle yaboot Konfiguration

Stellen Sie zuerst sicher, dass Sie yaboot auf Ihrem System installiert haben:

Befehlsauflistung 2.5: Installieren von yaBoot mit GRP

# emerge --usepkg yaboot

Eine Beispiels yaboot.conf Datei folgt, aber Sie werden diese Ihren Bedürfnissen anpassen müssen. G5 Benutzer und Benutzer, welche von Firewire oder USB booten sollten sich im klaren sein, dass Ihre Festplatten als SCSI Festplatten vom Linux Kernel angesehen werden. Daher werden Sie /dev/hda durch /dev/sda ersetzen müssen.

Befehlsauflistung 2.6: /etc/yaboot.conf

## /etc/yaboot.conf
##
## Führen Sie: "man yaboot.conf" für Details aus. Machen Sie keine
## Änderungen bevor Sie das nicht getan haben!
## Siehe auch: /usr/share/doc/yaboot/examples für Beispielkonfigurationen
##
## Für ein Dualbootmenü fügen Sie eine oder mehrere dieser hinzu:
## bsd=/dev/hdaX, macos=/dev/hdaY, macosx=/dev/hdaZ

## unsere Bootstrap Partition:

boot=/dev/hda2

## ofboot ist der openfirmware Weg die bootstrap Partition anzugeben.
## Wenn diese nicht angegeben ist schlägt yaboot auf dem G5 und einigen G4 fehl (es 
## sei denn Sie geben dem mkofboot/ybin Programm die notwendigen Argumente mit).
## hd:X bedeutet /dev/sdaX (oder /dev/hdaX).
##
## G5 Benutzer sollten diese Zeile entkommentieren!

#ofboot=hd:2

## Benutzer, welche von Firewire booten, sollten etwas wie diese Zeile verwenden:
# ofboot=fw/node/sbp-2/disk@0:

## Benutzer, welche von USB booten, sollten etwas wie diese Zeile verwenden:
# ofboot=usb/disk@0:

## hd: ist kurz für die erste Festplatte,welche OpenFirmware sieht
device=hd:

## Firewire und USB Benutzer werden den gesamten OF Gerätenamen angeben müssen
## Dieser findet sich durch verwenden von ofpath, was in yaboot enthalten ist.

# device=fw/node@0001d200e00d0207/sbp-2@c000/disk@0:


delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot

#################
## Dieser Abschnitt kann doppelt verwendet werden, wenn Sie mehr als einen Kernel
## oder Satz von Bootoptionen haben. - ersetzen Sie 2.6.9 mit Ihrer Kernel
## Version.
#################
image=/boot/kernel-2.6.9
  label=Linux
  root=/dev/hda3
  partition=3
#  append="rootdelay=10"  # Notwendig für booten von Firewire/USB 
  read-only
##################

## G5 und einige G4 Benutzer sollten
##   macos=hd:13
##   macosx=hd:12
## anstelle der Beispielwerte setzen.

macos=/dev/hda13
macosx=/dev/hda12
enablecdboot
enableofboot

Sobald yaboot.conf eingerichtet ist, führen Sie mkofboot -v aus um die Apple_bootstrap Partition zu formatieren und die Einstellungen dort zu installieren. Wenn Sie yaboot.conf ändern, nachdem Sie die Apple_bootstrap Partition erstellt haben, können Sie die Einstellungen aktualisieren indem Sie ybin -v ausführen.

Für weitere Informationen über yaboot werfen Sie einen Blick auf dasyaboot Projekt. Fahren Sie nun mit dem Rebooten des Systems fort.

10.c. Alternativ: BootX

Wichtig: BootX kann nur auf OldWorld Apple Systemen mit MacOS 9 oder älter verwendet werden!

Da BootX Linux aus MacOS heraus bootet, muss der Kernel von der Linux Partition auf die MacOS Partition kopiert werden. Mounten Sie zuerst die MacOS Partition von außerhalb des chroot. Verwenden Sie mac-fdisk -l um die richtige MacOS Partitionsnummer zu finden. Dieses Beispiel verwendet sda6. Sowie die Partition eingebung ist, kopieren wir den Kernel in den Systemordner, so dass BootX ihn finden kann.

Befehlsauflistung 3.1: Kopieren des Kernels auf die MacOS Partition

# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/usr/src/linux/vmlinux "/mnt/mac/System Folder/Linux Kernels"

Wenn genkernel verwendet wird, dann müssen sowohl der Kernel als auch das initrd auf die MacOS Partition kopiert werden.

Befehlsauflistung 3.2: Kopieren des genkernel Kernels und initrd auf die MacOS Partition

# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/boot/kernel-* "/mnt/mac/System Folder/Linux Kernels"
cdimage ~# cp /mnt/gentoo/boot/initramfs-* "/mnt/mac/System Folder"

Nun da der Kernel hinüber kopiert wurde, muss für die Einrichtung von BootX neu gestartert werden.

Befehlsauflistung 3.3: Unmounten aller Partitionen und Neustart

cdimage ~# cd /
cdimage ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo /mnt/mac
cdimage ~# reboot

Bitte vergessen Sie nicht die bootbare CD zu entfernen. Sonst wird wieder die CD gebootet anstatt MacOS.

Sobald Ihre Maschine MacOS gebootet hat, öffnen Sie das BootX Control Panel. Wenn Sie genkernel nicht verwenden, wählen Sie Options und deaktivieren Sie Use specified RAM disk. Wenn Sie genkernel verwenden, stellen Sie sicher, dass Sie das genkernel initrd anstatt des initrd der Installations-CD selektiert ist. Wenn Sie genkernel nicht verwenden gibt es nun die Option, die Linux Root Festplatte und Partition des Rechners auszuwählen. Geben Sie die entsprechenden Werte ein. Abhängig von der Konfiguration müssen unter Umständen noch weitere Bootargumente angewandt werden.

BootX kann konfiguriert werden, um Linux beim Booten zu starten. Wenn Sie dies tun sehen Sie, wird der Computer in MacOS starten un dann während des Starts BootX laden, was wiederum Linux startet. Auf der BootX Webseite finden Sie weitere Informationen.

Wichtig: Stellen Sie sicher, dass Sie Unterstützung für HFS und HFS+ Dateisysteme in Ihrem Kernel haben, ansonsten werden sie nicht in der Lage sein Ihren Kernel auf der MacOS-Partition zu ändern oder zu aktualisieren.

Rebooten Sie nun wieder und fahren Sie mit Abschließen der Gentoo Installation fort.

10.d. Alternativ: quik

OldWorld Macs können mit der Hilfe von quik ohne MacOS gestartet werden. Jedoch wird es nicht sehr gut unterstützt und hat einige Makel. Wenn Sie die Wahl haben, empfehlen wir Ihnen BootX zu verwenden, da es viel verlässlicher und einfacher einzurichten ist, als quik.

Zuerst muss quick installiert werden:

Befehlsauflistung 4.1: quik mit emerge installieren

# emerge quik

Als nächstes muss es eingerichtet werden. Editieren Sie /etc/quik.conf und setzen Sie Ihr Image auf den Kernel, welcher auf Ihre Boot-Parition herüber kopiert wurde.

Befehlsauflistung 4.2: Konfiguration von quik.conf

# Example of quik.conf
init-message = "Gentoo 2006.0\n"
partition = 2   # Dies ist die Boot-Partition
root = /dev/hda4
timeout = 30
default = gentoo
image = /vmlinux-2.6.15
  label = gentoo

Ihre quik.conf Datei muss sich auf derselben Platte wie die Boot-Images von quik befinden. Sie kann auf einer anderen Partition sein, muss aber auf derselben Festplatte sein. Es wird jedoch empfohlen sie auf Ihre Boot-Partition zu verschieben.

Befehlsauflistung 4.3: Verschieben von quik.conf nach /boot

# mv /etc/quik.conf /boot/quik.conf

Wir werden nun Ihre Bootvariable setzen, so dass quik beim Boot geladen wird. Um dies zu schaffen wird eine Programm mit dem Namen nvsetenv verwendet. Die Variablen, die es zu setzen gilt, sind von Rechner zu Rechner verschieden und es ist am besten die Macken Ihres Rechners aufzuspüren, bevor man diesen Versuch unternimmt.

Befehlsauflistung 4.4: Setting the boot variables

# nvsetenv auto-boot true # Auf false setzen, wenn Sie in OF booten wollen, nicht alle Modelle können 
  die OF Ausgabe anzeigen
# nvsetenv output-device video # Siehe die Macken-Seite, hier gibt es zahlreiche Variationen
# nvsetenv input-device kbd
# nvsetenv boot-device scsi/sd@1:0 # Für SCSI
# nvsetenv boot-device ata/ata-disk@0:0 # Für ATA
# nvsetenv boot-file /boot/vmlinux-2.6.15 root=/dev/hda4 Zuerst kommt der Pfad zum Kernel, dann folgt die Root-Partition. Sie können weitere Kerneloption ans Ende dieser Zeile anfügen.
# nvsetenv boot-command boot # Setzen Sie dies um MacOS zu verabschieden und Linux zu booten

Notiz: Es ist auch möglich Ihre Bootvariablen von MacOS aus zu verändern. Abhängig vom Modell sollte entweder bootvars oder Apple System Disk verwendet werden.Betrachten Sie bitte die oben genannte Macken-Seite für weitere Informationen.

Nun da wir Ihren Rechner für den Boot eingerichtet haben, müssen wir sicherstellen, dass die Boot-Images korrekt installiert sind. Führen Sie quik -v -C /boot/quik.confaus, dies sollte Ihnen mitteilen, dass es den ersten Abschnitt des QUIK Bootblocks installiert hat.

Notiz: Wenn etwas schief gegangen ist, können Sie immer Ihren PRAM auf die Standardwerte zurücksetzen indem Sie command + option + p + r gedrückt halten, bevor Sie Ihren Rechner hochfahren. Dies löscht die Werte, welche Sie mit nvsetenv gesetzt haben und sollte es Ihnen ermöglichen entweder eine MacOS Bootdiskette oder eine Linux Bootdiskette zu starten.

Fahren Sie nun mit dem Rebooten Ihres Systems fort.

10.e. Alternative: BootCreator

Wichtig: BootCreator wird ein nettes SmartFirmware Bootmenü in Forth für den Pegasos erstellen.

Stellen Sie zunächst sicher, dass Sie bootcreator auf Ihrem System installiert haben:

Befehlsauflistung 5.1: Installieren von bootcreator

# emerge --usepkg bootcreator

Kopieren Sie nun die Datei /etc/bootmenu.example in /etc/bootmenu und editieren Sie diese entsprechend Ihren Bedürfnissen:

Befehlsauflistung 5.2: Editieren der bootcreator Konfigurationsdatei

# cp /etc/bootmenu.example /etc/bootmenu
# nano -w /etc/bootmenu

Folgend finden Sie eine vervollständigte /etc/bootmenu Konfigurationsdatei. Verändern Sie diese nach Wunsch.

Befehlsauflistung 5.3: bootcreator Konfigurationsdatei

#
# Beispiels Erläuterungsdatei für bootcreator 1.1
#

[VERSION]
1

[TITLE]
Boot Menu

[SETTINGS]
AbortOnKey = false
Timeout    = 9
Default    = 1

[SECTION]
Local HD -> Morphos      (Normal)
ide:0 boot2.img ramdebug edebugflags="logkprintf"

[SECTION]
Local HD -> Linux 2.6.15 (Normal)
ide:0 linux-2.6.15 video=radeonfb:1024x768@70 root=/dev/hda3

[SECTION]
Local HD -> Genkernel (Normal)
ide:0 kernelz-2.6.15 root=/dev/ram0 real_root=/dev/hda3 init=/linuxrc

Zuletzt muss das bootmenu nach Forth übersetzt und auf Ihre Boot Partition kopiert werden, damit die SmartFirmware es lesen kann. Deswegen müssen Sie bootcreator aufrufen:

Befehlsauflistung 5.4: Installieren des Bootmenüs

# bootcreator /etc/bootmenu /boot/menu

Notiz: Sie sollten auf alle Fälle einen Blick auf die Einstellungen von SmartFirmware werfen, wenn Sie neu starten. Vergewissern Sie sich, dass menu die Datei ist, welche standardmäßig geladen wird.

Fahren Sie nun fort mit der Installation mit Neustarten des Systems.

10.f. Rebooten des Systems

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

Befehlsauflistung 6.1: Unmounten aller Partitionen und Rebooten

# exit
livecd ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo
livecd ~# reboot

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, wann 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 auf, 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
plugdev Benutzer kann anschließbare Geräte wie Kameras und USB-Sticks mounten
video Benutzer darf Geräte zur Video-Aufnahme und Hardware-Beschleunigung nutzen
wheel Benutzer darf su benutzen

In unserem Beispiel erstellen wir einen Benutzer john, welcher Mitglied der Gruppen wheel, users, sowie audio 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 müssen, 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. Optional: Installation von GRP-Paketen

Wichtig: Dieser Unterabschnitt ist nur für GRP-Benutzer. Alle anderen sollten diesen Abschnitt überspringen und direkt zum Punkt Wie geht es weiter? übergehen.

Nach dem Booten des Systems melden Sie sich mit Ihrem neu angelegten Benutzernamen (hier in unserem Beispiel john) an und benutzen su - um root-Rechte zu erhalten:

Befehlsauflistung 2.1: root-Rechte erhalten

$ su -
Password: (Hier das root-Passwort eingeben)

Nun müssen wir die Portage-Konfiguration ändern, wo nach den vorkompilierten Paketen der zweiten CD (Gentoo Packages CD) geschaut werden soll. Zunächst mounten Sie die CD:

Befehlsauflistung 2.2: Mounten der Packages-CD

(Die Gentoo Packages-CD ins Laufwerk einlegen)
# mount /mnt/cdrom

Nun konfigurieren Sie Portage so, dass /mnt/cdrom für vorkompilierte Pakete genutzt wird:

Befehlsauflistung 2.3: Portage für /mnt/cdrom Konfigurieren

# ls /mnt/cdrom

(Wenn es ein packages-Verzeichnis auf der CD gibt:)
# export PKGDIR="/mnt/cdrom/packages"

(Andernfalls:)
# export PKGDIR="/mnt/cdrom"

Nun können Sie die gewünschten Pakete installieren. Die Packages-CD enthält zum Beispiel ein vorkompiliertes KDE und GNOME:

Befehlsauflistung 2.4: Installation von GNOME

# emerge --usepkg gnome

Um herauszufinden, welche vorkompilierten Pakete verfügbar sind, erstellen Sie eine Liste der Dateien in /mnt/cdrom/All. Wenn Sie zum Beispiel herausfinden möchten ob KDE installierbar ist:

Befehlsauflistung 2.5: Herausfinden ob KDE isntallierbar ist

# ls /mnt/cdrom/All/kde*

Installieren Sie die Binärpakete zu diesem Zeitpunkt. Wenn Sie ein emerge --sync ausführen, um Portage auf den aktuellsten Stand zu bringen (wir gehen später noch genauer darauf ein), können die vorkompilierten Binärpakete schon wieder älter sein, als die neuesten ebuilds in Portage. Um dieses Problem zu umgehen, können Sie alternativ emerge --usepkgonly statt emerge --usepkg ausgeführen.

Gratulation! Ihr System ist nun vollständig installiert. Im Kapitel Wie geht es weiter? erfahren Sie mehr über Gentoo.

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 Handbuch (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 Gentoo Init System funktioniert, etc.

Zur Optimierung Ihres Systems für einen Endbenutzer oder wenn Sie wissen wollen, wie ein vollständiges Desktop-System eingerichtet wird, sollte die sehr ausführliche Übersicht zur Desktop-Konfiguration weiterhelfen. Weiterhin möchten Sie vielleicht unsere Anleitung zur Lokalisierung betrachten um sich Ihr System angenehmer einzurichten.

Wir haben auch ein Gentoo Sicherheits-Handbuch, welches es sich lohnt zu lesen.

Für eine komplette Liste aller für Gentoo Linux verfügbaren Dokumentationen verweisen wir auf die Dokumentationsübersicht.

12.b. Gentoo Online

Sie sind natürlich in unseren Gentoo Foren oder in einem unserer 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 Gentoo Linux Installation genießen :)

12.c. Veränderungen in Gentoo seit 2006.0

Veränderungen?

Gentoo ist ein schnelllebiges Projekt. Die folgenden Abschnitte beschreiben wichtige Veränderungen, welche die Gentoo Installation beeinflussen. Wir führen nur solche auf die etwas gemeinsam haben mit der Installation, nicht mit Veränderungen von Paketen, die nicht während der Installation vorkommen.

Bis jetzt gab es keinen nennenswerten Änderungen.

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 Software Zweigen

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

D. Gentoo Netzwerk Konfiguration

1. Der 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 9. Februar 2013

Diese Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dies ist das Gentoo Handbuch, es ist ein Versuch Informationen zu Gentoo/Linux zu bündeln. Dieses Handbuch enthält die Installationsanweisungen für eine netzwerklose Installation auf PPC Systemen und Abschnitte zur Arbeit mit Gentoo und Portage.

Sven Vermeulen
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

Jochen Maes
Bearbeiter

Xavier Neys
Bearbeiter

Joseph Jezak
Bearbeiter

Grant Goodyear
Korrektor

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

Christian Hartmann
Korrektor

Martin Bürger
Übersetzer

Sophie Lee
Übersetzer

Thomas Gabelmann
Übersetzer

Timo Rothweiler
Übersetzer

Sebastian Westermayer
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.