Nachdem Sie bestätigt haben, dass der Controller von Solaris unterstützt wird, müssen Sie zwei Informationen wissen. Zuerst den Treibernamen. Laut HCL wird der SATA / AHCI-Controller 631xESB / 632xESB vom ahci
Treiber von Solaris unterstützt .
Das zweite Informationsbit ist die Hardware-Kennung, an die der Treiber anhängen soll. Booten Sie das Installationsmedium. Der Textinstaller von Solaris 11 ist in Ordnung. Wählen Sie beim Booten noch nicht "install", sondern holen Sie sich eine Shell / ein Terminal. Wenn Sie das Live-Installationsprogramm verwenden, öffnen Sie einfach ein Terminal aus dem Menü.
Führen prtconf -v | less
Sie den Controller aus und suchen Sie nach diesem. Hinweis: Drücken Sie /
und geben Sie ein RAID
. Das zeigte mich schnell auf diese Ausgabe:
[...] pci103c,3015, instance #0 Driver properties: name='sata' type=int items=1 dev=none value=00000001 [...] name='compatible' type=string items=7 value='pci8086,2682.103c.3015.9' + 'pci8086,2682.103c.3015' + 'pci103c,3015' + 'pci8086,2682.9' + 'pci8086,2682' + 'pciclass,010400' + 'pciclass,0104' name='model' type=string items=1 value='RAID controller' [...]
Sie möchten den genauesten Wert aus dem compatible
Eintrag auswählen . In diesem Fall habe ich gewählt pci8086,2682.103c.3015.9
. Wenn Sie einen Identifikator auswählen, der weniger spezifisch ist, kann der Treiber an Hardware angeschlossen werden, an die er nicht angebunden werden soll. Bei meinen ersten Versuchen habe ich gewählt pci8086,3015
, warum der Treiber an den SAS / SATA-Controller, aber auch an den USB-Controller angeschlossen wurde. Das hat eine Menge Fehlermeldungen und Subsysteme zum Scheitern gebracht.
Dann lass uns den Treiber anschließen:
root@solaris:~# update_drv -a -i 'pci8086,2682.103c.3015.9' ahci
Warten Sie einige Sekunden und achten Sie auf Fehlermeldungen auf der Konsole. Überprüfen Sie die Ausgabe von dmesg
. Es sollten einige Meldungen angezeigt werden, die sich auf den Controller und die Festplatten dieses Controllers beziehen. Überprüfen Sie auch die Ausgabe von fmadm faulty
: Es sollte keine Ausgabe erfolgen. Überprüfen Sie die Ausgabe von cfgadm -s "select=type(disk)"
. Sie sollten Ihre Festplatten sehen.
Sie können Solaris jetzt wie gewohnt installieren. Beenden Sie die Shell / das Terminal und fahren Sie fort.
Nach der Installation müssen Sie das boot_archive
mit der Zuordnung von der Controller-ID zum Treiber aktualisieren . Bei der Installation hat der update_drv
Befehl der Datei /etc/driver_aliases
im Installationsabbild eine Zeile hinzugefügt . Sie müssen dies in der entsprechenden Datei auf dem installierten Image reproduzieren und anschließend das Boot-Archiv aktualisieren.
Das driver_aliases
auf meinem Installer-System sieht jetzt so aus:
root@solaris:~# tail -3l /etc/driver_aliases zyd "usbace,1211" zyd "usb13b1,24" ahci "pci8086,2682.103c.3015.9"
Um diese Zeile auf das installierte System zu kopieren, benötigen Sie erneut eine Shell. Möglicherweise müssen Sie den Pool neu starten und importieren. Öffnen Sie eine Shell im Text Installer-Image oder ein Terminal im Live Installer-Image, fügen Sie den Treiber erneut hinzu (falls erforderlich), importieren Sie den Rpool und stellen Sie die Boot-Umgebung in ein leeres Verzeichnis.
root@solaris:~# update_drv -a -i 'pci8086,2682.103c.3015.9' ahci root@solaris:~# zpool import rpool root@solaris:~# mkdir /tmp/a root@solaris:~# beadm mount solaris /tmp/a
Dies setzt voraus, dass die Boot-Umgebung als solaris
Standard aufgerufen wird. Sie können alle Boot-Umgebungen mit auflisten beadm list
. Um sicherzugehen, dass Sie das Richtige tun, machen Sie einen Unterschied zwischen den driver_aliases-Dateien:
root@solaris:~# diff -u /tmp/a/etc/driver_aliases /etc/driver_aliases
Wenn das gut aussieht, hängen Sie die magische Linie an:
root@solaris:~# cp /tmp/a/etc/driver_aliases /tmp/a/etc/driver_aliases.backup root@solaris:~# tail -1l /etc/driver_aliases >> /tmp/a/etc/driver_aliases
Prüfen Sie noch einmal, ob die Datei gut gelaufen ist. Dadurch wird der Controller dem Treiber zugeordnet, diese Zuordnung steht jedoch nur einem bereits gebooteten System zur Verfügung. Ihr System sollte jedoch von diesem Controller aus booten, richtig? Sie müssen das Boot-Archiv aktualisieren. Dies ist ein reduziertes Root-Dateisystem, das alles enthält, was das System benötigt, um einen Meilenstein zu erreichen, wenn es zum echten Root-Dateisystem wechseln kann. Das Boot-Archiv ist ein iso9660-Archiv mit gzip-komprimierten Dateien (falls Sie neugierig sind und den Inhalt prüfen möchten, fahren Sie fort). Bei Intel 64-Bit-Systemen ist dies der Fall /boot/platform/i86pc/amd64/boot_archive
.
Der letzte magische Befehl lautet:
root@solaris:~# bootadm update-archive -v -R /tmp/a cannot find: /etc/cluster/nodeid: No such file or directory cannot find: /etc/devices/mdi_ib_cache: No such file or directory cannot find: /etc/devices/retire_store: No such file or directory changed /etc/driver_aliases updating /platform/i86pc/boot_archive Unable to extend /platform/i86pc/boot_archive... rebuilding archive Successfully created /platform/i86pc/boot_archive updating /platform/i86pc/amd64/boot_archive Unable to extend /platform/i86pc/amd64/boot_archive... rebuilding archive Successfully created /platform/i86pc/amd64/boot_archive
Machen Sie sich nicht zu viele Sorgen über diese Fehlermeldungen. Es hat gut für mich funktioniert.
Nächstes Unmount und Neustart:
root@solaris:~# beadm unmount solaris root@solaris:~# zpool export rpool root@solaris:~# init 6
Ich habe tagelang im Internet nach diesem Problem gesucht. Am Ende habe ich eine Menge Dokumentation zum Bootvorgang von Solaris gelesen und mir diese Lösung ausgedacht. Dieses Schreiben kommt aus meinem Kopf, einige Dinge sind möglicherweise nicht genau. Fühlen Sie sich frei zu kommentieren oder zu verbessern!
Dieser Ansatz sollte auch für OpenIndiana, OpenSolaris, IllumOS und andere funktionieren.
Habe Spaß!