Installation & Konfiguration

Einleitung

Im Folgenden ein paar Tipps und Hinweise zur Planung und Installation eines Linux-Systems.

Hierbei handelt es sich lediglich um Kurztipps und selbst in der Summe soll dies keine komplette Anleitung sein. Dieser Anspruch würde schon an der Vielzahl der Distributionen scheitern, die normalerweise eine spezifische Installationsanleitung mitliefern, nach der man vorgehen kann. Bei vielen Distributionen ist die Installation auch schon so einfach, dass man sein System ohne größere Umstände installiert bekommt. Leider kommt dabei aber selten ein ideal konfiguriertes System heraus. :-S

Genau diesen Punkt möchte ich hier aufgreifen und die Gedanken beschreiben, die man sich vor dem Einschieben des Installationsmediums machen sollte. Diese Anleitungen sollten sich auf verschiedene gängige Distributionen anwenden lassen.

« zurück (Gesammelte Anleitungen)

Inhalt

Partitionieren und Mounten

Als absolutes Minimum sind eine Root-Partition (eingehängt unter / als oben liegende Wurzel des Dateisystems) und eine Swap-Partition notwendig.

Swap-Partitionen und deren Nutzung

Die Swap-Partition dient einerseits zum Auslagern länger nicht angeforderter Speicherseiten auf die Festplatte und, je nach Konfiguration, als Speicherort für das Speicherabbild bei suspend-to-disk. Bei den neueren Linux-Kerneln gibt es eine weitere Neuerung, die den Swapspeicher nutzt: tmpfs.

Dieses spezielle Dateisystem nutzt einen Teil des Arbeitsspeichers als Ramdisk und ist somit sehr performant. Es kann aber auch wie gewöhnliche Speicherseiten in den Swapbereich ausgelagert werden. Der Inhalt einer Ramdisk geht bei einer abrupten Stromunterbrechnung verloren, wenn man keine USV (oder einen Notebookakku) hat. Das Dateisystem tmpfs findet unter anderem für den Gerätedateibaum unterhalb des Verzeichnisses /dev bei udev Verwendung.

Für diese beschriebenen Funktionen (suspend-to-disk, tmpfs) sollte die Größe der Swap-Partition mit mindestens der doppelten Größe des vorhandenen Hauptspeichers bemessen werden.

Wenn man keine Swap-Partition anlegt, kann es schonmal zu seltsamem Verhalten führen, wenn der gesammte physikalische Speicher belegt ist. Dann werden gezielt Prozesse beendet, um Speicher freizugeben. Das Gleiche passiert natürlich auch, wenn der komplette virtuelle Speicher (also physikalisches RAM und Swapspeicher) vollgelaufen sind. Ein solches Verhalten zeugt entweder von Fehlplanung der Resourcen des Systems (sprich: zu wenig eingebautem Speicher) oder einem Software- oder Konfigurationsfehler.

Weitere Partitionen und deren Mountpoints

Das Root-Dateisystem ist als Einstiegspunkt natürlich zwingend erforderlich. Die Swap-Partition sollte wie soeben beschrieben auch immer in der richtigen Größe vorhanden sein. Damit wäre das System ohne Weiteres lauffähig, es wäre aber alles andere als ideal. Deshalb folgt hier eine kleine Auflistung, welche Teile des Dateisystembaums man auf separate Partitionen (bzw. Festplatten) auslagern sollte und warum man das tun sollte.

Weitere Vorüberlegung

Jede weitere Partition kostet unwiderbringlich Festplattenplatz und zwar nicht aufgrund der Verwaltungsinformationen, sondern weil man keine Partition zu 100% mit Daten belegen kann. Man hat also Verschnitt, der mit jeder weiteren angelegten Partition anwächst. Wird einer der genannten Mountpoints nicht auf eine separate Partition oder Festplatte ausgelagert, befinden sich die Dateien und Verzeichnisse unterhalb des Root-Dateisystems.

Das Ziel soll sein, soviele Partitionen wie nötig und so wenige wie möglich anzulegen. Die folgende Liste soll bei der Entscheidung helfen, ob eine Auslagerung eines Verzeichnisses auf eine separate Partitionen notwendig ist.

Weiterführende Informationen zu den einzelnen Verzeichnissen gibt es beim LDP unter Linux Filesystem Hierarchy.

« nach oben

Spezialfall /tmp

Im Anschluss an die Planung für das Partitionieren kommen hier noch Konfigurationsmöglichkeiten bezüglich des temporären Verzeichnisses /tmp, das innerhalb des Root-Dateisystems liegt und somit ausgelagert werden sollte. Um keine weitere Partition für das meist nur mit Dateien im Kilobyte-Bereich belegte Dateisystem zu verschwenden, legt man es entweder als tmpfs an, oder man legt es mit /var/tmp zu einem einzigen temporären Verzeichnis zusammen.

/tmp als tmpfs

Die erste Möglichkeit ist es, tmpfs zu nutzen. Bei modernen Linuxsystemen wird ein Teil des physikalischen Speichers für tmpfs reserviert und unter anderem für udev bzw. das Geräteverzeichnis /dev verwendet. Man kann sich für das temporäre Verzeichnis einfach ein Stück Speicher (hier: 64MB) herausschneiden und diese als /tmp einhängen:

# Datei /etc/fstab

# /tmp als tmpfs einbinden
tmpfs   /tmp   tmpfs   rw,size=64M,mode=1777,nodev,nosuid,noexec   0   0

Damit ist nach 64MB das Verzeichnis voll und das Root-Dateisystem vor dem Überlaufen gerettet. :-)

Ferner sind hier noch die mount-Optionen nodev, nosuid und noexec angegeben, d. h. es dürfen keine Gerätedateien angelegt, keine SetUID-Bits für ausführbare Programme gesetzt werden und überhaupt keine Dateien ausgeführt werden. Letzteres kann bei manchen Install-Skripten zu Problemen führen und man muss z. B. die Umgebungsvariable TMPDIR anpassen.

/tmp und /var/tmp via Bind-Mount zu einem Verzeichnis vereinen

Wozu braucht man überhaupt zwei temporären Verzeichnisse? Man hat die /var-Partition ausgelagert und dort unterhalb von /var/tmp bereits ein temporäres Verzeichnis. Jetzt liegt natürlich nahe, das Verzeichnis /tmp ganz zu löschen und es als Symbolischen Link auf /var/tmp anzulegen, wie es z. B. unter Solaris gemacht wird (wurde?). Mit Linux geht das aber eleganter, vor allem, da ein Symbolischer Link eben eine Datei und kein Verzeichnis ist und sich auch nicht wie eines verhält.

Seit Linux 2.4.0 ist es möglich, Teile des Dateisystembaums an anderer Stelle einzuhängen, sogenannte Bind-Mounts. Diese Eigenschaft machen wir uns gleich zunutze:

# Datei /etc/fstab

# bind mount /var/tmp -> /tmp
/var/tmp   /tmp   none   rw,bind,nodev,nosuid,noexec   0   0

Die Funktion der verwendeten mount-Optionen wurden bereits weiter oben geklärt.

Jetzt entspricht der Inhalt von /tmp exakt dem von /var/tmp, denn es ist dasselbe Verzeichnis, wie ein df zeigt:

# mount | grep /tmp
/var/tmp on /tmp type none (rw,noexec,nosuid,nodev,bind)
# df -h /tmp/.
Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
/dev/hda7             9,4G  1,2G  8,2G  13% /var

Damit liegt das Verzeichnis /tmp jetzt unterhalb von /var. Damit kann auch das Root-Dateisystem nicht mehr aufgrund eines überfüllten temporären Verzeichnisses vollaufen.

Normalerweise wird das /tmp-Verzeichnis beim Systemstart gelöscht, was damit jetzt auch /var/tmp betrifft. Da es sich bei diesen Verzeichnissen um Systemverzeichnisse handelt, sollte man dort als Benutzer sowieso keine Nutzdaten liegen haben, es sei denn man weiß, was man tut. ;-)

« nach oben

« zurück (Gesammelte Anleitungen)