Über dieses Buch
Wer sollte das Buch lesen?
Jeder, der möchte, darf, soll oder muss. Ein solch umfangreiches Buch hat natürlich auch eine recht breit gestreute Zielgruppe – und trotzdem wollen wir den jeweils individuellen Ansprüchen gerecht werden.
Anfänger, Fortgeschrittene
Anfänger werden im gesamten Buch neue Informationen finden. Wir empfehlen, gegebenenfalls zuerst die Installationsanleitungen im Anhang sowie das folgende Einleitungskapitel zu lesen. Fortgeschrittene hingegen können die Installationsanleitungen sowie die Einführung zu Linux und BSD getrost überspringen und mit dem ersten, richtigen Kapitel zum Kernel beginnen. Wahlweise kann man auch weitere Grundlagenkapitel, etwa die Ausführungen zur Shell oder das Kapitel zu Desktops und Window-Managern, überspringen.
Profis
Professionelle Anwender sollten in unseren technischen Kapiteln, in denen wir besonders darauf achteten, Hintergrundinformationen zu vermitteln, auf ihre Kosten kommen. Dazu zählen unter anderem die Kapitel zum Kernel, zu Prozessen und zur Interprozess-Kommunikation, zu den Dateisystemen, zur Programmierung, zum Bootstrap-Vorgang und zur Sicherheit von Unix-Systemen.
Referenz
Außerdem kann dieses Buch immer wieder als Nachschlagewerk gebraucht werden. Wir haben darauf geachtet, einen möglichst umfangreichen Index zu erstellen, in dem alle wichtigen Begriffe des Buches enthalten sind. Des Weiteren sind alle Kapitel so aufgebaut, dass sie wahlweise am Stück hintereinander gelesen werden können bzw. dass einzelne Themen aus ihnen zum Nachschlagen herausgegriffen werden können. Das Ganze rundet schließlich eine Kommandoreferenz im Anhang ab, in der die wichtigsten Befehle samt zugehöriger Optionen und den Referenzen zu den entsprechenden Stellen im Buch zu finden sind.
Aufgaben
Zudem gibt es noch diverse Aufgaben am Ende der Kapitel, deren Lösungen Sie im Anhang finden und die Ihnen dabei helfen sollen, das neue Wissen zu verinnerlichen.
Kapitelüberblick
Welche Kapitel gibt es im Einzelnen, und welche Themen werden darin behandelt?
Einleitung
In der Einleitung soll es zunächst um die Entstehungsgeschichte von Unix, Linux und BSD gehen. Wir erörtern auch die wichtigsten Unterschiede und Gemeinsamkeiten von BSD und Linux. Diese Unterschiede sind beispielsweise die Ports und die Lizenzen. Des Weiteren setzen wir uns kurz mit einem recht interessanten Thema auseinander, das etwas soziologischer Natur ist, und zeigen die wichtigsten Informationsquellen, die einem helfen, wenn man mit Linux oder BSD einmal nicht weiter weiß.
Der Kernel
Im ersten »richtigen« Kapitel geht es um den Kern des Betriebssystems – den Kernel. Es begann mit einer Erklärung der wichtigsten Bestandteile des Computers und der Aufgaben des Betriebssystems. Dazu zählen zum Beispiel die Abstraktion und die Virtualisierung. Anschließend werfen wir einen ersten Blick auf die Definitionen von Prozessen, Tasks und Threads sowie auf das Speichermanagement und befassen uns mit der Ein- und Ausgabe.
Grundlagen
Nachdem Kapitel 1 die wichtigsten Grundlagen zum Verständnis des Unix-artigen Betriebssystems vermittelt hat, geht es in Kapitel 2 um die Grundlagen aus Anwendersicht. Dies umfasst einen Einblick in die Unix-Philosophie, den Startvorgang und den Login. Außerdem werden die wichtigsten Befehle vorgestellt, die man praktisch täglich verwendet, und es wird erklärt, wie man Treiber in den Kernel lädt oder auf die Dokumentationen des Betriebssystems zugreift.
Shell
Der zweite Teil des Buches beschäftigt sich auf etwa 150 Seiten intensiv mit der Shell, die in der Regel die primäre Arbeitsumgebung unter Unix-artigen Systemen darstellt. Kapitel 3 befasst sich mit der Definition und grundlegenden Anwendung der Shell. Dazu zählen der Start von Programmen, die Verwendung von Shell-Variablen und die Ein- und Ausgabeumlenkung. Außerdem zeigen wir Ihnen bereits dort, wie Sie sogenannte Pipes einsetzen und möglichst effektiv mit der Shell arbeiten können.
Reguläre Ausdrücke
Das vierte Kapitel befasst sich mit den sogenannten regulären Ausdrücken, die ein sehr bedeutendes Thema darstellen. Nach einer kurzen theoretischen Einführung in reguläre Ausdrücke wird gezeigt, wie man diese mit dem Stream-Editor sed und dem Tool grep anwendet.
Außerdem lernen Sie die Programmierung mit der Skriptsprache AWK, die in der Shellskriptprogrammierung sehr häufig Verwendung findet.
Tools
In Kapitel 5 folgt die Vorstellung wichtiger Tools, die man innerhalb der Shellskriptprogrammierung benötigt, um mit Dateien zu arbeiten.
Editoren
Bevor es dann nun endlich mit der richtigen Shellskriptprogrammierung losgeht, behandeln wir in Kapitel 6 noch Editoren. Editoren erleichtern die Shellskriptprogrammierung in hohem Maße. Im Besonderen soll es hierbei um die beiden bekannten Editoren vi und emacs gehen.
Shellskript- programmierung
Kapitel 7, das letzte Kapitel des Shell-Teils, befasst sich mit der Programmierung der Bourne(-Again) Shell (sh und bash). Wir zeigen, wie ein Shellskript aufgebaut ist, und wie man es ausführbar macht und anwendet. Außerdem lernen Sie, wie man in der Shell Berechnungen durchführt, Arrays benutzt, bedingte Anweisungen und Schleifen verwendet und Menüs bildet. Ebenfalls sehr wichtig ist das Thema der Funktionen, das wir natürlich auch nicht vergessen haben.
Benutzer- verwaltung
Der dritte Teil des Buches behandelt die System- und Netzwerkadministration – ein ebenfalls sehr spannendes Thema.
Kapitel 8 befasst sich zunächst mit der Benutzerverwaltung. Zunächst wird die lokale Benutzerverwaltung unter Unix besprochen. Dazu gehört zum Beispiel das Erstellen von neuen Benutzer-Konten, das Wissen zu Passwort-Dateien und der Shadowsuite, aber auch die Administration von Benutzergruppen. Zudem wird gezeigt, wie man als »jemand anders« arbeiten kann. Für die fortgeschrittenen Benutzer haben wir zudem auch die Administration von NIS- und LDAP-Servern behandelt.
Verwaltung
Das folgende Kapitel 9 geht auf die Rechteverwaltung, die Installation von neuer Software – wir behandeln natürlich auch die BSD-Ports – und die Automatisierung von Tätigkeiten ein. Außerdem erläutern wir das Logging, die Dateisystemverwaltung und – ganz wichtig – das Kompilieren eines neuen Kernels sowie die Anpassung des Systems an die deutsche Sprache und die deutsche Tastaturbelegung.
Netzwerk
Ab Kapitel 10 geht es dann um die Netzwerkkonfiguration, der viele Kapitel gewidmet sind, da dieses Thema besonders wichtig ist und auch für fortgeschrittene, gar professionelle Anwender hochinteressant ist. Kapitel 10 befasst sich zunächst mit den Grundlagen des TCP/IP-Netzwerks und klärt die wichtigsten Begriffe wie IP-Adresse, Port (TCP/IP) oder Layer. Danach wird die Netzwerkkonfiguration durchgeführt und das Routing aufgesetzt. Auch Netzwerkverbindungen werden betrachtet. Dazu zählt auch, dass man aktive TCP-Verbindungen, das Datenaufkommen an Schnittstellen oder den ARP-Cache unter die Lupe nimmt. Wer sich nun die Frage stellt, wie er mit Linux ins Internet kommt – auch darauf gehen wir in Kapitel 10 ein.
Client- Anwendungen
Die diversen Anwendungen für Netzwerk-Clients werden anschließend in Kapitel 11 besprochen. Dazu zählen zum Beispiel Telnet, die R-Tools, der FTP-Client, die bekanntesten Mailprogramme und IRC-Clients. Außerdem besprechen wir Usenet-Clients und den RSS-Reader snownews.
Netzwerk-Dienste
Kapitel 12 setzt den ersten Schritt in die Serverwelt und behandelt bekannte Standarddienste. Dazu gehören die »Superserver« inetd und xinetd sowie diverse Standarddienste. Außerdem werden verschiedenste Server aufgesetzt: DHCP-Server, NNTP-Server, Mailserver, ein Network Filesystem-Server (NFSd), ein FTP-Server sowie Samba.
Mailserver
Wie ein Mailserver funktioniert und wie dieser eingerichtet wird, erfahren Sie ein Kapitel später.
Webserver, LAMP
LAMS steht für Linux-Apache-MySQL-PHP. Apache ist der weltweit bekannteste und populärste Webserver und gehört zum Standardumfang von Linux.
Dieser wird natürlich auch in unserem Buch besprochen (siehe Kapitel 14). Dazu setzen wir noch die MySQL-Datenbank auf und gehen auf die PHP-Programmierung ein.
DNS-Server
Das folgende Kapitel 15 behandelt eine ebenfalls sehr wichtige Thematik: das Domain Name System, genauer gesagt nicht die Grundlagen aus Kapitel 10, sondern das Setup der Server. Wir behandeln in diesem Buch den populären bind-Server, der zum Standardumfang eigentlich aller Linux-Distributionen und BSD-Derivate zählt, sowie den Caching-Dienst des djbdns.
Zudem befassen wir uns mit den wichtigsten Tools, die man verwendet, um DNS-Anfragen durchzuführen.
Secure Shell
Wahrscheinlich haben Sie sich bereits gefragt, warum wir die Secure Shell (SSH) nicht im Client-Kapitel besprochen haben. Der Grund ist der, dass wir der Secure Shell inklusive des Servers und des Clients ein eigenes Kapitel (16) zugeteilt haben, da es leichter ist, beide Themen zusammen zu behandeln und zu verstehen.
X11
Der vierte Teil des Buches behandelt die grafische Oberfläche, das X-Window-System oder kurz X11. Kapitel 17 geht zunächst nur auf das Grundsystem, dessen Funktionsweise und Konfiguration sowie auf das Prinzip der Window-Manager und Desktops ein. Wir befassen uns außerdem mit dem grafischen Login und einigen zusätzlichen Features wie Xinerama bzw. DualHead.
Window-Manager
Window-Manager und Desktops werden in Kapitel 18 besprochen. Wir gehen auf drei besonders populäre Systeme, nämlich KDE, GNOME und den WindowMaker besonders detailliert ein und geben anschließend noch einen kurzen Überblick über alternative Window-Manager und Desktops.
X11-Tools
Unter X11 gibt es natürlich noch diverse Anwenderprogramme. Dazu zählen Office-Programme wie OpenOffice.org oder KOffice und das Textsatz-System LaTeX. Diese sowie einzelne X11-Editoren (natürlich nicht nochmals die aus Kapitel 6) und weitere populäre Programme, etwa the GIMP oder k3b, werden in Kapitel 19 vorgestellt.
Multimedia, Spiele
In Kapitel 20 geht es darum, das System für Audio- und Videoausgabe zu konfigurieren, aber auch darum, eine TV-Karte und Webcams zu verwenden. Außerdem sprechen wir darüber, wie man Linux dazu bekommt, einen Drucker zu verwenden, und welche Spiele zur Verfügung stehen.
Programmierung
Zu unseren Lieblingsthemen gehört auch die Programmierung und Sicherheit von Unix-artigen Systemen. Mit der Shellskriptprogrammierung und AWK soll es in diesem Buch nicht zu Ende sein, daher behandelt Kapitel 21 die Softwareentwicklung. Dazu zählen eine Aufzählung der wichtigsten unterstützten Programmiersprachen, die Erklärung von Shared Librarys und der Umgang mit dem Debugger. Außerdem behandeln wir – und das ist in wenigen bis gar keinen anderen Linux-Büchern zu finden – Software-Profiling und Tracing. Es folgt ein Einblick in integrierte Entwicklungsumgebungen wie KDevelop.
Danach werden sehr bekannte und mächtige Tools behandelt, die Sie zum Teil ebenfalls kaum in anderen Linux-Büchern finden: make, flex, yacc und bison. Zum Schluss geht es noch um die Veröffentlichung eigener Unix-Software, die Erstellung von Manpages, um das Versionsmanagement und um wichtige Bibliotheken.
C und Perl
Einen Crashkurs für C und Perl haben wir in Kapitel 22 eingebaut. Dort können Sie auch nachlesen, warum wir uns für diese beiden Sprachen entschieden haben.
Sicherheit
Der fünfte Teil des Buches schließt mit einem Kapitel zur Sicherheit von Unix-Systemen (Kapitel 23). Sie werden lernen, das System grundlegend abzusichern, Backups zu erstellen und unter Linux mit iptables eine Firewall zu konfigurieren. <In unserem Buch »Praxisbuch Netzwerksicherheit« finden Sie weiterführende Informationen zu diesem Thema. Zudem wird dort die OpenBSD-Firewall pf besprochen.>
Systeminterna
Wir haben uns dazu entschlossen, einen weiteren, etwas unüblichen Schritt zu gehen, der darin besteht, recht anspruchsvolle Hintergrundinformationen zu vermitteln. Wir möchten Ihnen zeigen, wie Linux und BSD wirklich funktionieren. Deshalb geht es im sechsten Teil des Buches um die Systeminterna.
Prozesse und IPC
Kapitel 24 setzt sich zunächst mit den Prozessen und ihrer Administration auseinander, erklärt, wie Signale funktionieren und Hintergrundprozesse gehandhabt werden. Wir gehen zudem auf Scheduling und Prozessprioritäten ein. Es folgt die Interprozess-Kommunikation (IPC), wobei wir Pipes, FIFOs, Semaphoren, Message Queues, Shared Memory und Unix Domain Sockets behandeln und Ihnen die wichtigsten damit verbundenen Funktionen zur Systemprogrammierung vorstellen.
Bootstrap und Shutdown
Einen genauen Einblick in den Bootstrap- und Shutdown-Mechanismus von Linux und BSD liefert Kapitel 25. Zunächst wird erklärt, wie es bis zum Start des Kernels kommt und wie die Bootmanager (LILO und Grub) administriert werden. Danach erklären wir init unter BSD und Linux, gehen auf getty und login ein und behandeln den System-Shutdown.
Dateisysteme
In Kapitel 26, dem letzten Kapitel vor dem Anhang, behandeln wir die Dateisysteme und deren Administration unter Linux und BSD. Es geht um den physikalischen und logischen Aufbau der Dateisysteme sowie um das virtuelle Dateisystem. Wir besprechen die einzelnen Dateisysteme wie ext2, ext3, reiserfs, FFS, UFS/UFS2, ISO9660, das Loop Device, die Ramdisk, Swap, DevFS, ProcFS und das Netzwerk-Dateisystem NFS. Anschließend erklären wir die einzelnen Dateitypen wie Verzeichnisse (die unter Unix eigentlich nur Dateien sind), Links, Sockets, named Pipes usw. und kommen anschließend auf die Inodes zu sprechen. Im letzten Abschnitt geht es um die Administration des Dateisystems mit disklabel, hdparam, fdisk, fsck, tune2fs und Co.
Virtualisierung
Emulatoren und Virtualisierungssoftware für die verschiedensten Systeme und Programmformate lernen Sie in einem letzten kleinen Kapitel kennen.
Installation
Für alle Einsteiger haben wir im Anhang A dafür gesorgt, dass Ihnen eine vernünftige und detaillierte Installationsanleitung zur Verfügung steht.
Zunächst gehen wir auf die allgemeinen Grundlagen der Installation ein und behandeln anschließend die spezifische Installation von Debian-Linux, Slackware-Linux, SUSE-Linux und OpenBSD.
Lösungen
Mit den Aufgaben am Ende der einzelnen Kapitel lassen wir Sie auch nicht im Regen stehen. Anhang B enthält die Lösungen.
Kommandoreferenz
Die Kommandoreferenz im Anhang C ist recht eigen. Sie behandelt nicht immer alle Parameter eines Programms, sondern geht auf die wichtigen ein. Generell finden Sie zunächst eine kurze Erklärung zum Programm selbst und den Pfad der Binärdatei und anschließend eine Tabelle, die wichtige Parameter beschreibt.