Erfahrungsbericht Linux2BSD
----------------------------------------
Da ich mir gerne das ZFS-Filesystem einmal anschauen wollte, ZFS aber unter Linux nur über FUSE geht, dachte ich mir, dass ich mal testweise FreeBSD installiere. FreeBSD zu testen steht sowieso seit etwa 5 Jahren auf meiner ToDo-Liste und diese Woche hab ich nun endlich mal Zeit.
Ich schau mir also meine Festplatten-Partitionen an und wähle eine Debian-Lenny-Testinstallation (/dev/sda6) aus, die ich nicht mehr brauche und mit BSD überschreiben kann. Ich besorg mir also die ISO-Images von nem BSD-Mirror und boote die Installations-CD. Mein USB-Keyboard wird dabei leider nicht erkannt, so dass ich zuerst eine PS2-Tatstatur suchen muss. Hmm.
Die erste Überraschung finde ich beim Partitionieren der Platten. Partitionen heißen bei FreeBSD Slices und nicht Partition. Naja, kann man wohl mit zurecht kommen. Ich suche also /dev/sda6, um die Partition für die Installation vorzubereiten und versuche die BSD-Bennennung der Platten zu durchschauen. Ich hätte sowas wie /dev/ad10s6 erwartet, aber kann nichts finden. Alle logischen Partitionen werden komischerweise nicht angezeigt. Ich boote also Linux, setze den Typ von /dev/sda6 auf FreeBSD und starte die Installation erneut. Nichts -- auch die Partition vom Typ FreeBSD taucht nirgends auf. Nach Rücksprache mit dem FreeBSD-Handbuch ergibt sich, dass FreeBSD nur in primäre Partitionen installiert werden kann. *arg*
Also Linux gebootet und /dev/sdb2 (eine Linux-Data-Partition auf der nur Müll liegt), als FreeBSD markiert und den FreeBSD-Installer zum dritten Mal gestartet. Die FreeBSD-Partition wird dann im Partitionierungsscreen angezeigt und ich suche vergebens eine Möglichkeit, diese Partition auszuwählen ("Wie zum Teufel sag ich dem Installer, dass er diese Partition zum Installieren auswählen soll??"). Ein erneutes Durchlesen des Handbuchs verrät mir, dass ich da gar nichts machen muss, sondern das alleinige Vorhandensein einer FreeBSD-Partition reicht aus. Ich lasse meine Frage, was denn ist, wenn ich mehrere FreeBSD-Partitionen habe, unbeantwortet und fahre mit der Installation fort.
Nach der eigentlichen Installation, die ohne irgendwelche Schwierigkeiten durchgelaufen ist, werde ich gefragt, ob ich den Bootloader in den MBR schreiben will. Das will ich aber nicht, da dort schon ein grub liegt, mit dem ich mein Linux boote. Ich suche also nach einer Möglichkeit, dem BSD-Bootmanager zu sagen, dass er sich nach /dev/ad12s2 installieren soll, damit ich ihn über grub starten kann. Da das Handbuch bisher eigentlich hilfreich war, hab ich voller Hoffnung die relevanten Informationen dort zu finden, nochmals da rein geschaut. Diesmal aber leider ohne Erfolg. Mir fällt nichts besseres ein, als die Installation zu beenden und den Rechner neu zu booten. Nach dem Ausählen von FreeBSD im LiLo-Bootmenü kommt ein grub-Prompt. WTF? Da lag wohl glücklicherweise auf /dev/ad12s2 ein vergessener grub und ich kann FreeBSD zumindest booten:
Es funktioniert und ich logge mich zum ersten Mal in mein FreeBSD ein. Das Passwort konnte ich ja schon während sysinstall vergeben.
Ich will erst einmal das wichtigste konfigurieren:
Ach ja, da war doch was... Netzwerkinterfaces heißen bei BSD ja nicht ethX. Aber wie heißt es denn dann?? Hmm, was sagt denn dmesg?
pci3: <network, ethernet> at device 0.0 (no driver attached)
Nicht sehr aussagekräftig. Ich hatte mir da eigentlich einen Device-Namen erhofft.
Ich überlege angestrengt, was ich überhaupt für eine Netzwerkkarte habe, um bei google nachschauen zu könnnen:
Hmm, lspci scheint es unter BSD wohl nicht zu geben.
Auch nichts... Gibt's kein /proc unter BSD?
Nächster Versuch:
Nach der harten Methode und einem "man pciconf", guch ich mir nun meine PCI-Devices an:
und finde meine Netzwerkkarte:
Laut google gibt es von marvell sogar einen BSD-Treiber, aber wie kriege ich den jetzt heruntergeladen ohne Netzwerk?? Ich überlege zwischen Floppy, USB-Stick und CD und entscheide mich waghalsig für den USB-Stick. Also auf dem Debian-Laptop die Treiber heruntergeladen und auf den USB-Stick gepackt und beide Daumen gedrückt, als ich den in das BSD stecke.
Es hagelt Fehlermeldungen:
und ich sehe mich schon zum Schrank gehen, auf der Suche nach einer 5 Jahre alten Floppy, die noch funktioniert. Aber dann:
Huh? Sollte das mit dem USB-Stick doch noch funktioniert haben? Ich schau nach -- und wenn die Namensbennung konsistent ist, dann sollte es ja eigentlich ein /dev/da0s1 geben?
Prima!
*ARG*
Nochmal nachschauen, ob wirklich die erste Partition -- äh ... das erste Slice -- die FAT-Partition ist:
*ARG*
Die 6 war doch DOS? Sollte also passen.
Aha! Unter BSD gibt es kein vfat und auch kein msdos, sondern ein msdosfs.
OK. Das klappt tatsächlich. Ich bin begeistert.
Laut einem Eintrag auf bsdforen.de muss ich nun das Treiber-Paket über pkg_add installieren:
Dann solle man wohl "irgendwo auf der Platte" (!) ein Kernelmodul finden. Toll!
Bevor ich ein "find / -name '*ko'" laufen lassen, gucke ich nach, ob man pkg_add nicht irgendwie gesprächiger machen kann, um zu erfahren, wo die Sachen hingepackt werden. Nach "man pkg_add" sehe ich, dass es da einen -v-Switch gibt:
Toll, der Treiber ist bereits installiert und ich hätte mir also die ganze Fummelei mit dem USB-Stick sparen können. *sig*
Dann soll ich laut Forenbeitrag wohl eingeben:
Merke! modprobe/insmod == kldload
Auf einmal erscheint auf der Konsole:
Jippie!
Ich will die Karte mit DHCP konfigurieren. Aber wie heißt die jetzt? Wenn mein Modul myk heißt, würde ich die Karten als Entwickler wohl auch myk nennen. Ich versuche also mutig ein:
Naja, immerhin weiß ich jetzt, dass das Interface wohl wirklich myk0 heißt.
Unter Linux würde ich jetzt mit mii-tool nachschauen, ob das Autosensing funktioniert. Aber ich gehe fest davon aus, dass es mii-tool unter BSD nicht gibt. Versuchen wir's mal manuell:
Jippie!
So, jetzt wo das Netzwerk funktioniert, werd ich mich mal an xorg versuchen. Ich hab zwar noch keinen Plan, wie man Software nachinstallieren kann, aber ich schätze, das wird auch im FreeBSD-Handbuch stehen. Ich hoffe nur, es ist nicht viel schwieriger als ein "aptitude install xserver-xorg"...
Danach werde ich die ToDo-Liste wohl abarbeiten und mir mal die jails und pf anschauen. Und wenn ich dann noch Lust hab, komm ich mal auf ZFS zurück. Denn das konnte ich bei der Installation leider nicht als default-FS angeben. :-)
----------------------------------------
Da ich mir gerne das ZFS-Filesystem einmal anschauen wollte, ZFS aber unter Linux nur über FUSE geht, dachte ich mir, dass ich mal testweise FreeBSD installiere. FreeBSD zu testen steht sowieso seit etwa 5 Jahren auf meiner ToDo-Liste und diese Woche hab ich nun endlich mal Zeit.
Ich schau mir also meine Festplatten-Partitionen an und wähle eine Debian-Lenny-Testinstallation (/dev/sda6) aus, die ich nicht mehr brauche und mit BSD überschreiben kann. Ich besorg mir also die ISO-Images von nem BSD-Mirror und boote die Installations-CD. Mein USB-Keyboard wird dabei leider nicht erkannt, so dass ich zuerst eine PS2-Tatstatur suchen muss. Hmm.
Die erste Überraschung finde ich beim Partitionieren der Platten. Partitionen heißen bei FreeBSD Slices und nicht Partition. Naja, kann man wohl mit zurecht kommen. Ich suche also /dev/sda6, um die Partition für die Installation vorzubereiten und versuche die BSD-Bennennung der Platten zu durchschauen. Ich hätte sowas wie /dev/ad10s6 erwartet, aber kann nichts finden. Alle logischen Partitionen werden komischerweise nicht angezeigt. Ich boote also Linux, setze den Typ von /dev/sda6 auf FreeBSD und starte die Installation erneut. Nichts -- auch die Partition vom Typ FreeBSD taucht nirgends auf. Nach Rücksprache mit dem FreeBSD-Handbuch ergibt sich, dass FreeBSD nur in primäre Partitionen installiert werden kann. *arg*
Also Linux gebootet und /dev/sdb2 (eine Linux-Data-Partition auf der nur Müll liegt), als FreeBSD markiert und den FreeBSD-Installer zum dritten Mal gestartet. Die FreeBSD-Partition wird dann im Partitionierungsscreen angezeigt und ich suche vergebens eine Möglichkeit, diese Partition auszuwählen ("Wie zum Teufel sag ich dem Installer, dass er diese Partition zum Installieren auswählen soll??"). Ein erneutes Durchlesen des Handbuchs verrät mir, dass ich da gar nichts machen muss, sondern das alleinige Vorhandensein einer FreeBSD-Partition reicht aus. Ich lasse meine Frage, was denn ist, wenn ich mehrere FreeBSD-Partitionen habe, unbeantwortet und fahre mit der Installation fort.
Nach der eigentlichen Installation, die ohne irgendwelche Schwierigkeiten durchgelaufen ist, werde ich gefragt, ob ich den Bootloader in den MBR schreiben will. Das will ich aber nicht, da dort schon ein grub liegt, mit dem ich mein Linux boote. Ich suche also nach einer Möglichkeit, dem BSD-Bootmanager zu sagen, dass er sich nach /dev/ad12s2 installieren soll, damit ich ihn über grub starten kann. Da das Handbuch bisher eigentlich hilfreich war, hab ich voller Hoffnung die relevanten Informationen dort zu finden, nochmals da rein geschaut. Diesmal aber leider ohne Erfolg. Mir fällt nichts besseres ein, als die Installation zu beenden und den Rechner neu zu booten. Nach dem Ausählen von FreeBSD im LiLo-Bootmenü kommt ein grub-Prompt. WTF? Da lag wohl glücklicherweise auf /dev/ad12s2 ein vergessener grub und ich kann FreeBSD zumindest booten:
Code:
root (hd1,1,a)
chainloader +1
boot
Es funktioniert und ich logge mich zum ersten Mal in mein FreeBSD ein. Das Passwort konnte ich ja schon während sysinstall vergeben.
Ich will erst einmal das wichtigste konfigurieren:
Code:
ifconfig eth0 192.168.1.4 netmask 255.255.255.0
-> interface eth0 does not exist
Ach ja, da war doch was... Netzwerkinterfaces heißen bei BSD ja nicht ethX. Aber wie heißt es denn dann?? Hmm, was sagt denn dmesg?
pci3: <network, ethernet> at device 0.0 (no driver attached)
Nicht sehr aussagekräftig. Ich hatte mir da eigentlich einen Device-Namen erhofft.
Ich überlege angestrengt, was ich überhaupt für eine Netzwerkkarte habe, um bei google nachschauen zu könnnen:
Code:
lspci -v
lspci: Command not found.
Code:
ls -al /proc/
Nächster Versuch:
Code:
ls -al /usr/sbin/*pci* /usr/bin/*pci*
Code:
pciconf -l -v
Code:
88E8053 Yukon PCI-E Gigabit Ethernet Controller (copper)
Laut google gibt es von marvell sogar einen BSD-Treiber, aber wie kriege ich den jetzt heruntergeladen ohne Netzwerk?? Ich überlege zwischen Floppy, USB-Stick und CD und entscheide mich waghalsig für den USB-Stick. Also auf dem Debian-Laptop die Treiber heruntergeladen und auf den USB-Stick gepackt und beide Daumen gedrückt, als ich den in das BSD stecke.
Es hagelt Fehlermeldungen:
Code:
CAM Status: SCSI Status Error
Medium not present
Retries Exhausted
Code:
Opened Disk da0
Code:
ls -al /dev/da0s1
Code:
mkdir /mnt/foo && mount -t vfat /dev/da0s1 /mnt/foo
-> incorrect super block
*ARG*
Nochmal nachschauen, ob wirklich die erste Partition -- äh ... das erste Slice -- die FAT-Partition ist:
Code:
fdisk -l /dev/da0
illegal option -- l
Code:
man fdisk
fdisk /dev/da0
The data for partition 1 is:
sysid 6
Die 6 war doch DOS? Sollte also passen.
Code:
ls -al /sbin/mount*
Aha! Unter BSD gibt es kein vfat und auch kein msdos, sondern ein msdosfs.
Code:
mount -t msdosfs /dev/da0s1 /mnt/foo
OK. Das klappt tatsächlich. Ich bin begeistert.
Laut einem Eintrag auf bsdforen.de muss ich nun das Treiber-Paket über pkg_add installieren:
Code:
pkg_add mykbsd60x86-8.14.9.3.tgz
Dann solle man wohl "irgendwo auf der Platte" (!) ein Kernelmodul finden. Toll!
Bevor ich ein "find / -name '*ko'" laufen lassen, gucke ich nach, ob man pkg_add nicht irgendwie gesprächiger machen kann, um zu erfahren, wo die Sachen hingepackt werden. Nach "man pkg_add" sehe ich, dass es da einen -v-Switch gibt:
Code:
pkg_add -v mykbsd60x86-8.14.9.3.tgz
> package "mykbsd60x86-8.14.9.3.tgz" or its older version already installed
1 package addition(s) failed
Toll, der Treiber ist bereits installiert und ich hätte mir also die ganze Fummelei mit dem USB-Stick sparen können. *sig*
Dann soll ich laut Forenbeitrag wohl eingeben:
Code:
kldload if_myk.ko
Auf einmal erscheint auf der Konsole:
Code:
mykc0: <Generic Marvell Yukon 88E8053 based Ethernet Controller Ver. 8.14.9.3> port 0x7000-0x70ff mem 0xf7000000-0xf7003fff irq 16 at device 0.0 on pci3
Jippie!
Ich will die Karte mit DHCP konfigurieren. Aber wie heißt die jetzt? Wenn mein Modul myk heißt, würde ich die Karten als Entwickler wohl auch myk nennen. Ich versuche also mutig ein:
Code:
dhclient myk0
myk0: no link ............... giving up.
Unter Linux würde ich jetzt mit mii-tool nachschauen, ob das Autosensing funktioniert. Aber ich gehe fest davon aus, dass es mii-tool unter BSD nicht gibt. Versuchen wir's mal manuell:
Code:
ifconfig myk0 eth0 192.168.1.4
myk0: link up
Jippie!
So, jetzt wo das Netzwerk funktioniert, werd ich mich mal an xorg versuchen. Ich hab zwar noch keinen Plan, wie man Software nachinstallieren kann, aber ich schätze, das wird auch im FreeBSD-Handbuch stehen. Ich hoffe nur, es ist nicht viel schwieriger als ein "aptitude install xserver-xorg"...
Danach werde ich die ToDo-Liste wohl abarbeiten und mir mal die jails und pf anschauen. Und wenn ich dann noch Lust hab, komm ich mal auf ZFS zurück. Denn das konnte ich bei der Installation leider nicht als default-FS angeben. :-)
Viel Erfolg und Spass weiterhin mit FreeBSD!