Angepasster NetBSD-Kernel für das ALIX.1C

Anbei gebe ich mal eine erste Version für eine individuell angepasste Kernelkonfiguration von NetBSD 4.0 für das ALIX.1C Board an. Auch wenn NetBSD als solches als ein Betriebssystem angesehen wird, welches auf möglichst vielen Hardwareplattformen (z.B.: Embedded-Systeme, alte UNIX-Workstations) zum Einsatz kommen soll, macht diese Vorgehensweise auf einer Single-Board-Lösung wie dem ALIX besonders viel Sinn. Zum einem handelt es sich dabei um Hardware, die aufgrund ihrer Konzeption nur sehr geringe Leistung erbringen kann und diese auch nicht ausbaufähig ist, zum anderen basiert diese gleichzeitig auch auf der gewöhnlichen und handelsüblichen i386-Architektur, die aus historischer Sicht und aufgrund ihrer sehr umfangreichen technischen Weiterentwicklung unter den frei verfügbaren Unix-Entwicklungen sehr viel Unterstützung in Form von Treibern vieler zusätzlich erhältlichen Hardware-Komponenten gefunden hat. Konkret heißt das für mich, dass ich durch das Weglassen vieler (alten) verfügbaren Bustechnologien (z.B. MCA, EISA oder Bluetooth) und der dafür verfügbaren Hardwarekomponenten den Kernel um ein wesentlichen Anteil verkleinern konnte. Zusätzlich habe ich noch bewusst auf die Unterstützung einiger Schnittstellen, die das ALIX-Board anbietet, verzichtet. Dies währe zum einem der verbaute Sound-Chip, da er für einen Serverbetrieb nicht benötigt wird. Zum anderen kann man auch auf die Funktionalität einer Parallelen Schnittstelle verzichten, wenn man wie ich das Board in das kleinste verfügbare Gehäuse verbaut, wo es keine Möglichkeit gibt, sie von dem internen Pfostenstecker heraus zu leiten. Auf diese Weise konnte ich also nun wie gesagt die Größe des generischen Standartkernel um mehr als die Hälfte senken. Aber sicherlich ist an der Konfiguration noch einiges an Optimierung möglich.

Alix.1c-Kernelkonfiguration

Anleitung zum Erstellen eines bootbaren USB-Stick unter NetBSD

Hier habe ich mal eine kleine Anleitung zum Erstellen eines bootbaren USB-Stick’s erstellt, von dem aus NetBSD auf die lokale Festplatte installiert werden kann. Dabei wird ausgegangen, dass es sich um einen FAT-formatierten Stick mit 1 GB Speicher handelt. Er wird standardmäßig unter NetBSD als Gerät /dev/sd0e gemountet. Im Prinzip gleicht sie der aus dem Wiki von den BSD-Foren. Nur dass ich die entsprechenden Laufwerksbezeichnungen und Verzeichnisse meines eingesetzten System angepasst habe.

1. Den USB-Stick bootbar machen

Das Einrichten des USB-Sticks erfolgt auf einem NetBSD-System. Neben einem neuen oder bereits gebrauchten USB-Stick mit mindestens 256MB Speicherkapazität wird ein CD-Image der gewünschten NetBSD-Version benötigt. Das ca. 200MB grosse CD-Image ist im Internet auf vielen FTP-Servern verfügbar.

Generell empfiehlt es sich, als ersten Schritt den Master Boot Record (MBR) neu zu installieren. Dies ist zwar nicht unbedingt notwendig, stellt aber sicher, dass der USB-Stick booten wird:

$ su
# fdisk -i /dev/sd0d
Update the bootcode from /usr/mdec/mbr? [n] y

Ausserdem ist es empfehlenswert, zunächst unter fdisk(8) eine NetBSD-Partition einzurichten:

# fdisk -u /dev/sd0d
Disk: /dev/sd0d
NetBSD disklabel disk geometry:
cylinders: 996, heads: 64, sectors/track: 32 (2048 sectors/cylinder)
total sectors: 2040832
BIOS disk geometry:
cylinders: 1012, heads: 32, sectors/track: 63 (2016 sectors/cylinder)
total sectors: 2040832
Do you want to change our idea of what BIOS thinks? [n]
Partition table:
0: Primary DOS with 32 bit FAT (sysid 11)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Which partition do you want to change?: [none] 0
The data for partition 0 is:
Primary DOS with 32 bit FAT (sysid 11)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
sysid: [0..255 default: 11] 169
start: [0..1012cyl default: 63, 0cyl, 0MB]
size: [0..1012cyl default: 2040759, 1012cyl, 996MB]
bootmenu: []
Partition table:
0: NetBSD (sysid 169)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Which partition do you want to change?: [none]
We haven't written the MBR back to disk yet. This is your last chance.
Partition table:
0: NetBSD (sysid 169)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Should we write new partition table? [n] y

Zusätzlich sollte die NetBSD-Partition unter fdisk noch auf „Active“ gesetzt werden:

# fdisk -a sd0
Disk: /dev/rsd0d
NetBSD disklabel disk geometry:
cylinders: 996, heads: 64, sectors/track: 32 (2048 sectors/cylinder)
total sectors: 2040832
BIOS disk geometry:
cylinders: 1012, heads: 32, sectors/track: 63 (2016 sectors/cylinder)
total sectors: 2040832
Partition table:
0: NetBSD (sysid 169)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Do you want to change the active partition? [n] y
Choosing 4 will make no partition active.
active partition: [0..4 default: 4] 0
Are you happy with this choice? [n] y
We haven't written the MBR back to disk yet. This is your last chance.
Should we write new partition table? [n] y

NetBSD nutzt eine eigene Partitionstabelle, nicht die von fdisk. Diese wird mit disklabel angelegt:

# disklabel -i -I /dev/sd0e
partition> a
Filesystem type [?] [unused]: ?
Supported file system types:
4.1BSD Eighth Edition MSDOS unknown
4.2BSD FILECORE NTFS unused
4.4LFS HFS RAID Version 6
ADOS HPFS swap Version 7
Apple UFS ISO9660 System V vinum
boot jfs SysVBFS
ccd Linux Ext2 UDF
Filesystem type [?] [unused]: 4.2BSD
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]:
Partition size ('$' for all remaining) [0c, 0s, 0M]: $
a: 2040832 0 4.2BSD 0 0 0 # (Cyl. 0 - 996*)
partition> d
Filesystem type [?] [unused]:
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]:
Partition size ('$' for all remaining) [996.5c, 2040832s, 996.5M]:
partition> W
Label disk [n]? y
disklabel: partitions a and e overlap
Label written
partition> q
Unknown command q
partition> Q

Die Partitionen stehen nun fest. Es fehlt noch das Dateisystem auf der Partition sd0e, das mit newfs angelegt wird:

# newfs /dev/sd0e

Allerdings kann die Partition noch nicht gebootet werden. Die folgenden Schritte sind abschließend notwendig:

# mount /dev/sd0e /mnt
# cp /usr/mdec/boot /mnt
# installboot -v -o timeout=5 /dev/rsd0e /usr/mdec/bootxx_ffsv1
File system: /dev/rsd0e
Primary bootstrap: /usr/mdec/bootxx_ffsv1
Ignoring MBR with invalid magic in sector 0 of `/dev/rsd0e'
Preserving 51 (0x33) bytes of the BPB
Boot options: timeout 5, flags 0, speed 9600, ioaddr 0, console pc

2.Die Installations-Kernel und -Sets auf den USB-Stick kopieren

Der USB-Stick ist nun bootfähig, aber ihm fehlt noch das, was eigentlich gebootet werden soll: das Betriebssystem oder wie in userem Fall das NetBSD-Installations-System mit dem Installations-Kernel. Das spätere Betriebssystem steckt in den Installations-Sets, die während der Installation entpackt und auf die Festplatte kopiert werden. Auch diese Installations-Sets werden auf dem USB-Stick benötigt.

Am einfachsten ist es, die komplette Installations-CD herunterzuladen, die als CD-Image auf vielen FTP-Servern liegt:

$ cd /home/sommteck/
$ ftp -a ftp://ftp3.de.netbsd.org/pub/NetBSD/NetBSD-4.0/iso/i386cd-4.0.iso

Um die benötigten Dateien aus dem CD-Image auf den USB-Stick kopiern zu können, muss die Image-Datei ins Dateisystem eingebunden werden:

$ su
# mkdir /image
# vnconfig -c vnd0 /home/sommteck/i386cd-4.0.iso
# mount -t cd9660 /dev/vnd0d /image/

Der Installations-Kernel und die Sets werden dann auf den gemounteten USB-Stick kopiert:

# cp /image/i386/binary/kernel/netbsd-INSTALL.gz /mnt/netbsd.gz
# cp -R /image/i386/binary/sets/ /mnt/sets/

Danach ist der USB-Stick fertig eingerichtet. Nach dem Runterfahren des Computers, muss der USB-Stick im BIOS als das zu bootende Laufwerk eingestellt werden. NetBSD sollte im Anschluss daran einwandfrei booten und mit einem blauen Installations-Menü grüssen.

3.Anmerkungen zur Installation

Eigentlich läuft die Installation nun problemlos und nach dem vertrauten Muster ab. Der folgende Schritt könnte jedoch Probleme bereiten:

Ihre Festplatte ist nun bereit für die Installation der Kernel- und
Distributionspakete. [...]

Hier muss das richtige Medium ausgewählt werden, und zwar:

>f: Ungemountetes Dateisystem

Mit RETURN bestätigen und es erscheint der folgende Screen:

Geben Sie das noch nicht gemountete lokale Gerät und dessen entsprechendes
Verzeichnis an, im dem die Distribution zu finden ist. (Das Verzeichnis muss
.tgz Dateien enthalten)

Hier sind die Optionen wie folgt zu setzen (aber dies ist nur ein Beispiel, bitte gegebenenfalls anpassen!!):

a: Gerät sd0e
b: Dateisystem ffs
c: Basispfad
d: Verzeichnis /sets

Ersterfahrungen mit NetBSD

Wie angekündigt will ich mal meine Erfahrungen mit NetBSD schildern. Ausgangsziel war ja, ein wenig Unix zu lernen und dabei ein System zum Produktivem Einsatz mit den allgemein bekannten und für die Textkonsole verfügbaren Werkzeugen aufzusetzen. Ganz gleich ob eine graphischen Oberfläche zum späteren Zeitpunkt noch zum Einsatz kommen soll oder nicht.
Doch warum aber jetzt unbedingt NetBSD anstatt eines Free- oder OpenBSD, welche sich einer größeren Beliebtheit erfreuen als das von mir gewählte. Die Nachteile von FreeBSD für mich waren zum einem, dass FreeBSD zur Installation und weiteren Konfiguration auf das Programm sysinstall setzt, welches einem dazu verleitet, nicht die entsprechenden Werkzeuge auf der Shell kennen und nutzen zu lernen. Auch wenn diese einem weiterhin zur Verfügung stehen. Dies würde nämlich auch wie bei einer (z.B. openSuse) den Effekt des Lernens nehmen, sodass man keine Chance bekommt, das Betriebssystem wirklich kennen zu lernen. Zum anderen ist FreeBSD ein System, dessen Anspruch auf den Einsatz im harten Produktivbereich liegt. Dies bedeutet, dass es selbst nach meiner subjektiven Beobachtung nach, schon bei der kompletten Basisinstallation sehr umfangreich ist und zusätzlich auf ca 18.000 Programme von Drittanbieter für allerlei Einsatzzwecke zurückgreifen kann. Und das eigentlich zurecht. Der Vorteil von NetBSD gegenüber OpenBSD ist, das es bei einer Erstinstallation auf einen Rechner weit aus einfacher und intuitiver anzuwenden ist. Außerdem gibt es bei NetBSD mit ca 7300 Binärpaketen zwar weniger als die Hälfte gegenüber FreeBSD, aber es sind immer noch weitaus mehr als bei OpenBSD mit ca 4900 zur Zeit.
Und da man zum Unix lernen keine neue große Hardware braucht, habe ich mir quasi den entsprechenden Rechner größtenteils zusammen geschenkt. Einen herzlichen Dank soll dabei noch mal an alle beteiligten Spender gehen, die diesem Computer möglich gemacht haben. Er besitzt folgende Spezifikationen:

– AT-Baby Desktop Gehäuse
– Asus P5A-B (Super-Sockel 7)
– AMD K6 2 @400 MHz
– 256 MB SD-RAM
– 32 MB ATI-Rage XPert AGP-Grafikkarte
– UDMA-IDE PCI-Karte
– 2 x 80 GB IDE-HDD (UDMA-6)
– 1,44 MB FDD
– 10 Mb NE2000-Karte (ISA)
– 100 Mb Realtek 8139 (PCI)
– SB 32 PnP ISA-Soundkarte

Da die hier aufgelistete und somit verwendete Hardware schon um einiges veraltet ist, kann man davon ausgehen, dass alle verwendeten Komponenten auf anhieb von dem verwendeten Betriebssystem unterstützt wird.
Eine weiter sehr schöne Eigenschaft von NetBSD (und bei einigen anderen BSD’s ist dies sicherlich auch der Fall) ist, dass man nicht gleich ein komplettes ISO-Image herunterladen muss. Sondern es reicht, wenn man die 1,44 MB großen Floppy-Images nimmt, diese auf zwei leere Disketten kopiert und man so dass System gemütlich über das Internet installieren kann. Auf den Disketten ist nämlich ein ausreichend kleiner Kernel zum Booten des System und die nötigen Werkzeuge zur Installation des Systems platzsparend untergebracht. So kann man sich auf alle Fälle schon einmal einen CD-Rohling sparen, was ja darin begründet liegt, dass das BSD-Derivat schließlich seinen Fokus auf die Portierbarkeit zu alten Workstations gesetzt hat und einige – wenn nicht sogar viele – dieser Rechnerarchitekturen zur ihrer damaligen Zeit einfach aus nicht Vorhandensein noch keine Unterstützung für optische Medien erfuhren. Als ein echtes Novum von NetBSD unter allen den von mir ausprobierten Unix-ähnlichen Betriebssystemen ist das Installationsprogramm „Sysinst“ zur Erst- oder Neuinstallation auf einem Rechner. Es ist ähnlich wie beim Sysinstall von FreeBSD ein textorientertes Dialogprogramm, welches im Gegensatz aller BSD’s und auch NetBSD im allgemeinen noch zusätzlich in der französischen, polnischen, italienischen und deutschen Sprache übersetzt ist. Einen weiteren Vorteil bietet das Programm, dass es bei jedem ausgeführten Schritt zur Einrichtung des Computer den jeweiligen Befehl am oberen Bildschirmrand anzeigt. So kann man, wenn man denn sich fit genug fühlt, beim nächsten mal auf Sysinst verzichten und die Befehle direkt auf der zur alternative stehenden Shell direkt eingeben. Sysinst bietet wie Eingangs schon erwähnt, gegenüber von sysinstall bei FreeBSD nur sehr wenige Optionen zur Konfiguration des Rechners. Alsbald währen das in Reihenfolge nach dem Booten vom Installationsmedium:

Auswahl der sprachlichen Übersetzung während der Installation in sysinst
Wahl des Tastaturschema
Hauptmenü

Im Hauptmenü stehen folgende Aktionen zur Verfügung

NetBSD auf die Festplatte installieren
Aktualisieren einer bestehenden NetBSD Installation
Erneute Installation oder zusätzliche Pakete installieren
Computer neu starten
Extras
Installationssystem beenden

Will man also nun auf einen Computer NetBSD installieren, so wählt man im Hauptmenü den ersten Punkt, welcher folgende Optionen in Reihenfolge ausführt:

die Wahl des Installationsumfang
Auswahl des Festplattenlaufwerk (wenn mehrere im Rechner vorhanden)
Bestätigung bzw. Abänderung der Festplattengeometrie
die Wahl, ob die gesamte Festplatte verwendet werden soll oder die Partitionstabelle abgeändert werden soll
Entscheidung ob der Bootcode in den MBR kopiert werden soll
setzen der Partitinsgrößen
setzen eines Namen für die Festplatte
Auswahl der Bootblöcke
Auswahl des Installtionsmediums
Auswahl der Netzwerkschnittstelle
Art der Netzwerkverbindung bzw Konfiguration per DHCP ermitteln
Auswahl über die Verfügung von IPv6
Möglichkeit zur Änderung der Host-Adresse
die Möglichkeit zur Übernahme der vorkonfigurierten Netzwerkeinstellung in das installierte System
setzen der Zeitzone
Wahl über das Passwort-Verschlüsselungsverfahren
die Möglichkeit das Root-Passwort bereits zu setzen
Wahl der Standartshell

Nach der Installation wird man direkt auf die Root-Shell geworfen und man kann zum Beispiel (man sollte sogar) mit den Textkomandos einen Benutzer erstellen. Denn wie gesagt: Ab hier kann man zur weiteren Konfiguration des System nicht auf sysinst setzen und muss stattdessen mit dem eingebauten Werkzeugen und der dazugehörigem Dokumentation sich auseinandersetzen. Das hieß für mich unter anderem, um die zweite Festplatte im Computer dann mit dem hauseigenen Dateisystem nutzbar zu machen, muss man die doch nicht so intuitiven Befehle disklabel, fdisk und newfs verwenden. Dies war eben aber mit ein relevanter Punkt, warum meine Wahl eben nicht auf OpenBSD fiel. Nicht gerade leichte Kost! Insbesondere dann, wenn das dann Laufwerke sind, die bereits schon Partitionen mit wichtigen Daten enthalten.
Ein Blick in den Aufbau und die Struktur des Dateisystems zeigt einen echt großen Vorteil der BSD-Linie im allgemeinen zu Linux. Es ist schlicht und ergreifend viel strukturierter und übersichtlicher aufgebaut. Gerade der Blick in das /etc -Verzeichnis sagt einem, wo man denn überhaupt hin muss.
Neben grundlegenden Unterschieden der BSD’s gegenüber z.B. Linux gibt es auch einige feinere von NetBSD zu den anderen. So werden alle zusätzliche installierten Programme nicht wie meistens üblich in das Verzeichnis /usr/bin abgelegt, sondern es wird ein eigener Baum /usr/pkg im Wurzelverzeichnis angelegt. Unter /usr/pkg/bin findet man so die Binärdateien und deren globalen Config-Dateien entsprechend unter /usr/pkg/etc. Also quasi ein weiteres usr-Verzeichnis unter /usr. Auch sehr schön, will man auf den Rechner mittels der SSH zugreifen, muss man nicht erst den entsprechenden openssh-Server nachinstallieren, sonder man aktiviert diesen lediglich in der /etc/rc.conf durch hinzufügen der Zeile sshd=YES. Und überhaupt kann man sagen, dass der Distributionsgedanke, der sich mit Linux sehr stark entwickelte und weiter verbreitet wurde, unter den BSD’s viel konsequenter weitergeführt wird. Man installiert sich eben das komplette Basisset und hat dann eben auch alle wichtigen Werkzeuge wie den GNU C-Compiler sofort an Bord und kann sofort loslegen zu programmieren und kompilieren. Und das ohne, dass gleich mehrere Gigabyte an Festplattenplatz belegt sind und erst einmal vor der Entscheidung steht: „Welche Grafische Oberfläche nehme ich den nun?“. Das spiegelt sich auch in der Verfügbarkeit von Dokumentationen und Hilfen aus dritter Hand wieder. Während es unzählige Linux-Distributionen und nochmal so viel zum Quadrat an Büchern und Internetforen zu der jeweiligen gibt, gibt es lediglich inzwischen eben nur vier BSD-Varianten und ein paar ganz wenige Modifikationen und Fork’s für eine Spezialanwendung von diesen. Das heißt, die Menge an bisher verfügbaren Printmedien und Howto’s im Internet kann man zwar an beiden Händen abzählen, sind aber absolut inhaltlich auf den Punkt und somit brauchbar. Auf NetBSD herunter gebrochen kann man beispielsweise sagen: Kommt man in diesem nicht weiter, so kann man hier die Online-Dokumentation von OpenBSD zu Rate ziehen (OpenBSD ist schließlich eine Abspaltung von NetBSD).
NetBSD hat aber auch einige Schwächen. So kann man zum Beispiel das System nicht über mehrere Festplattenlaufwerke verteilt installieren. Desweiteren ist es mit dem ifconfig Befehl nicht möglich, die MAC-Adresse des Netzwerkinterface zu ändern. Leider ist es mir auch bisher nicht gelungen, es unter VirtualBox als eine virtuelle Maschine zu installieren.

Hiermit seien somit noch ein paar Links genannt:

Offizielles Online-Handbuch von NetBSD

Die deutsche Ausgabe des FreeBSD Online-Handbuch

Die deutsche Ausgabe des OpenBSD Online-Handbuch

Wiki von bsdgroup.de

NetBSD – Einführung von Dirk Lindloff

Wie bitte geht’s nach NetBSD?

Wie in schon in einem vorherigen Blogeintrag erwähnt, werde ich mal darüber berichten, wie ich auf NetBSD aufmerksam wurde und anschließend etwas über die Erfahrungen damit erzählen. Dazu aber eine kleine Vorgeschichte:

Vor fast zwei Jahren – zu der Zeit spielte ich schon ein wenig mit FreeBSD herum, an dem ich noch keine Verbindung mit dem Internet realisieren konnte – keimte auch bei mir so langsam der Gedanke auf, mir ein gebrauchtes Notebook zuzulegen, mit welchem ich, während ich an meinem eigentlichen Computer ohne einer Verbindung zu Internet am herumprobieren bin, die Dokumentation im WWW nachschlagen kann. Obwohl es in meiner regionalen Umgebung einige Unternehmen gibt, die sich darauf spezialisiert haben, gebrauchte Computer z.B aus Altersgründen oder Konkursmassen aufzukaufen, um diese wieder ein wenig auf zu bereiten und dann mit neuer Garantie und einer gültigen Windows XP Lizenz günstig weiter zu verkaufen, konnte ich nichts passendes für meine Bedürfnisse finden. Und das, obwohl es sich zum Teil um echt qualitativ gute Geräte aus der IBM Thinkpad-Reihe handelte, die eben für meine Ansprüche noch genügend Prozessorleistung mit gebracht hätten. Aber ich hätte dann immer noch wieder etwas austauschen oder erweitern müssen, um beispielsweise auch CD’s brennen zu können oder eine etwas größere Festplatten einbauen müssen, um etwas mehr an Speicherkapazität in Anspruch nehmen zu können. Ich habe dann so auch erst einmal in weiser Voraussicht bis zum Linux-Tag 2007 im Frühjahr gewartet, wo es ein paar interessante Vorträge von der openSuse Community zum Thema Hardwareunterstützung unter Linux bei mobilen Computer gab. Das Fazit daraus ergab nämlich, dass zum einem die Treiberunterstüzung für den Suspend to RAM-Modus hinsichtlich bei Linux auf Laptops abhängig von der verbauten Hardware ist – und das selbst bei unterschiedlichen Modellen und Revisionen eines Herstellers. Zum anderen ist es, egal welchen Stromsparmodus man benutzt, bei Laptops mit einem installierten Linux langsamer bei diesen Prozessen, als welche mit einem installierten Windows, wo die Hersteller immer eigene individuell angepasste Gerätetreiber auf einer CD-ROM beilegen. Laptops aus dem Hause Apple hingegen schnitten bei dem Vergleich am schnellsten ab, da hier ja sowohl die Hardware als auch das Betriebssystem aus dem selben Hause stammen. So konnte ich meine Auswahl für meine Ansprüche schon mal auf Apple oder IBM reduzieren. Und diese Ansprüchen hießen: Laptop mit einem Unix-ähnlichen Betriebssystem um weiter Unix zu lernen und flexible Mobilität.
Nun lange Rede, kurzer Sinn! Während ich also nun zwischen diesen beiden Auswahlmöglichkeiten hin und her sinnierte, machte mich ein Bekannter aus meinem anonymen Techniktreff darauf Aufmerksam, das der Versuch, selbst ein IBM Thinkpad mit Linux als Betriebssystem als ein sehr mobiles und flexibles Notebook zu verbiegen und trotzdem damit Unix zu lernen, absoluter Quatsch ist. Die einzige Lösung, diesem Ansprüchen zu genügen ist: Als Laptop sich ein Apple-Gerät zu kaufen, die wie ich schon in dem Vortrag der openSuse-Leute hörte, allein schon wegen der Suspend to …-Zeiten sehr schnell und flexible sind, aber mit der Architektur des Mac OS X Betriebssystems einen unixen Unterbau haben, wo man trotzdem ein wenig herumspielen und probieren kann. – Dieser Punkt brachte mich übrigens zu Apple. – Und als zweites sich einen alten Rechner nehmen, worauf man so richtig dreckig Unix lernen kann. Und das habe ich parallel auch mal in Angriff genommen.
Weil ich hier noch meinen guten alten 486’er Computer aus meiner Jugend herumstehen habe, dachte ich mir, den könnte man sehr gut dafür nehmen. Nur, obwohl er dafür noch genug Prozessorleistung – mit für ihn in seiner Leistungsklasse außergewöhnlichen 32 MB Arbeitsspeicher – gehabt hätte, war hier schon das Problem, dass er mit seiner insgesamt auf zwei Festplatten verteilten Speicherkapazität von 275 Megabyte dann doch zu unter dimensioniert ist und es inzwischen auch unmöglich ist, entsprechend kompatible Festplatten mit ein bisschen mehr Speicherkapazität aus verlässlicher Quelle zu besorgen. Außerdem war er dann doch zu sehr in die Jahre gekommen, was sich darin äußert, das unter anderem der CMOS-Puffer leer ist und der Multi-I/O-Controller am IDE Connector schon einen Wackelkontakt hat. Hier kam mir dann aber zu Gute, dass ein Arbeitskollege seinen mittlerweile zehn Jahre alten Computer los werden wollte, und so ich geschenkt zu einem etwas Leistungsfähigeren Rechner kam. Aber bei dem Versuch, den Arbeitsspeicher etwas auf zu stocken habe ich dann doch wohl das Mainboard zerstört. Zum Glück konnte mir jemand von der hiesigen Linux-Usergroup sein ausrangiertes AT-Baby Board überlassen, dass hervorragend mit einer AMD K6 400 MHz CPU und 256 MB SD-RAM bestückt ist. Zum Schluss noch meine alte 15 GB Seagate Festplatte aus einem etwas älterem Gebrauchtrechner hinein gestöpselt, und schon war ein brauchbares Komplettsystem zum Unix lernen zusammen gestellt.
Nachdem also nun die Hardware stand, stand nun die Frage im Raum welches Betriebssystem eignet sich für solch ein Vorhaben als bestens. Linux schied hier schon mal von Anbeginn an für mich aus. Es gibt zwar neben den populären leicht zu bedienenden Distributionen auch welche wo man selber viel Hand anlegen muss, aber Linux hat mit seinem Distributionsschema das Problem, dass es zwischen den von den Distributoren zusammen gestellten Systemen massive Unterschiede in Dateistruktur oder den Startscripten geben kann. Von daher viel meine Wahl eigentlich auf Minix. Minix wurde von Andrew Tannenbaum als Lehrsystem für Informatikstudenten Ende der achtziger Jahre entwickelt und entwickelte sich als Echtzeitbetriebssystem bis heute fort. Meine Probeinstallationen auf einer virtuellen Maschine ergab aber, das es mindestens 256 MB RAM benötigte, um überhaupt eine grafische Oberfläche bieten zu können, was schon irgendwie kurios für ein Betriebssystem ist, welches sich auf die Fahnen schreibt, mit minimalsten Ressourcen lauffähig zu sein. Außerdem bietet es nur eine kleine dreistellige Auswahl an binär vorkompilierten Programme an, wodurch man gezwungen ist, bei den Einsatz von weiteren zusätzlichen Programme den Quellcode der jeweiligen Softwareprojekten direkt auf das Betriebssystem anzupassen. Dies ist zwar sicherlich die Intention des Minix-Projekt, dass Programmierer und Studenten das System erweitern und somit mit entwickeln, hätte aber meine Fähigkeiten bis auf weiteres gesprengt. So blieb als wirkliche Alternative ein Betriebssystem aus der BSD-Reihe. Mit FreeBSD hatte ich schließlich mal sowohl auf einen virtuellen Computer als auch auf einer nativen Installation meine wirklich intensiven spielerischen Erfahrungen auf der Kommandozeile gesammelt. FreeBSD hat aber immer noch das Problem, dass es für die ausgesuchte Hardware durch seine stetig gewachsene Softwareauswahl recht umfangreich ist und damit eigentlich für harte produktive Serveranwendungen spezialisiert ist und zum anderen durch sein Sysinstall ein sehr mächtiges, Dialog gesteuertes und dennoch einfach zu bedienendes Administrationswerkzeug bietet, welches einem sehr schnell davon ableiten kann, die einzelnen Befehle auf der Kommandozeile auszuführen. Durch ein wenig schmökern in diversen Internet-Lexika s bin ich nun letztendlich für meine Unix-Lernerfahrungen zu NetBSD gekommen, dass laut einer Aussage in der deutschen Wikipedia ideal für Hobbyisten, also jemanden wie mich, gemacht ist. Schwerpunkt von NetBSD liegt auf der Portabilität durch sauber dokumentierten SourceCode, was dazu führt, dass es sowohl für viele „alte“ Computer-Architekturen als auch moderne Desktop- und Server- oder Embedded-Hardware verfügbar ist. Damit zählt es zu dem mit am weitesten portierten Betriebssystem.

Einstieg in FreeBSD und Ports

Seit langer Zeit setze ich mich nun mal wieder ein wenig mit FreeBSD auseinander. Ist es fast schon zwei Jahre her, das ich zum ersten Mal von diesem Unix-ähnlichen Betriebssystemen der BSD-Linie hörte. Damals hatte ich mir zum ausprobieren mal die CD ISO-Images aus dem Internet herunter geladen und unter Windows als VM-Ware installiert. Da ich zu diesem Zeitpunkt unter Windows als natives Host-Betriebssystem keine Verbindung zum Internet mehr genutzt habe, habe ich mich also lediglich auf die auf den CD’s enthaltener Software beschränkt. Es war mir aber zu meinem großen Erstaunen möglich, zu dem Zeitpunkt als Linux-Neuling ein noch mehr Textorientiertes Betriebssystem von Grund auf zu installieren und mit Gnome mal eine grafische Oberfläche ein zu richten. Mir konnte zu dieser Zeit mit Grund noch nicht bewusst sein, welche Wirkung Befehle wie make install clean auf Dateien im /usr/ports/ Unterverzeichnis haben.
Vor ungefähr einem Jahr habe ich dann mal ein Basissystem von FreeBSD ohne den grafischen Werkzeugen nativ auf meinem Computer installiert, um mal mit Hilfe einer Anleitung einen eigenen an die Maschine angepassten Kernel zu kompilieren. Aufgabe war es, alle unnötigen Netzwerk- und SCSI-Treiber aus der Kernelkonfiguration aus zu schließen, damit der Kernel Ressourcenschonender gebootet werden kann. Auch dieser Installation stand keine Verbindung zur Verfügung, da ich mich zu dieser immer noch über PPPoE ins Internet einwählte. Seit dem ruhte das Unternehmen FreeBSD in meiner PC-Hobby-Kiste, obwohl ich spätestens bei der Kernelkompiliererei feststellte, dass es sich mit BSD-Linie unter den Freien Unixen, um Betriebssysteme handelt, die das Prinzip der Distribution bewusst konsequenter weiterführen, in dem sie schon während der vollständigen Basisinstallation alle nötigen Entwicklungswerkzeuge mitliefern, damit man direkt im Anschluss seine Programme aus dem Quellcode in Binärform übersetzen kann.
Vor einigen Tagen habe ich nun die Aktuelle Version 7.0 von FreeBSD aus dem Netz heruntergeladen und auf einem kleinen HP-Compaq Büro-Desktop mit einer 2,8 GHz Pentium 4 CPU installiert. Bisweilen konnte ich schon viele weitere Grundkenntnis im Umgang, Einrichtung und Verwaltung eines BSD-System auf der Textkonsole mit Hilfe von NetBSD erlangen. Ich glaube, über die Erfahrungen mit NetBSD werde ich sicherlich noch in einem extra Artikel berichten. Eine davon war das kompilieren von einem weiteren angepassten Kernel und dem Übersetzen von Programmen aus einem Source-Verzeichnis.
Was mir aber bisher als eine Art kleine Hexerei vor kam, war der Umgang mit den Ports unter FreeBSD. Der Erfahrung mit NetBSD nach, ist es schließlich ein Verzeichnis von Paketquellen, welche immer die jeweils nach Version aktuell gepatchten Quellarchive von den jeweiligen Projektseiten herunterlädt und dann in Binärform übersetzt und installiert. Unter NetBSD heißt das Ganze pkgsrc. Das Ports-System unter FreeBSD hat allerdings die Möglichkeit, dass man es über zusätzliche aus der Ports-Kollektion stammenden Zusatz- und Hilfswerkzeugen besser und komfortabler verwalten kann.
Will man also nach meinem bisherigen Kenntnisstand sich ein FreeBSD frisch installieren und aus aktuellen Quellen schöpfen, geht man wie folgt vor.

1. Das besorgen einer CD oder eines ISO-Images des aktuellen Release
2. Bei der Installation im Punkt Installationsumfang Alles wählen. Wenn man den Rechner nur als Server nutzen möchte, kann man aber den Teil der X enthält guten Gewissens weglassen.
3. Bei der der Wahl des Installationsmedium am Besten einen FTP oder HTTP-Mirror wählen. Ich beschränke mich meistens auf Netzinstallationen übers Internet. Desto weniger CD’s müssen gebrannt werden.
4. Auf die Frage des Installationsdialog, ob man denn die Ports-Sammlung installieren möchte, kann man Ja antworten. Darauf wird aber noch eingegangen.
5. Auf die Frage des Dialogs, ob man denn schon Binärprogramme mit installieren möchte, wählt man Ja, braucht aber keine in der Auswahl markieren. Es werden dennoch ein paar Bibliotheken installiert.
6. Nach dem ersten Reboot zusehen, dass man su wird.
7. Das Hilfswerkzeug Portsnap zur Verwaltung der Ports mit pkg_add -r portsnap installieren.
8. Mit portsnap fetch den komprimierten Snapshot nach /var/db/portsnap herunterladen.
9. Mit portsnap extract wird das ganze in den Ordner /usr/ports entpackt und mit portsnap update aktualisiert.

Danch kann man nun wie wild in die Ports gehen und mit make install clean weiter Programme sich frisch kompilieren und installieren. Unter /usr/ports/ports-mgmt/ befinden sich einige Werkzeuge um sein Port-Verzeichnis aktuell zu halten. Zum Beispiel mit portmanager -u. Will man sein System, auf dem schon eine Menge Programme installiert sind (unter Umständen mit X) mit portsnap einen neuen Baum installieren und aktualisieren, so wird dies eine recht lange Zeit in Anspruch nehmen, da alle Pakete ja erst wieder neu kompiliert werden.
In diesem Zusammenhang möchte ich mal auf das von FreeBSD eigene Handbuch verweisen, dass sowohl für den Einsteiger – der schon einige Grundkenntnisse und den Umgang mit der Konsole mitbringen sollte – als auch für den Profi geeignet ist. Denn es vermittelt einem in Form einer Schritt für Schritt Anleitung die Anwendung des Betriebssystem. Geht dabei aber auf die technischen Details verständlich ein.