Wie installiere ich Solaris auf einem "gefälschten RAID" bzw. "AHCI + RAID" SATA / SAS-Controller?

1446
Johannes

Das Solaris-Installationssystem (Textinstaller, Live-Installer) erkennt den AHCI-Controller nicht, obwohl der Controller explizit als in der offiziellen HCL unterstützt aufgeführt ist. Wie installiere ich dann Solaris?

Anscheinend würde der Treiber funktionieren, aber er weigert sich nur, dies zu tun, weil sich der Controller mit der falschen Hardware-Klasse (RAID-Controller) oder etwas wegen dieser dummen gefälschten RAID-Sache anmeldet. Irgendwie habe ich es endlich geschafft, den richtigen Treiber anzuschließen und Solaris zu installieren, aber das installierte System bootet nicht! Wie kann ich die Treiberbefestigung beibehalten?

Im BIOS habe ich die Möglichkeit zwischen IDEund zu wählen AHCI+RAID, aber nicht AHCI. Ich könnte den IDEModus verwenden, aber das kostet anscheinend viel Leistung. Bei dem betreffenden Controller handelt es sich um den SATA-AHCI-Controller Intel 631xESB / 632xESB in einer Hewlett Packard xw8400 Workstation. Dieser Chipsatz wird auch auf einigen Apple-Workstations verwendet. Dieses "Fake-Raid" -Problem gilt auch dort, AFAIK. Die offizielle Hardware-Kompatibilitätsliste (HCL) besagt, dass dieser Controller zertifiziert ist .

Das Internet schlägt vor, die Stufe1 von Grub zu patchen. Das funktioniert nicht gut, denn (erstens) scheint das Buildsystem von grub kaputt zu sein (objcopy funktioniert nicht) und ich habe keine Linux-Distribution gefunden, auf der dies funktioniert. Dann (zweitens) hat Solaris 11 von Grub v1 zu v2 gewechselt, und Stage1 existiert dort nicht mehr und (drittens) dieser Ansatz würde mit el-torito-Bootstrapping von einer Installations-DVD nicht gut funktionieren.

Wie lasse ich also den richtigen Treiber an den Controller anschließen und über die Installationszeit hinaus bestehen?

0

1 Antwort auf die Frage

2
Johannes

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 ahciTreiber 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 | lessSie 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 compatibleEintrag 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_archivemit der Zuordnung von der Controller-ID zum Treiber aktualisieren . Bei der Installation hat der update_drvBefehl der Datei /etc/driver_aliasesim 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_aliasesauf 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 solarisStandard 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ß!