Tips und Tricks für Linuxanwender

Dieses Dokument stellt eine Ansammlung von Informationen dar, die den Umgang mit Linuxsystemen erleichtern soll.

Was ist Linux?

Linux ist ein für viele Plattformen verfügbares Multiuser- und Multitaskingbetriebssystem.

Hilfe zur Selbsthilfe

Manpages

Die meisten Kommandos, viele Konfigurationsdateien und die Funktionen der C-Bibliothek sind in den sogenannten Manpages (dt.: Handbuchseiten) dokumentiert.

Korrekt installierte Manpages können mit den folgenden Kommandos angesehen bzw. gedruckt werden:

man [SEKTION] THEMA
man -t [SEKTION] THEMA | lpr

Die Suche nach bestimmten Themen ist dem Kommando apropos vorbehalten:

linux@gundel > apropos rpm
glint (8)            - Graphical Linux Installation Tool for RPM based systems
rpm (8)              - Red Hat Package Manager
rpm2cpio (8)         - Converts Red Hat Packge (RPM) to cpio archive
Die Verzeichnisse, in denen nach Manpages gesucht wird, werden gewöhnlich durch die Umgebungsvariable MANPATH bestimmt:
linux@gundel > echo $MANPATH
/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11/man:/usr/lib/perl5/man:/usr/man/itcl

Howtos und FAQs

Deutsche Übersetzungen einiger Original-Howtos können unter http://www.tu-harburg.de/~semb2204/dlhp/ abgerufen werden.

Eine Sammlung von in der Newsgruppe de.comp.os.linux.miscufig gestellten Fragen mit entsprechenden Antworten wird dort monatlich von Karsten Merker <dcol-faq@cologne.de> gepostet.

Linux Documentation Project

Als "offizielle" Dokumentation sind u.a die verschiedenen Handbücher des Linux Documentation Project ( LDP) anzusehen: Diese Handbücher können unter Berücksichtigung der Linux Documentation Project Copying License weitergegeben werden.

Bücher

Ein Überblick über deutsche Bücher zum Thema Linux liefert die Deutsche Linux Bücherliste, die am 3. jeden Monats u.a. in der Newsgruppe de.comp.os.linux.misc gepostet wird.

Troubleshooting

Der nicht fehlerfreie Ablauf einer Anwendung kann eine Vielzahl von Ursachen haben:

Ein Werkzeug, das Systemaufrufe protokolliert, kann sich als sehr hilfreich erweisen. Unter Linux ist dafür das Programm strace zuständig. Die Ausgabe aller Systemaufrufe, die Dateien öffnen, demonstriert das folgende Beispiel:

> strace -e open ls > /dev/null
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libc.so.5.3.12", O_RDONLY)   = 3
open("/usr/share/locale/C/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory)
open(".", O_RDONLY)                     = 3
Die möglichen Systemaufrufe werden in der Datei /usr/include/asm/unistd.h definiert und durch die Manpages der Sektion 2 beschrieben.

Sicherheitsmaßnahmen

Die wichtigste Sicherheitsmaßnahme ist natürlich ein regelmä[szlig ]&ges; Backup. Weiterhin ist es sehr nützlich sich ein Listing der Partitionstabelle auszudrucken. Das Listing erhält man mit dem Befehl fdisk -l als Superuser.

Dateisysteme

Second Extended Filesystem

Das Second Extended Filesystem (ext2fs) ist das Standard-Dateisystem unter Linux. Es wird angelegt mit dem Kommando mke2fs.

Diverse Parameter des ext2fs können mit tune2fs eingestellt werden:

Dateien

Eigentümer und Gruppenzugehörigkeit einer Datei können mit dem Kommando chown geändert werden.

Textdateien bearbeiten

Einzelne Zeilen einer Datei können mit dem Kommando sed gelöscht werden. Das folgende Beispiel demonstriert, wie die erste, die letzte bzw. die zweite bis vierte Zeile aus einer Datei gelöscht werden.
racke#~/tmp > echo -e 'foo\nbar\nbla\nups' > file
racke#~/tmp > sed -e '1d' file
bar
bla
ups
racke#~/tmp > sed -e '$d' file
foo
bar
bla
racke#~/tmp > sed -e '2,4d' file
foo

Terminals

Als Terminals werden sowohl die virtuellen Konsolen, die gewöhnlich nach dem Booten auf das Einloggen eines Benutzers warten, als auch Terminalemulatoren für das X Window System (z.B. xterm oder rxvt) bezeichnet.

Diese können durch Eingabe von Spezialzeichen (i.a. Kombinationen mit der Controltaste) gesteuert werden. Mit stty können u.a. die Zuordnung der Spezialzeichen eingestellt werden.

Bei versehentlicher Eingabe des Spezialzeichens für den Stop der Ausgabe der eingegebenen Zeichen (normalerweise Control-s) kann der Eindruck entstehen, daß die Shell "hängt". Dieser Zustand kann durch Eingabe des Spezialzeichens für den Neustart der Ausgabe (normalerweise Control-q) wieder verlassen werden.

Virtuelle Konsolen

Das Ausschalten des Screen-Blanking für eine virtuelle Konsole kann mittels setterm -blank 0 geschehen.

Das X Window System

X Window, oft fälschlich als X Windows bezeichnet, ist die Grundlage für graphische Benutzeroberflächen in Unixsystemen.

Benutzereinstellungen

Die Benutzereinstellungen können von der Kommandozeile mit dem Programm xset geänert werden. So wird zum Beispiel das Screen-Blanking mit xset s 0 ausgeschaltet.

Terminalemulatoren

xterm

Als nützlich erweisen sich die Popupmenüs von xterm, die gewöhnlich mit der Kombination Control- und Maustaste erreicht werden (das Aufblenden der Menüs kann seine Zeit brauchen). Das Hauptmenü ermöglicht es verschiedene Signale an die Anwendung zu senden, die unter dem xterm läuft.

Hinweise für Netzwerker

Proxys

Anwenderprogramme, die Proxys unterstützen, werten im allgemeinen die folgenden Umgebungsvariablen aus:
all_proxy
Defaultproxy für alle Protokolle
http_proxy
Proxy für das HTTP-Protokoll
ftp_proxy
Proxy für das FTP-Protokoll
no_proxy
Liste von Internetdomains, auf die direkt zugegriffen werden soll. Die einzelnen Einträge werden durch Kommas getrennt.

Performance

Mitunter hört man, daß die Performance des TCP/IP-Stacks zu wünschen übrig lä[szlig ]&. Tat;[auml ]&hlich ist er in den Kernelversionen 2.0.x "state of the art".; Lediglich die NFS-Server-Implementation ist, da sie im Gegensatz zum NFS-Client nicht in den Kernel eingebunden ist, nicht die Schnellste.

Drucken

Das Drucken einer Datei verläuft nach dem folgenden Schema:
  1. Senden des Druckauftrags
  2. Konvertierung in ein Format, das der Drucker versteht
  3. Ergebnis wird an Drucker gesandt
Der Benutzer ist nur für die Erteilung des Druckauftrags verantwortlich. Dazu dient der lpr-Befehl.

Drucken in umgekehrter Richtung

Postscriptdateien:
psselect -r FILE | lpr

Systeminformationen

Systeminformationen werden vom Kernel in Form des Pseudodateisystems proc zur Verfügung gestellt, das normalerweise als /proc gemountet wird. Voraussetzung ist ein Kernel, der mit aktivierten CONFIG_PROC_FS erzeugt wurde.

Der Inhalt dieser Dateien kann mit dem Kommando cat gelesen werden. Kommandos wie z.B. less schlagen fehl, da fast alle Dateien im proc-Dateisystem die Länge 0 haben. Durch Schreiben in bestimmte Dateien können auch Systemparameter verändert werden.

filesystems
Dateisysteme, die der Kernel ansprechen kann
racke#~ > cat /proc/filesystems 
        ext2
        minix
nodev   proc
        iso9660

Kernel

User- und Hackerkernel

Das Herz des Betriebssystem Linux ist der Kernel. Aufgrund der rasant fortschreitenden Entwicklung gibt es eine Vielzahl von Versionen, die in Userkernel und Hackerkernel unterteilt werden können.

Die Versionsnummer eines Linuxkernels besteht aus 3 durch Punkte getrennte Zahlen, z.B. 2.0.25. Die zweite Zahl gibt Aufschluß darüber, um welchen Kerneltyp es sich handelt. Userkernel sind durch eine gerade, Hackerkernel durch eine ungerade Zahl gekennzeichnet.

Userkernel sind für den normalen Anwender bestimmt und enthalten fast nur ausgetestete Features. Neue Versionen sind meist nur Bugfixes.

Hackerkernel dienen zum Ausprobieren von neuen Features und generell der Weiterentwicklung von Linux. Sie können aber durchaus von bestechender Stabilität sein, wie z.B. die Versionen 1.3.57 oder 1.3.68. Schließlich stammt der erste Userkernel einer Serie direkt vom letzten Entwicklungskernel der vorhergehenden Serie ab. Ein Wunschzettel für neue Features wird in der Newsgruppe comp.os.linux.development.system diskutiert. Dort werden auch die Kernel Change Summaries gepostet.

Die Kernelsourcen enthalten ein Verzeichnis Documentation mit Informationen zum Linuxkernel. Nach Einspielen einer neuen Kernelversion sollte man sich zunächst die Changes-Datei in diesem Verzeichnis zu Gemüte führen.

Ankündigungen und Patches für neue Kernelversionen werden auf den Mailinglistenlinux-kernel-announce@vger.rutgers.edu bzw. linux-kernel-patch@vger.rutgers.edu verschickt. Mit einer Mail an majordomo@vger.rutgers.edu mit dem Inhalt subscribe linux-kernel-announce EMail-Adresse bzw. subscribe linux-kernel-patch EMail-Adresse können diese abonniert werden.

Installieren der Kernelsourcen

Die aktuellen Kernelsourcen sollten sich stets im Verzeichnis /usr/src/linux befinden. Sinnvollerweise werden das oder die Verzeichnisse mit den Kernelsourcen als Unterverzeichnisse von /usr/src mit dem Namen linux-VERSION eingerichtet und ein symbolischer Link linux angelegt:
/usr/src > tar -xzf linux-2.0.21.tar.gz
/usr/src > ln -s linux-2.0.21 linux
Dies erleichtert z.B. die Zusammenarbeit mit dem pk-Skript zum automatischen Patchen des Kernels.

Patchen des Kernels

Inzwischen hat der Umfang der gepackten Kernelsourcen bereits die 6MB-Grenze überschritten und durch die Integration verschiedener Plattformen wird sich dieses Wachstum fortsetzen. Es ist also wenig zweckmä[szlig ]&g beim Erscheinen einer neuen Kernelversion diese komplett vom Netz zu saugen. Stattdessen er;[auml ]&t man sogenannte Patches, mit denen man die Kernelsourcen auf den neuesten Stand bringen kann.;

Als erstes wird der Kernelpatch in das Verzeichnis /usr/src kopiert:

/incoming > cp patch-2.0.21-2.1.0.gz /usr/src
Nun kann der Patch eingespielt werden:
/usr/src > zcat patch-2.0.21-2.1.0.gz | patch -p0
Ist der Patch fehlgeschlagen, legt patch Dateien mit der Endung .rej an. Diese kann man aufspüren mit dem folgenden Kommando:
/usr/src > find linux-2.0.21 -name '*.rej'

Konfigurieren des Kernels

Bevor der Kernel übersetzt wird, müssen Anpassungen vorgenommen, um ihn für ein System maßzuschneidern. Dazu gibt es verschiedene Möglichkeiten:
  1. Mit make config bzw. make oldconfig werden alle Einstellungen nacheinander abgefragt, so daß man bei einer Fehleingabe von neuem beginnen muß. Letzterer Befehl fragt jedoch nur neue oder geänderte Einstellungsmöglichkeiten ab.
  2. Eine menügesteuerte Konfiguration kann mit make menuconfig auch auf der Konsole durchgeführt werden, Voraussetzung ist lediglich das Vorhandensein der ncurses-Bibliothek.
  3. Die Konfiguration mittels einer graphischen Benutzeroberfläche ist mit make xconfig möglich.

[Uuml ]&ersetzen des Kernel;

Fehlerdiagnose

Die normalen Makefile-Targets zum Erzeugen eines Kernels schlagen mit der Meldung System is too big fehl, wenn der erzeugte Kernel eine bestimmte Grö[szlig ]&;[uuml ]&erschreitet. In diesem Fall sind die Makefile-Targets; bzImage, bzlilo bzw. bzdisk zu verwenden.

Dynamische Module

Module laufen im Adreßraum des Kernels ab, können aber von ihm unabhängig zugefügt und wieder gelöscht werden. Der Kerneldämon kerneld automatisiert das Laden benötigter und das Entfernen nicht mehr benötigter Module.

Dynamische Module werden vom Kernel unterstüzt, wenn bei Konfiguration des Kernels die Option CONFIG_MODULES gesetzt worden ist. Die entsprechende Option für den Kerneldämon heißt CONFIG_KERNELD. Weiterhin ist es empfehlenswert CONFIG_MODVERSIONS zu aktivieren, damit Symbole beim Laden von Modulen unabhängig von der Kernelversion geprüft werden können [1].

kerneld und weitere Programme sind im modules -Paket enthalten, daß vor der Verwendung dynamischer Module installiert werden muß. Dies geschieht durch Aufruf von make install im Hauptverzeichnis nach Auspacken der Sourcen.

Nach dem Erzeugen des Kernels werden die als Module konfigurierten Treiber, Binärformate und Dateisysteme mit make modules übersetzt und mit make modules_install installiert.

Der Kerneldämon wird bei der Initialisierung des Systems gestartet. Dies sollte zu einem möglichst frühen Zeitpunkt geschehen, damit während der Abarbeitung der Initscripte der Modulsupport zur Verfügung steht.

Das folgende Scriptschnippsel startet den Kerneldämon und aktualisiert die Modulabhängigkeiten [1]:

if [ -x /sbin/kerneld ]
then 
	/sbin/kerneld
	if [ ! -r /lib/modules/`uname -r`/modules.dep ]
	then
		echo "Creating module dependencies"
		/sbin/depmod -a
	fi
fi

Laufzeitkonfiguration

Einige Kernelparameter können zur Laufzeit geändert werden, wenn der Kernel mit der Option CONFIG_SYSCTL erzeugt wurde.

Fehlermeldungen des Kernels

Hinweise zur Analyse von Fehlermeldungen des Kernels befinden sich in /usr/src/linux/Documentation/oops-tracing.txt.

Bibliotheken

Ausführbare Programme werden vom Linker aus Objektdateien und Bibliotheken zusammengesetzt. Die Bibliotheken werden entweder komplett in das Programm integriert (statisch gebunden) oder es werden nur Referenzen auf Funktionen und Variablen aufgenommen ( dynamisch gebunden).

Letzteres Verfahren hat folgende Vorteile:

Erkauft wird dies mit einer etwas geringeren Geschwindigkeit bei Ausführung dieser Programme. Wichtige Programme sollten entweder statisch gebunden sein oder in einer statisch gebundenen Version verfügbar sein, falls der dynamische Linker versagen sollte.

Auskunft, ob und welche Bibliotheken zu einem Programm dynamisch gebunden wurden, erteilt das Programm ldd:

> ldd /usr/sbin/sendmail
libc.so.5 => /lib/libc.so.5.3.12

Programmierung

WWW-Quellen

Allgemeine Informationen über Programmierung allgemein und Programmiersprachen im spezielllen bietet Programming and Computational Languages -- A Subject Catalogue.

USENET News

Eine kaum überschaubare Vielfalt von Diskussionsgruppen finden sich in den USENET News. Die einzelnen Beiträge heißen Artikel und erscheinen in einer oder mehreren Newsgruppen.

Newsreader

Newsartikel können mit einem der vielzähligen Newsreader gelesen und erzeugt werden. Zunächst abonniert man die gewünschten Newsgruppen und wählt innerhalb dieser Gruppen die interessanten Artikel aus. Informationen über die abonnierten Gruppen und gelesenen Artikel werden normalerweise in der Datei .newsrc im Homeverzeichnis des jeweiligen Benutzers gespeichert. Dadurch können verschiedene Newsreader auf den gleichen Daten operieren.

Bestimmte Newsreader erzeugen noch weitere Dateien, z.B. benutzt der im Editor Emacs integrierte Newsreader GNUS die Dateien .newsrc.el und .newsrc.eld im Homeverzeichnis des Benutzers.

Literaturverzeichnis

[1] Peter Weiss. Betriebssystem scheibchenweise. iX 1997, 132-143.

Indexe

Index der Kerneloptionen

Personenindex

Anwendungsindex

Index der Punktdateien

Verzeichnisindex

Umgebungsvariablen

Meldungsindex

Index


Written by Stefan Hornburg <racke@gundel.han.de>
Translated from trove.sgml by Info Prism's sgml2html v0.0.6
Last modified 2 January 1999