Dämonische Tricks
The Answer Girl
Umzugshilfe
Allein auf sich gestellt in der neuen BSD-Welt herumzustochern mag spannend sein. Aber wer sich häuslich auf dem neuen System einrichten will, muss nicht immer bei Null anfangen: Ob KDE oder Apache unter Linux oder FreeBSD laufen, spielt bei den Konfigurationsdateien keine Rolle. Da wäre es sinnvoll, die Linux-Partitionen zu mounten und die Dateien einfach zu kopieren. Doch roots Versuch, die erste Slice (/dev/ad0s1, unter Linux /dev/hda1 genannt) auf der ersten IDE-Master-Festplatte /dev/ad0 mit
# mount -t ext2fs /dev/ad0s1 /mnt ext2fs: vfsload(ext2fs): No such file or directory
als Ext2-Dateisystem unter /mnt zugänglich zu machen, scheitert. Das von mount zum Zwecke der Einbindung einer Ext2-Linux-Partition aufgerufene Tool /sbin/mount_ext2fs existiert – allein es fehlt die Ext2-Unterstützung des FreeBSD-Kernels. Da bleibt nichts anderes, als einen neuen Kernel zu bauen. Das ist insofern einfacher als unter Linux, als dass wir uns gar nicht erst durch ein Konfigurationstool mit tausenden Abfragen quälen müssen. Wir brauchen einfach nur die aktuelle (generische) Konfiguration nehmen und sie um den Wunsch nach Ext2-Support erweitern.
Doch zunächst brauchen wir frische Kernel-Sourcen, denn die wurden wie erwähnt beim Upgrade nicht aktualisiert. Wieder kommt sysinstall zum Einsatz; wir bewegen uns über Configure / Distributions / src bis zu dem Dialog, der nachfragt, welche Quelltexte wir installieren wollen. Die Auswahl fällt auf
[ ] sys /usr/src/sys (FreeBSD kernel)
und wir hangeln uns über zwei "X Exit"-Einträge zur nunmehr altbekannten Abfrage des Installationsmediums.
In /usr/src/sys/i386/conf finden wir die aktuelle Kernel-Konfiguration in der Datei GENERIC, die wir als Ausgangsbasis für unseren eigenen Kernel kopieren:
cd /usr/src/sys/i386/conf cp GENERIC WITH_EXT2
Das ebenfalls in diesem Verzeichnis enthaltene File namens LINT dokumentiert alle möglichen Optionen. Hier finden wir den Eintrag
options EXT2FS
den wir einfach in WITH_EXT2 übertragen, nicht ohne die Warnung vernommen zu haben, dass die Ext2-Unterstützung etwas instabil sei und man Ext2-Partitionen, um Datenverlusten vorzubeugen, nur lesbar ("read-only") mounten solle. Doch tapfer, wie wir sind, bereiten wir mit
/usr/sbin/config WITH_EXT2
alles für die Kompilation vor, um sie anschließend im Verzeichnis /usr/src/sys/compile/WITH_EXT2 anzustoßen:
cd ../../compile/WITH_EXT2 make depend make
Anhand von make -n install sehen wir, dass bei der abschließenden Installation mit make install der bisher verwendete /kernel nach /kernel.old kopiert wird. Das stört nicht weiter, denn da sowohl /kernel als auch /kernel.old bei uns nur Symlinks sind (siehe Kasten 1), überschreiben wir nichts, sondern können notfalls auch noch die beiden alten Kernel verwenden.
Mutig rebootet, meldet sich nunmehr der neue Standard-Kernel 4.7-RELEASE (WITH_EXT2) zu Dienst, doch der Mount-Versuch
# mount -t ext2 /dev/ad0s1 /mnt mount: exec mount_ext2 not found in /sbin, /usr/sbin: No such file or directory
schlägt fehl. Aber ja doch! Der Hilfsbefehl heißt mount_ext2fs, nicht mount_ext2 – daher lautet die "type"-Option anders als unter Linux ext2fs. Doch um nun doch ein wenig vorsichtig zu sein und die Linux-Partition read-only zu mounten, kommt wieder die altbekannte Option ro ins Spiel:
mount -t ext2fs -o ro /dev/ad0s1 /mnt
oder etwas kürzer mount_ext2fs -o ro /dev/ad0s1 /mnt erlaubt den lesenden Zugriff auf die Linux-Partition unterhalb von /mnt; umount /mnt entfernt sie wieder aus dem Dateibaum. Auch logische Partitionen (etwa ein unter Linux als /home eingehängtes Device /dev/hda6) lässt sich als /dev/ad0s6 unter /mnt einbinden. Die mühsam erstellte Linux-.bashrc aus dem Homeverzeichnis der dortigen Benutzerin pjung findet so durch Kopieren (cp /mnt/pjung/.bashrc /home/pjung/) und Berichtigung der Eigentumsverhältnisse mit chown eine neue Heimat auf deren FreeBSD-Account.
Glossar
Mirror
Ein Server, der die Daten eines anderen FTP- oder Web-Servers identisch vorhält ("spiegelt") und diesen somit entlastet.
Binär-Upgrade
Im Gegensatz zum flexibleren – und an dieser Stelle nicht besprochenen Source-Upgrade – beschäftigt man seine Maschine hierbei nicht mit dem Selbstkompilieren des gesamten Systems, sondern spielt vorgefertigte Binaries ein.
auskommentierten
Das Voranstellen eines Kommentarzeichens (häufig #) vor einen Eintrag in einer Datei. Dies bewirkt, dass das bearbeitende Programm den Rest der Zeile ignoriert.
History
Bessere Shells merken sich eine gewisse (konfigurierbare) Anzahl eingegebener Kommandos und lassen die Benutzerin diese mit den Pfeiltasten nach oben und unten durchsuchen und wiederverwerten.
Slice
Was unter FreeBSD Slice heißt, firmiert unter Linux als Festplatten-Partition. Anders als bei Linux muss eine BSD-Slice erst noch weiter in FreeBSD-Partitionen strukturiert werden, um darauf Daten zu verwalten (vgl. auch [1]).
Infos
[1] Patricia Jung: "Dämonische Installation", LinuxUser 08/2002, S. 68 ff.



