Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
TEIL I: Einstieg in Linux
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
TEIL II: Grundlagen
5 Kernel
6 Grundlagen aus Anwendersicht
TEIL III: Die Shell
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
TEIL IV: System- & Netzwerkadministration
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP & Co.
20 DNS-Server
21 Secure Shell
TEIL V: Die grafische Oberfläche
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
TEIL VI: Systeminterna
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
TEIL VII: Programmierung und Sicherheit
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in Computersicherheit
33 Netzwerksicherheit überwachen
TEIL VIII: Anhang
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Buch-DVDs
F Glossar
G Literatur
Stichwort
Ihre Meinung?

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
Pfeil 14 Grundlegende Verwaltungsaufgaben
Pfeil 14.1 Rechteverwaltung
Pfeil 14.1.1 chmod
Pfeil 14.1.2 chown
Pfeil 14.1.3 Erweiterte Rechte
Pfeil 14.1.4 umask
Pfeil 14.1.5 Access Control Lists
Pfeil 14.2 Softwareinstallation
Pfeil 14.2.1 Paketverwaltung und Ports
Pfeil 14.2.2 APT – Advanced Packaging Tool
Pfeil 14.2.3 Pakete in Handarbeit: dpkg und rpm
Pfeil 14.2.4 Das Slackware-Paketsystem
Pfeil 14.2.5 Gentoo Portage
Pfeil 14.2.6 BSD-Ports
Pfeil 14.2.7 Softwareinstallation ohne Pakete
Pfeil 14.3 Tätigkeiten automatisieren
Pfeil 14.3.1 Skripte & Co.
Pfeil 14.3.2 Cronjobs
Pfeil 14.3.3 Punktgenau mit »at«
Pfeil 14.4 Logging
Pfeil 14.4.1 Logdateien
Pfeil 14.4.2 syslogd
Pfeil 14.4.3 logrotate
Pfeil 14.4.4 logcheck
Pfeil 14.5 Dateisystemverwaltung
Pfeil 14.5.1 /etc/fstab
Pfeil 14.5.2 mount
Pfeil 14.5.3 Platz beschränken: Quotas
Pfeil 14.5.4 du und df
Pfeil 14.5.5 SoftRAID und LVM
Pfeil 14.5.6 Backups, Archive & Co.
Pfeil 14.6 Kernel kompilieren
Pfeil 14.6.1 Kernel-Quellen besorgen
Pfeil 14.6.2 Konfiguration
Pfeil 14.6.3 Den Kernel übersetzen
Pfeil 14.6.4 Den Bootloader anpassen
Pfeil 14.6.5 BSD-Kernel kompilieren
Pfeil 14.7 Kernelmodule verwalten
Pfeil 14.7.1 modprobe
Pfeil 14.7.2 lsmod
Pfeil 14.7.3 insmod und rmmod
Pfeil 14.7.4 /etc/modules und Co.
Pfeil 14.7.5 modconf
Pfeil 14.8 Magic SysRq
Pfeil 14.8.1 Aktivierung von SysRq
Pfeil 14.8.2 Tastenkombinationen
Pfeil 14.9 Lokalisierung
Pfeil 14.9.1 Tastaturbelegung
Pfeil 14.9.2 Deutsche Sprache
Pfeil 14.9.3 Einstellen der Uhr
Pfeil 14.9.4 Texte von anderen Plattformen
Pfeil 14.10 Zusammenfassung
Pfeil 14.11 Aufgaben

Rheinwerk Computing - Zum Seitenanfang

14.6 Kernel kompilierenZur nächsten Überschrift

Die Königsdisziplin im Aufgabenspektrum eines Linux-Admins ist sicherlich die Kompilierung eines eigenen Kernels. Linux ist bekanntlich Open Source und somit in Form von Quellcode verfügbar. Das impliziert natürlich, dass man diese Quellen auch selbst in Maschinencode übersetzen kann.

Die erste Frage ist jedoch die nach dem Warum. In der Tat ist es für die meisten, auch professionellen Linux-Benutzer nicht notwendig, sich einen eigenen Kernel zu »backen«. Schließlich ist der Mensch faul, und die Standard-Kernel der gängigen Distributionen bieten in der Regel alle denkbaren Features als Module und werden zudem noch regelmäßig aktualisiert.

Etwas anders sieht das Ganze natürlich bei Administratoren aus, die ein bestimmtes Feature unbedingt benötigen, das eben noch nicht auf diese Weise in den Kernel integriert ist. Meistens gibt es dann einen Patch für die aktuellen Kernel-Sourcen, den man recht einfach mit dem Programm patch, der Option -p0 oder – je nachdem, wie er erstellt wurde – mit -p1 als Argument sowie der Patch-Datei als Input einspielt.


Rheinwerk Computing - Zum Seitenanfang

14.6.1 Kernel-Quellen besorgenZur nächsten ÜberschriftZur vorigen Überschrift

Bevor man aber einen Patch anwenden kann, sollte man sich erst einmal die aktuellen Kernel-Quellen besorgen. Die meisten Distributionen bieten hierfür spezielle Kernel-Source-Pakete an, die je nach Einsatzgebiet den »nackten« Originalquelldateien vorgezogen werden sollten. Schließlich bauen einige Distributionen teilweise auch selbst schon diverse Verbesserungen in Form von Patches in die Quellen ein, und Verbesserungen sind schließlich immer gut.

Die aktuelle Version

Die aktuelle Linux-Version erfährt man am besten direkt über die Webseite http://www.kernel.org.

Nachdem man dort die Quellpakete entweder von der Webseite oder per FTP von ftp.kernel.org gezogen hat, sollte man das Archiv nach /usr/src entpacken. Nutzt man ein Paket der hauseigenen Distribution, so wird sich hier der Installation entweder schon das entpackte Verzeichnis samt Quellen oder noch ein Quellcode-Archiv finden.

In jedem Fall sollte man einen Link von /usr/src/linux nach /usr/src/linux-3.0.XX anlegen. Dies erledigt das ln-Programm für uns: [Fn. Mehr zu Links erfahren Sie in Abschnitt ln-abschnitt].

Listing 14.92 Die Arena vorbereiten

# cd /usr/src/
# tar -xjvf linux-3.0.XX.tar.bz2
# ls
linux-3.0.XX/ linux-3.0.XX.tar.bz2
# ln -s linux-3.0.XX/ linux

Eventuell muss man einen alten Link noch per rm löschen, bevor man den neuen anlegen kann. Im Anschluss zeigt jedenfalls das Verzeichnis linux/ auf das Verzeichnis linux-3.0.XX/ – dies ist nicht nur so üblich, sondern wird teilweise von einigen Programmen vorausgesetzt. Schließlich könnte man mehrere Linux-Versionen unter /usr/src entpackt haben, und ein Skript kann ja schlecht raten, welches nun die von uns als »aktuell« betrachtete Version ist. [Fn. Dabei muss es sich schließlich nicht notwendigerweise um die höchste Versionsnummer handeln.]


Rheinwerk Computing - Zum Seitenanfang

14.6.2 KonfigurationZur nächsten ÜberschriftZur vorigen Überschrift

Die Konfiguration ist leider zu komplex, als dass sie hier umfassend erläutert werden könnte. Wenn man beispielsweise mit

Listing 14.93 Die Quellen konfigurieren

# cd linux/
# make menuconfig

die Konfiguration über eine Textoberfläche oder mit make xconfig [Fn. Achtung: Sowohl xconfig als auch menuconfig benötigen diverse Bibliotheken in der Development-Version. Entsprechend müssen also höchstwahrscheinlich Pakete wie libncurses-dev oder libqt-dev von Hand nachinstalliert werden.] die Konfiguration über ein grafisches Programm wählt, bekommt man in einer Reihe von Sektionen und Untersektionen verschiedenste Optionen zur Wahl gestellt. Die meisten Optionen lassen sich statisch in den Kernel einkompilieren, als Modul übersetzen oder deaktivieren. Einige Optionen lassen sich auch einfach nur »an-« oder »ausschalten«. Außerdem gibt es zu jedem Punkt eine recht umfangreiche Hilfe, von der man beim ersten selbstgebauten Kernel reichlich Gebrauch machen sollte. Als unverzichtbar erweist sich dabei die Kenntnis der eigenen Hardware. Vor allem die Bezeichnung der Chipsätze ist interessant und wird oft gefordert. Entgegen mancher Meinungen sollte man auch alles, was »Treiber« ist, als Modul kompilieren, da so bei einem Problem die Chancen gut stehen, nur den Treiber und nicht gleich den ganzen Kernel beim Absturz beobachten zu müssen.


Rheinwerk Computing - Zum Seitenanfang

14.6.3 Den Kernel übersetzenZur nächsten ÜberschriftZur vorigen Überschrift

Beim Übersetzen des Kernels hilft wiederum das Programm make. Die Übersetzung dauert je nach Konfiguration und aktivierter Features recht lange, so dass man sich währenddessen durchaus mal wieder einen Kaffee holen kann. Tee geht auch.

Listing 14.94 Den Kernel übersetzen

# make all
...
# make modules_install
...

Das Image

Das Kernel-Image befindet sich nach dem Kompilieren im Unterverzeichnis arch/ i386/boot/ und heißt bzImage. Es muss noch aus den Quellen an die richtige Stelle – in das Verzeichnis /boot – kopiert werden:

Listing 14.95 Den Kernel an die richtige Stelle schieben

# pwd
/usr/src/linux-3.0.XX/
# cp arch/i386/boot/bzImage /boot/kernel-3.0.XX
# cp System.map /boot/System-3.0.XX.map
# cp .config /boot/config-3.0.XX

Rheinwerk Computing - Zum Seitenanfang

14.6.4 Den Bootloader anpassenZur nächsten ÜberschriftZur vorigen Überschrift

Die meisten Distributionen nutzen mittlerweile den Bootloader GRUB (»Grand unified Bootloader«) bzw. dessen neuere Version GRUB 2. [Fn. Der ältere Bootloader LILO (»Linux Loader«) wird nahezu nicht mehr verwendet und daher von uns auch nicht mehr beschrieben.] Der folgende Aufruf findet den neuen Kernel und aktualisiert das Bootmenü:

Listing 14.96 GRUB aktualisieren

# update-grub
Searching for GRUB installation directory ... found: /boot/grub .
Testing for an existing GRUB menu.list file... found: /boot/grub/men...
Searching for splash image... none found, skipping...
Found kernel: /boot/vmlinuz-2.6.31-1-686
Found kernel: /boot/vmlinuz-2.6.30-2-386
Found kernel: /boot/kernel-3.0.XX
Updating /boot/grub/menu.lst ... done

Mehr zu GRUB erfahren Sie in Abschnitt 27.4.2.

Darüber, ob der neue Kernel korrekt arbeitet, gibt erst ein Reboot mit dem neuen Kernel Aufschluss. Hinweis: Eine Nachricht, die in irgendeiner Form die Worte »Kernel Panic« beinhaltet, ist dabei selten ein gutes Zeichen. Lesen Sie die Fehlermeldungen, suchen Sie bei Bedarf mit einer Suchmaschine nach zusätzlichen Informationen und versuchen Sie es noch einmal.

Bei diesen Aktionen sollte man also lediglich dafür sorgen, dass man immer noch einen »alten«, garantiert bootfähigen Kernel in Reserve hat, falls das neue, selbst gebastelte Prachtexemplar doch nicht ganz das macht, was man sich vorstellt.


Rheinwerk Computing - Zum Seitenanfang

14.6.5 BSD-Kernel kompilierenZur nächsten ÜberschriftZur vorigen Überschrift

Je nach BSD-Derivat gestaltet sich die Kompilierung des Kernels etwas anders. Wir gehen an dieser Stelle vom OpenBSD-System aus. Das geschilderte Vorgehen lässt sich allerdings sehr einfach auf FreeBSD und NetBSD übertragen.

Zunächst sollte man Kernel-Quellen der verwendeten Systemversion installieren. Es ist wichtig, nicht die topaktuellen Kernel-Quellen zu laden, da dies zu Problemen mit dem restlichen System führen kann. Entweder man kompiliert also den entsprechenden Kernel des verwendeten Systems, oder man installiert den aktuellen Snapshot und kompiliert dessen Kernel. [Fn. Oder man lädt das komplette System als Quellcode vom CVS-Server und macht sich daran, das ganze System mit einem make world zu übersetzen.]

Die Datei mit den Kernel-Quellen nennt sich sys.tar.gz und ist auf der CD-ROM und auf den FTP-Mirrors des OpenBSD-Projekts zu finden. Nachdem die etwa 15 Megabyte große Datei in /usr/src entpackt wurde, wechselt man in das Unterverzeichnis sys.

Die Konfigdatei

Die Konfiguration des Kernels wird über eine Konfigurationsdatei abgewickelt (nein, es gibt kein grafisches Tool dafür). Diese Datei findet sich im Unterverzeichnis arch/PLATFORM/conf. Für PLATFORM muss der Name der Prozessorarchitektur eingesetzt werden, die Sie verwenden. Diese kann durch einen Aufruf von uname -m ermittelt werden, was beispielsweise »i386« für die Intel-386-basierte Architektur ausgibt.

Die standardmäßig verwendete Kernel-Konfiguration ist in der Datei GENERIC abgelegt und die für Multiprozessor-Systeme in der Datei GENERIC.MP, die allerdings nur die Compiler-Option (und damit letztlich Makrodefinitionen für den C-Compiler) »MULTIPROCESSOR« hinzufügt. Egal, ob Sie ein Single- oder ein Multiprozessorsystem Ihr Eigen nennen, erstellen Sie zunächst ein Backup der Konfigurationsdatei, und arbeiten Sie nur mit einer Kopie davon. Das ermöglicht es Ihnen, jederzeit Veränderungen am Kernel rückgängig zu machen.

Listing 14.97 Eine Kopie der Konfiguration erstellen

# cd /usr/src/sys/arch/`uname -m`/conf
# pwd
/usr/src/sys/arch/i386/conf
# cp GENERIC MYKERNEL

Wenn Sie sich diese Konfigurationsdatei einmal mit less ansehen, werden Sie feststellen, dass sie sehr lang ist. Wir werden den genauen Inhalt im Rahmen dieses Buches nicht besprechen können, dafür finden sich aber recht viele Kommentare in dieser Datei. Es ist allerdings wichtig, einige grundlegende Dinge zu wissen:

  • machine
    Mit machine wird die Prozessorarchitektur festgelegt.
  • include
    Ähnlich wie mit der include-Anweisung der Programmiersprache C wird bei einem solchen include eine weitere Datei in die Kernel-Konfiguration eingebaut.
  • option
    Mit dem Schlüsselwort option wird der Kernel um eine Funktionalität erweitert. Beispielsweise erreichen Sie die Unterstützung für einen 686er-Prozessor der Intel-Architektur mittels I686_CPU.
  • COMPAT_*
    Die COMPAT-Optionen dienen dazu, die Kompatibilität für Binärdateien anderer Unix-Systeme in den Kernel einzubauen.
  • globale GENERIC-Datei
    Werfen Sie doch einmal einen Blick in die allgemeine, architekturunabhängige Konfigurationsdatei, die ebenfalls GENERIC heißt und sich im Verzeichnis /usr/src/sys/conf befindet. Sie werden eine Menge Features des Kernels, etwa das Crypto-Framework, die Unterstützung für das Berkeley-Fast-Filesystem (FFS), für ladbare Kernel-Module (LMs), für diverse Dateisysteme oder für die TCP/IP-Protokolle darin entdecken.

[zB]Möchten Sie die Unterstützung für eine Hardwarekomponente, die vom System generell unterstützt wird, jedoch nicht einkompiliert wurde, in Ihren neuen Kernel integrieren, muss in den meisten Fällen nur die Auskommentierung der jeweiligen Zeile gelöscht werden. Die Schnittstelle, an der ein Gerät gefunden werden soll, wird durch at <Schnittstelle>? angegeben.

Um hingegen die Unterstützung einer Hardwarekomponente aus dem Kernel zu entfernen, muss der jeweilige Eintrag in der Konfigurationsdatei auskommentiert werden.

Informationen zu einzelnen Hardwarekomponenten erhalten Sie über die Manpage des jeweiligen Treibers. Für die Zeile rl* at pci? ... suchen Sie beispielsweise in der Manpage rl(4) weitere Informationen. Sie werden feststellen, dass es sich dabei um den Treiber für die Realtek 8129- und 8139-Fast-Ethernet-Karten handelt.

Konfiguration erstellen

Nachdem die Konfiguration in der jeweiligen Datei abgelegt wurde, muss mit dem Programm config noch die Kompilierung des Kernels vorbereitet werden. Es kümmert sich unter anderem darum, dass die options der Konfiguration in Compiler-defines umgesetzt werden.

Listing 14.98 Konfiguration erzeugen

# config MYKERNEL

Kernel kompilieren

Übersetzen!

Nun ist es so weit – der neue Kernel kann übersetzt werden. Wechseln Sie hierzu zunächst in das von config erstellte Verzeichnis zur jeweiligen Konfigurationsdatei und führen Sie make depend und anschließend make aus.

Sollte an der Konfiguration etwas verändert worden sein, so muss der Kernel erneut übersetzt werden, zudem sollte vorher make clean ausgeführt werden.

Listing 14.99 Kernel übersetzen

# cd /usr/src/sys/arch/`uname -m`/compile/MYKERNEL
# make depend
...
# make
...
...
DISPLAY_COMPAT_USL -DWSDISPLAY_COMPAT_RAWKBD
-DWSDISPLAY_DEFAULTSCREENS="6"
-DWSDISPLAY_COMPAT_PCVT -DPCIA
GP -D_KERNEL -Di386 -c vers.c
rm -f bsd
ld -Ttext 0xD0100120 -e start -N -x -o bsd \
${SYSTEM_OBJ} vers.o
text data bss dec hex
4888810 118364 859728 5866902 598596

Den Kernel installieren

Nachdem der Kernel kompiliert wurde, erhält er den Dateinamen bsd. Diese Datei sollte nun ins Wurzelverzeichnis / kopiert werden und lässt sich beim nächsten Booten mit boot <Kernel> verwenden.

Doch Achtung! Dieser Kopiervorgang ist gefährlich, da Sie auf diese Weise den alten Kernel /bsd überschreiben. Sollte der neue Kernel also nicht korrekt booten, läuft Ihr System nicht mehr selbstständig. Daher empfiehlt es sich, vorher ein Backup des bisherigen Kernels zu erstellen. Für den Fall, dass der neue Kernel Probleme verursacht, können Sie auf diese Weise beim Bootprompt immer noch den alten Kernel verwenden und das System wieder in den vorherigen Zustand versetzen.

Um diesen Backup-Vorgang zu automatisieren, hat das OpenBSD-Team ein install-Target in die Kernel-Makefile eingebracht. Verwenden Sie nach dem Aufruf von make zur Kernel-Kompilierung also am besten make install, um den Kernel sicher zu installieren.

make install beugt außerdem der Möglichkeit vor, dass das System nach einem Stromausfall während des Kopiervorgangs des Kernels nicht mehr bootfähig ist.

Listing 14.100 Kernel installieren

# make install
rm -f /obsd
ln /bsd /obsd
cp bsd /nbsd
mv /nbsd /bsd
#

Der alte Kernel kann folglich als »obsd« gebootet werden.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Linux
Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de