FreeBSD und Adaptec RAID

Für die Massenterminierung von PPPoX Verbindungen gab es die Empfehlung, MPD zu nehmen. Das braucht FreeBSD. Ich habe mir ehrlich gesagt wenig Gedanken gemacht, ob die geplante Hardware im Detail passen wird oder nicht. Das war ein Fehler. Man kann leider bei vielen Betriebssytemen (Mainstream oder nicht) immer wieder erleben, daß aktuelle oder alte Hardware nicht unterstützt wird.

Mit dem stabilen FreeBSD 9.0 bootet das System bis in den Installer, der dann keine Festplatten sieht. Der Adaptec RAID 6805 Controller wird nicht unterstützt. Dies ist ein besonders dummer Fall, weil es die Installation grundsätzlich verbietet. Hat man ein System erstmal auf der Platte, findet sich i.d.R. immer ein Weg, fremde Treiber auf- oder Sourcecodeanpassungen vorzunehmen. Aber ohne Platte?

Adaptec bietet einen Treiber für FreeBSD 8.2, der aber nicht auf den Installationsmedien liegt. In Foren finden sich verschiedene Vorschläge, den Treiber auf anderen Medien bereitzustellen, sei es per FreeBSD formatiertem USB (hab ich nicht) oder FAT formatiertem USB mit zwei CDs (ich hab nur ein Laufwerk und das auch nur via BMC).

Das Installmedium

Was liegt näher, als sich selbst ein individuelles Installationmedium zu bauen? Linux Kenntnisse sind ja glücklicherweise vorhanden:

$ wget ftp://ftpv6.plusline.net/pub/FreeBSD/releases/amd64/ISO-IMAGES/8.3/FreeBSD-8.3-RELEASE-amd64-disc1.iso
$ mkdir install-cd
# mount -o loop -t iso9660 FreeBSD-8.3-RELEASE-amd64-disc1.iso install-cd
$ tar -C install-cd -cf - . | (mkdir cd.adaptec; tar -C cd.adaptec -xvpf -)

Eine Kopie des Images steht nun zur Verfügung. Die muß nun modifiziert werden.

$ wget http://download.adaptec.com/raid/aac/unix/aacraid_freebsd_b18668.tgz
$ tar -xzf aacraid_freebsd_b18668.tgz freebsd8/
$ cp -a freebsd8/aacu64.ko cd.adaptec/boot/kernel/
$ chmod u+w cd.adaptec/boot/defaults/loader.conf
$ vi cd.adaptec/boot/defaults/loader.conf 

Damit ist der Treiber an der richtigen Stelle und ja, es funktioniert auch mit FreeBSD 8.3. In der loader.conf muß nun der Treiber auch aktiviert werden. Der Editor ist schon offen, fehlt also noch der Patch.

--- install-cd/boot/defaults/loader.conf        2011-02-17 03:19:19.000000000 +0100
+++ cd.adaptec/boot/defaults/loader.conf        2012-09-17 14:22:48.000000000 +0200
@@ -455,6 +455,7 @@
 ###  Other modules  ##########################################
 ##############################################################

+aacu64_load="YES"              # Adaptec RAID
 aio_load="NO"                  # Asynchronous I/O
 bktr_load="NO"                 # Brooktree Bt848/Bt878 TV/Video Capture Card
 ispfw_load="NO"                        # Qlogic ISP Firmware

Nun noch das bootfähige Medium bauen.

$ mkisofs -R -no-emul-boot -b boot/cdboot -o FreeBSD-8.3-Adaptec-disk1.iso cd.adaptec/

Und davon booten.

Die Scheckminuten

Es bootet. Der Loader läd den Kernel. Er läd das Modul. Die Freude ist groß.

FreeBSD/i386 bootstrap loader, Revision 1.1
 
Loading /boot/defaults/loader.conf /kernel text=0x277391 data=0x3268c+0x332a8 ...
Loading /boot/kernel/aacu64.ko text=0x100042321

Der Loader ist da:

boot-loader-menu

Und dann steht alles. De Zähler ist auf Null. Das Rädchen steht. Absturz.

Versuche mit der 8.2 und anderen Medien blieben erfolglos. Immer ein Absturz, wenn der Loader weiter booten soll.

Und weiter geht's

Irgendwann erwischte mich ein Telefonanruf eines Kunden an dieser Stelle. Ich war eine gute Viertelstunde weg.

Und als ich wieder da war, grinste mich der Installationschirm an. Dieser blöde Loader tut einige Minuten(!) lang gar nichts Sichtbares. Dann geht's plötzlich weiter. Und die Platte steht zur Verfügung. Hurra!

Nach mehreren Fehlversuchen, die durch Kleinigkeiten verursacht wurden, ist das System auf der Platte:

Bei der Automatic-Partitionierung erschienen mir 16G /var und 300G /usr im Mißverhältnis. Also beide Partitionen löschen und neu anlegen. Allerdings ist die zweite Partition immer "Partition to big?". Erst viel später habe ich mitbekommen, daß beim Löschen von /var vor der /tmp Partition eine 16G Lücke reißt, die nicht trivial sichtbar ist. Ich hatte mir die Platte fragmentiert und Platz zwischen den Partitionen verbrannt. FreeBSD schlägt eben nicht, wie dokumentiert, den größten zusammenhängende Bereich vor, sondern den gesamten Restplatz.

Bei dem Anlegen der Nutzeraccounts schlug das System /home/<user> als Verzeichnisbaum vor. Stop! Das liegt auf Root. Da gehört eine extra Partition rein. Also nochmal von vorn.

                         FreeBSD Disklabel Editor

Disk: aacd0     Partition name: aacd0s1 Free: 0 blocks (0MB)

Part      Mount          Size Newfs   Part      Mount          Size Newfs
----      -----          ---- -----   ----      -----          ---- -----
aacd0s1a  /            1024MB UFS2     Y
aacd0s1b  swap         4096MB SWAP
aacd0s1d  /var        32768MB UFS2+S   Y
aacd0s1e  /tmp         1024MB UFS2+S   Y
aacd0s1f  /usr        32768MB UFS2+S   Y
aacd0s1g  /home         208GB UFS2+S   Y

Zum Schluß rebootet das System und endlich läuft alles von der Platte.

Nochmal Adaptec

Unglücklicherweise bootet das System von der Platte ohne den Adpatec Treiber und bleibt so nach dem Kernelladen hängen. Verdammt!

Also nochmal von CD gebootet, und im loader mit "set rootdev=disk1s1a:" (nicht /dev/aacd1s1a) von der Platte weiter gebootet. Dann eingeloggt und via Netzwerk (wie hieß gleich der Treiber, der vom BMC virtualisierte CD Laufwerke erkennt?) das Kernelmodul geholt, loader.conf angepaßt ... Fertig.

Jetzt bootet das System wie gewünscht. Es gibt zwar immer noch die Gedenkminute nach dem Loader, aber ich erschrecke nicht mehr.

Avatar
Lutz Donnerhacke 24.05.2013 15:39
Und nun ist er auch im Kernel-Tree ... http://svnweb.freebsd.org/base?view=revision&revision=250963
Avatar
Lutz Donnerhacke 24.05.2013 15:33
Adaptec hat seit 21.12.2012 den Treiber für FreeBSD 9 draußen. Den muß ich mir mal ansehen: http://www.adaptec.com/de-de/speed/raid/aac/unix/aacraid_freebsd_b30034_tgz.htm
Avatar
Lutz Donnerhacke 19.12.2012 14:09
Mounten der CD (via BMC) unter FreeBSD ist doch einfach. Wenn man auf der Konsole ist, einfach das ISO-Image einblenden lassen und das betreffende Device taucht in den Consolen-Messages auf.

Dann: mount -t cd9660 /dev/cd1 /mnt/
Avatar
Tino 06.11.2012 11:38
Das habe ich ein Weilchen mit 3wares 9750 (tws.ko) so durchgemacht, es geht eigentlich.

Stilistisch würde ich statt
$ vi cd.adaptec/boot/defaults/loader.conf

ein
$ vi cd.adaptec/boot/loader.conf
machen und dort das aacu64_load="YES" eintragen.

Siehe loader.conf(5).
Avatar
Lutz Donnerhacke 05.10.2012 09:54
Ja, Gert. Dazu blogge ich demnächst.
Avatar
Gert Döring 04.10.2012 10:01
Bist Du mit dem PPTP/L2TP und MPD schon weitergekommen? Das finde ich noch viel spannender :-)
Avatar
bj 02.10.2012 10:48
Patch für JDOB Funktionalität und einige Bugfixes:
https://0x20.net/8.3-RELEASE-p2+++aac-b18668.g.patch
Avatar
Martin Schröder 27.09.2012 18:58
Idealisten? So geht Adaptec mit Kunden um:
http://marc.info/?l=openbsd-misc&m=126775051500581
http://marc.info/?l=openbsd-misc&m=128779369427908

Post a comment

Verwandter Inhalt