Die Daemonen, die ich rief...
FreeBSD als Alternative zu Linux

von Lukas Ertl (Ausgabe 00/2, Juni 2000)


Hypeware

Den geneigten LeserInnen etwas über Linux erzählen zu wollen, würde heutzutage wohl bedeuten, Eulen nach Athen zu tragen: Die Popularität und Akzeptanz des freien, Unix-artigen Betriebssystems steigt von Woche zu Woche, und während es vor einigen Jahren noch Computer-Gurus vorbehalten war, ein funktionierendes Linux-System zu installieren, bringt die inzwischen enorm erhöhte Anwenderfreundlichkeit auch viele "normale" Benutzer dazu, sich "dieses Linux" zumindest einmal anzuschauen. Unterstützt wurde diese Entwicklung durch die zunehmende Kommerzialisierung und Vermarktung von Linux - so geht es beispielsweise im momentanen "Krieg der Distributoren" nicht etwa um spezielle Kernel-Features, sondern um die benutzerfreundlichste Installationshilfe.

Leider wird bei all diesem Hype oft übersehen, daß Linux nicht die einzige frei erhältliche Alternative zu den allgegenwärtigen Softwareprodukten von Microsoft ist: Auch den BSD-Abkömmlingen NetBSD, FreeBSD und OpenBSD gebührt es, ins Licht der Öffentlichkeit gerückt zu werden.

Netz, frei und offen

BSD steht für Berkeley Software Distribution, und die Entstehung der freien BSD-Derivate ist untrennbar mit der Geschichte von Unix verbunden. 1969 - also zu einer Zeit, als PCs noch unbekannt waren, Daten über Lochkarten eingegeben wurden und nur entsprechend ausgebildete Forscher Zugang zu den großen Mainframes hatten - wurde in den AT&T Bell Labs das erste Betriebssystem mit dem Namen Unix entworfen und in den folgenden Jahren an interessierte Universitäten frei verteilt. Auch die University of California in Berkeley erhielt ein Magnetband mit den Unix-Quellcodes, und ihre Mitarbeiter gingen mit Eifer daran, das System weiterzuentwickeln und ihm ihren Stempel aufzuprägen. So hatte die Version 3BSD (1979) Virtual Memory Management integriert, und Version 4.2BSD (1983) wartete mit einem Feature namens TCP/IP (Transmission Control Protocol / Internet Protocol) auf, das noch heute Grundlage des Internet ist.

Vor rund zehn Jahren entschlossen sich die BSD-Entwickler, ihr System vom proprietären AT&T-Quellcode zu befreien und einer breiten Masse von Programmierern zur Verfügung zu stellen. Daraus entstand nun zuerst NetBSD, dessen Entwicklerteam sich darauf konzentrierte, das System für möglichst viele Hardware-Plattformen anzubieten, und in weiterer Folge FreeBSD, das perfekt auf 386er-PCs abgestimmt werden sollte. Mitte der neunziger Jahre spaltete sich die NetBSD-Gruppe, und ein Teil der Entwickler arbeitete fortan an einem Projekt namens OpenBSD, das sich auf die Fahnen geheftet hat, das sicherste freie Betriebssystem der Welt zu sein.

Linux vs. BSD

Im Vergleich mit Linux weisen die BSD-Systeme, abgesehen von der Systemadministration, einige gravierende Unterschiede auf. So ist als "Linux" eigentlich nur der Kernel zu bezeichnen, dem die verschiedenen Distributoren (RedHat, SuSE, Caldera, Debian usw.) das für den Anwender nutzbare System beigeben - meist in Form diverser GNU-Tools. Die BSD-Systeme hingegen sind als Ganzes zu betrachten und bestehen aus Kernel, Dienstprogrammen, Dokumentation und den obligatorischen Anwendungen.

Daher unterscheiden sich auch die hierarchischen Strukturen der Systeme: Der Hauptverantwortliche für den Linux-Kernel ist noch immer Linus Torvalds; dennoch (und damit wird auch oft die anfängliche Popularität von Linux begründet) steht es jedem Programmierer mit genügend Hirnschmalz frei, das darüberliegende System zu bearbeiten. Im Gegensatz dazu werden die BSD-Derivate von je einem "Core Team" verwaltet, das sich um die Weiterentwicklung der erwähnten Systemmerkmale kümmert. Diese Teams bestehen natürlich nicht aus diktatorischen Freaks, aber um in den Kreis der Hauptentwickler aufgenommen zu werden, muß man sich erst seine Sporen verdienen.

Lizenzrechtlich gilt für Linux-Distributionen bzw. deren Anwendungen größtenteils die GNU General Public License (GPL), die dafür sorgt, daß der Quellcode "freies Gedankengut" bleibt und immer zugänglich ist. Die BSD-Systeme dagegen unterliegen der äußerst liberalen Lizenzierung durch die University of California, die lediglich verlangt, daß in einem Vermerk auf die Herkunft der Software (also auf ebendiese Universität) hingewiesen werden muß.

Im folgenden soll nun näher auf FreeBSD eingegangen werden, das sich aufgrund seines Entwicklungsstandes und seiner Benutzerfreundlichkeit als das populärste BSD-System für PCs erwiesen hat.

Warum FreeBSD?

Die Frage, warum man sich für FreeBSD anstelle von Linux entscheiden sollte, ist rational schwer bzw. gar nicht zu beantworten. Beide Systeme sind Open Source, beide Systeme halten (meistens), was sie versprechen, beide Systeme sind gut genug, um gegen Produkte anderer großer Software-Schmieden anzutreten. Die Diskussionen in den einschlägigen Newsgruppen und Foren zum Thema "Linux vs. FreeBSD" stehen in Umfang, Länge und Sinnhaftigkeit anderen Auseinandersetzungen wie "emacs vs. vi" oder gar "RedHat vs. SuSE" um nichts nach. Deshalb möchte ich beschreiben, warum ich mich für FreeBSD entschieden habe.

Einfache Aktualisierung des Haupt-Systems

Wie bereits erwähnt, besteht FreeBSD nicht nur aus dem Kernel, sondern auch aus zahlreichen Dienstprogrammen, Tools, Konfigurationsdateien, ... Da es unter FreeBSD im Gegensatz zu Linux eher unüblich (aber natürlich möglich) ist, vorkompilierte Binär-Pakete zu installieren, muß man die Quellcodes der jeweiligen Programme selbst übersetzen. Wie jede Software wird natürlich auch FreeBSD laufend verändert: Die Entwickler bessern Bugs aus, flicken Sicherheitslöcher oder bauen neue Features ein. Um den Benutzern die mühsame Prozedur zu ersparen, alle Änderungen manuell nachvollziehen zu müssen (überprüfen, was sich geändert hat, Patches herunterladen, Patches einspielen usw.), verwendet FreeBSD ein System namens CVSup.

Der Name rührt von CVS her, das für Concurrent Versions System steht und - einfach gesagt - nichts anderes macht, als die Quellcodes auf dem einen Computer (dem Client) mit den Quellcodes auf einem anderen Computer (dem Server) zu synchronisieren. In der Praxis sieht das so aus, daß sich der Client mit dem Server verbindet und im sogenannten Repository überprüft, ob sich Dateien geändert haben und wie diese Änderungen aussehen (z.B. ob eine Datei umgeschrieben, hinzugefügt oder gelöscht wurde). Anschließend werden die lokalen Quellcodes auf den Stand des Repository gebracht, wobei das Editieren, Herunterladen oder Löschen von Dateien automatisch geschieht. Will man nun aus diesen aktualisierten Quellcodes funktionierende Programme erstellen, reicht es, ins Verzeichnis /usr/src zu wechseln und dort mit dem Befehl make world das komplette System neu zu bauen.

Es mag für den einen oder anderen etwas erschreckend sein, das Schicksal seines Systems einem Makefile anzuvertrauen; nach meinen Erfahrungen geht ein make world aber reibungslos über die Bühne, besonders dann, wenn es sich um den STABLE-Entwicklungszweig handelt, in den nur Dinge einfließen, die sich als stabil erwiesen haben. (Im Gegensatz dazu ist es beim CURRENT-Entwicklungszweig, der das "cutting edge" der FreeBSD-Entwicklungsarbeit darstellt, nicht so sicher, ob ein make world klappt.)

Die Ports-Collection

Das Kompilieren und Installieren von Programmen unter Linux stellt für Benutzer in manchen Fällen einen ziemlichen Hindernislauf dar: Zuerst muß die neueste Version des Programms A im Internet gesucht werden, dann braucht man noch diese und jene Zusatz-Bibliothek, um das Programm überhaupt kompilieren zu können, beim Installieren der Zusatz-Bibliothek X stellt man fest, daß sie sich nicht mit der bereits installierten Bibliothek Y verträgt - man soll doch bitte auf Version Z updaten; nach dem Update liegen noch zahlreiche Dateien der alten Bibliothek herum und stören die Funktion der neuen, außerdem arbeitet das bewährte Programm B nun nicht mehr, weil sich die Verzeichnisstrukturen der neuen Bibliothek gravierend von den bisherigen unterscheiden, ...

Genau hier setzt die Ports-Collection an, die dazu dient, das Installieren von neuen Programmen so einfach wie möglich zu machen (der Begriff "Port" meint in diesem Zusammenhang eine "portierte Applikation", d.h. ein speziell an FreeBSD angepaßtes Programm). Dazu befinden sich im Verzeichnis /usr/ports - unterteilt in Sparten wie mail, news, databases, editors, x11 usw. - weitere Unterverzeichnisse mit sogenannten Skeletons für die einzelnen Applikationen. Diese Skeletons stellen das Grundgerüst für das Kompilieren von Programmen dar. Sie bestehen aus einem Makefile, diversen FreeBSD-spezifischen Patches für das jeweilige Programm und einer README-Datei, die den Port beschreibt. Derzeit gibt es ca. 3200 Ports, die natürlich laufend aktualisiert und erweitert werden. Um die Ports-Collection seines Computers aktuell zu halten, bedient man sich der oben beschriebenen CVSup-Technik.

Für den Benutzer reduziert sich der Aufwand des Installierens von Programmen dadurch auf ein Minimum: Man muß lediglich in das Verzeichnis des Ports wechseln (beim Editor emacs z.B. ins Verzeichnis /usr/ports/editors/emacs) und dort das Kommando make install eingeben. Den Rest erledigt die Magie der Ports-Collection: Zuerst wird überprüft, ob sich das Paket mit den Sourcen bereits auf der Festplatte oder auf einer gemounteten CD-ROM befindet; ist das nicht der Fall, wird es aus dem Internet heruntergeladen, daraufhin entpackt, gepatcht, kompiliert und installiert. Falls Abhängigkeiten zu anderen Paketen vorliegen (z.B. zu bestimmten Bibliotheken), werden diese ebenfalls automatisch installiert.

Bei FreeBSD übernimmt CVSup das Aktualisieren des Systems und der Ports-Collection.

Natürlich können auch etliche Programme, die sich nicht in den Ports finden, "zu Fuß" kompiliert und installiert werden, ohne daß dabei Probleme auftreten. Das System der Ports-Collection sorgt jedoch dafür, daß die Applikationen auf FreeBSD zugeschneidert werden und klar und überschaubar zur Verfügung stehen. Erfahrungsgemäß geht eine Installation aus den Ports nur in den seltensten Fällen schief - und wenn doch, wird der Fehler innerhalb weniger Tage behoben.

Kompatibilität zu Linux und anderen Betriebssystemen

Abgesehen davon, daß sich unter FreeBSD Partitionen mit dem Linux-Dateisystem ext2fs mounten lassen, ist es auch möglich, Linux-Binaries auszuführen. Das hat mehrere Vorteile: Einerseits können dadurch auch Programme verwendet werden, die sich wider Erwarten nicht in den Ports finden oder bei der Installation Schwierigkeiten machen, aber z.B. auf einem parallel installierten Linux-System vorhanden sind. Andererseits gehen immer mehr Softwarehersteller daran, ihre kommerziellen Produkte auf das populäre Linux zu portieren. Diese liegen dann nur in Binärform vor; durch die Linux-Emulation eröffnet sich aber die Möglichkeit, Programme wie StarOffice, VMware oder Oracle, für die es (noch) keine nativen FreeBSD-Versionen gibt, unter FreeBSD zum Laufen zu bringen (auch wenn das zugegebenermaßen manchmal eine etwas heikle Prozedur ist).

Ebenso wie unter Linux lassen sich auch DOS-Partitionen, die mit dem FAT- bzw. FAT32-Dateisystem formatiert sind, sowie NTFS-Partitionen mounten, wobei allerdings auf NTFS-Dateisysteme nur ein sehr beschränkter Schreibzugriff erfolgen kann.

Stabilität

FreeBSD wird häufig eingesetzt, wenn es darum geht, einen Server bereitzustellen, der schnell, stabil und sicher eine Unmenge von Benutzeranfragen erledigen kann. Als prominente Beispiele hierfür dienen die Suchmaschine Yahoo, die zu den meistbesuchten Seiten im Internet zählt, der FTP-Server von Walnut Creek CDROM, von dem pro Tag ein Terabyte (!) an Daten heruntergeladen wird, der Webserver von Sony Japan - und selbst Hotmail, das eMail-Service von Microsoft, läuft unter FreeBSD.

Natürlich kann FreeBSD nicht nur als Server verwendet werden: Durch das Vorhandensein von GNOME, KDE und allen erdenklichen anderen Window-Managern steht auch dem Desktop-Einsatz nichts im Wege.

Das Wichtigste überhaupt

Untrennbar mit der Popularität von Linux verbunden ist dessen Maskottchen: Tux, der Pinguin. Selbstverständlich hat auch FreeBSD ein Maskottchen: Chuck, den "Daemon", der im Gegensatz zu Tux nicht mit Heringen gemästet wird.

Schritt für Schritt

Als minimale Hardware-Anforderungen für FreeBSD gelten ein 386er-PC mit 16 MB RAM und 100 MB Plattenplatz; nach meinen Erfahrungen sollten aber mindestens 64 MB RAM und 2 GB freier Plattenplatz vorhanden sein, um alle Sourcen installieren und mit dem X Window-System arbeiten zu können.

Die Installation von FreeBSD ist textbasiert und dürfte jemandem, der bereits mit Linux gearbeitet hat, keine allzu großen Probleme bereiten:

  • Nachdem von CD oder Diskette gebootet wurde,
  • empfängt FreeBSD den Benutzer mit dem Programm sysinstall, das entfernt an yast von SuSE erinnert, aber durchwegs in Englisch gehalten ist. Die einzelnen Menüpunkte sind praktisch selbsterklärend.
  • Zuerst sollte man über den Menüpunkt Keymap die deutsche Tastaturbelegung German ISO auswählen, um Überraschungen im Verlauf der Installation ("Warum ist der Slash nicht da, wo er sein soll?") zu vermeiden.
  • Weiters ist ein Blick in die Dokumentation ratsam, die sich sinnigerweise unter Doc befindet.
  • Anschließend kann mit der Installation begonnen werden. FreeBSD bietet dafür drei Varianten an: Standard (für Anfänger), Express (für Ungeduldige) und Custom (für Experten). Für Erstinstallationen sollte wohl der Punkt Standard gewählt werden.
  • Hier muß zunächst über ein fdisk-ähnliches Tool eine geeignete Partition erstellt werden. In diesem Punkt unterscheidet sich FreeBSD grundlegend von Linux: Linux benötigt mehrere - primäre oder erweiterte - Partitionen, um einzelne Teile des Systems (z.B. /usr, /var, /home, Swap) zu trennen. FreeBSD verwendet nur eine primäre Partition, die erst anschließend in sogenannte Slices unterteilt wird. Näheres dazu findet man im Linux+FreeBSD-HOWTO.
  • Ist die Partitionierung erledigt, muß der Bootmanager festgelegt werden. Linux-Benutzer können - mit einem entsprechenden Eintrag in /etc/lilo.conf - weiterhin ihren LILO (Linux Loader) benutzen; der FreeBSD-Bootloader hat sich aber ebenfalls als sehr komfortabel erwiesen: Einmal installiert, erkennt er automatisch alle vorhandenen Partitionen und merkt sich das zuletzt gebootete Betriebssystem. (Bei einem parallel installierten Linux benötigt man den LILO zusätzlich; er muß dann allerdings statt im Master Boot Record im Boot Record der root-Partition installiert werden.)
  • Im nächsten Schritt muß die zuvor erstellte Partition in einzelne Slices unterteilt werden - z.B. /, /home, /usr, Swap. Es empfiehlt sich, den Swap-Bereich als zweiten Slice zu erstellen und den /usr-Slice hinreichend groß zu machen (mindestens 1 GB), da das FreeBSD-System großteils im /usr-Bereich "lebt".
  • Nun muß man sich entscheiden, welche "Distribution" auf die Platte geladen werden soll. Unter Distribution versteht FreeBSD den Installationsumfang des Hauptsystems - z.B. User (nur die notwendigen Binaries), X-User (Binaries plus X Window-System), Kern-Developer (Binaries plus Sourcen), usw. Natürlich steht es frei, die Distribution über den Punkt Custom anzupassen.
  • Bevor nun die Installation über die Bühne gehen kann, fragt sysinstall noch nach, ob man in den USA wohnt (ist derzeit wegen der Kryptographie-Exportbestimmungen notwendig),
  • und ob man die Ports-Collection installieren will. Da diese ein hervorstechendes Merkmal von FreeBSD ist, sollte sie auf jeden Fall installiert werden - genügend Speicherplatz (ca. 90 MB im /usr-Slice) vorausgesetzt.
  • Nun steht der Installation nichts mehr im Wege, und die Daten werden auf die Festplatte geschaufelt. Auf der zweiten virtuellen Konsole (erreichbar via <Alt>+F2) kann man zusehen, was dabei genau passiert - ein nettes Feature, das mir noch bei keiner Linux-Installation untergekommen ist.
  • Ist die Installation beendet, müssen noch die obligatorischen Fragen zu Netzwerk, Zeitzone, Maus und X-Konfiguration beantwortet werden.
  • Anschließend kann man einzelne vorkompilierte Pakete aus der Ports-Collection installieren, wobei auf jeden Fall die bash-Shell und eventuell der less-Pager ausgewählt werden sollten, da diese nicht standardmäßig vorgesehen sind. (Zu beachten ist, daß Programme aus den Ports unter /usr/local/bin installiert werden und die bash-Shell daher mit /usr/local/bin/bash anzusprechen ist.)
  • Nun muß man nur noch User anlegen und das root-Paßwort setzen, Reboot, fertig!

Ich will, ich will, ich will!

Falls nun der eine oder andere Lust verspürt, FreeBSD auf seinem Rechner zu installieren, stellt sich die Frage nach der Bezugsquelle. Wenn man über eine schnelle Internet-Verbindung verfügt (z.B. Telekabel, ADSL, Uni-LAN), ist die Installation über FTP die sinnvollste Variante: Dazu muß man sich nur zwei Floppy-Images (für die Boot-Disketten) herunterladen, damit booten und wie oben beschrieben installieren. Aber auch wer nicht in der glücklichen Lage ist, einfach mal schnell hunderte Megabytes aus dem Netz zu holen, braucht nicht zu verzagen. Zwar gibt es die FreeBSD-CD-ROMs (noch) nicht beim Libro, aber technische Buchhandlungen wie das Lehrmittelzentrum der TU, Fric oder Frank CDROM führen FreeBSD - oft auch gebündelt mit Büchern - in ihrem Sortiment.