После того, как вы подтвердите, что контроллер поддерживается Solaris, вам нужно знать две части информации. Сначала имя водителя. Согласно HCL, контроллер SATA / AHCI 631xESB / 632xESB поддерживается ahci
драйвером Solaris .
Второй бит информации - это идентификатор оборудования, к которому должен подключиться драйвер. Загрузите установочный носитель. Текстовый установщик Solaris 11 просто в порядке. Во время загрузки пока не выбирайте «установить», но получите оболочку / терминал. Если вы используете живой установщик, просто откройте Терминал из меню.
Выполните prtconf -v | less
и найдите свой контроллер. Подсказка: нажмите /
и введите RAID
; Это быстро указало мне на этот вывод:
[...] 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' [...]
Вы хотите выбрать наиболее конкретное значение из compatible
записи. В этом случае я выбрал pci8086,2682.103c.3015.9
. Если вы выберете менее конкретный идентификатор, драйвер может в итоге подключиться к оборудованию, к которому он не должен подключаться. В своих ранних попытках я выбрал, pci8086,3015
что привело к подключению драйвера к контроллеру SAS / SATA, а также к контроллеру USB. Это создало адские сообщения об ошибках и подсистемы сбоев.
Тогда давайте прикрепим драйвер:
root@solaris:~# update_drv -a -i 'pci8086,2682.103c.3015.9' ahci
Подождите несколько секунд и следите за сообщениями об ошибках на консоли. Проверьте вывод dmesg
, должно быть несколько сообщений, которые относятся к контроллеру и дискам на этом контроллере. Также проверьте вывод fmadm faulty
: не должно быть никакого вывода. Проверьте вывод cfgadm -s "select=type(disk)"
, вы должны увидеть ваши диски.
Теперь вы можете установить Solaris как обычно. Выйдите из оболочки / терминала и продолжайте.
После установки вам необходимо обновить boot_archive
отображение с идентификатором контроллера на драйвер. Во время установки update_drv
команда добавила строку в файл /etc/driver_aliases
образа установщика. Вам необходимо воспроизвести это в соответствующем файле на установленном образе, а затем обновить загрузочный архив.
Теперь driver_aliases
моя система установки выглядит следующим образом:
root@solaris:~# tail -3l /etc/driver_aliases zyd "usbace,1211" zyd "usb13b1,24" ahci "pci8086,2682.103c.3015.9"
Чтобы скопировать эту строку в установленную систему, вам снова понадобится оболочка. Возможно, вам придется перезагрузить и импортировать пул. Откройте оболочку на образе текстового установщика или терминал на образе установщика в реальном времени, снова подключите драйвер (при необходимости), импортируйте rpool и смонтируйте загрузочную среду в пустой каталог:
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
Это предполагает, что вызывается среда загрузки, solaris
которая используется по умолчанию. Вы можете перечислить все загрузочные среды с beadm list
. Просто чтобы убедиться, что вы все делаете правильно, создайте diff из файла driver_aliases:
root@solaris:~# diff -u /tmp/a/etc/driver_aliases /etc/driver_aliases
Если это выглядит хорошо, добавьте волшебную строку:
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
Проверьте еще раз, если файл закончился хорошо. Это сопоставляет контроллер с драйвером, но это сопоставление доступно только для уже загруженной системы. Ваша система должна загрузиться с того самого контроллера, правда? Вам необходимо обновить загрузочный архив. Это уменьшенная корневая файловая система, которая содержит все, что нужно системе для загрузки до вехи, когда она может переключиться на настоящую корневую файловую систему. Загрузочный архив представляет собой архив iso9660 со сжатыми файлами gzip (если вам интересно, и вы хотите проверить содержимое, продолжайте). На Intel 64-битной системе это так /boot/platform/i86pc/amd64/boot_archive
.
Последняя магическая команда:
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
Не беспокойтесь слишком сильно об этих сообщениях об ошибках. Это работало нормально для меня.
Далее размонтируем и перезагрузим:
root@solaris:~# beadm unmount solaris root@solaris:~# zpool export rpool root@solaris:~# init 6
Я провел дни, исследуя в Интернете об этой проблеме. В конце я прочитал много документации по процессу загрузки Solaris и нашел это решение. Это письмо выходит из моей головы, некоторые вещи могут быть не точными. Не стесняйтесь комментировать или улучшать!
Этот подход также должен работать на OpenIndiana, OpenSolaris, IllumOS и других.
Повеселись!