Depois de confirmar que o controlador é suportado pelo Solaris, existem duas informações que você precisa saber. Primeiro o nome do motorista. De acordo com a HCL, o controlador 631xESB / 632xESB SATA / AHCI é suportado pelo driver ahci
do Solaris.
O segundo bit de informação é o identificador de hardware ao qual o driver deve anexar. Inicialize o meio de instalação. O instalador de texto do Solaris 11 está bem. Durante a inicialização, não escolha "instalar" ainda, mas obtenha um shell / terminal. Se você usar o instalador ao vivo, basta abrir um Terminal no menu.
Execute prtconf -v | less
e procure seu Controlador. Dica: Pressione /
e digite RAID
; Isso rapidamente me indicou essa saída:
[...]
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'
[...]
Você deseja escolher o valor mais específico da entrada compatible
. Neste caso, escolhi pci8086,2682.103c.3015.9
. Se você escolher um identificador que seja menos específico, o driver poderá acabar anexando ao hardware que não deve ser anexado. Em minhas primeiras tentativas, escolhi pci8086,3015
, o que fez com que o driver fosse anexado ao controlador SAS / SATA, mas também ao controlador USB. Isso criou um monte de mensagens de erro e subsistemas para falhar.
Então, vamos anexar o driver:
root@solaris:~# update_drv -a -i 'pci8086,2682.103c.3015.9' ahci
Aguarde alguns segundos e observe as mensagens de erro no console. Verifique a saída de dmesg
, deve haver algumas mensagens relacionadas ao controlador e aos discos naquele controlador. Verifique também a saída de fmadm faulty
: não deve haver saída. Verifique a saída de cfgadm -s "select=type(disk)"
, você deverá ver seus discos.
Agora você pode instalar o Solaris como de costume. Saia do shell / terminal e continue.
Após a instalação, você precisa atualizar o boot_archive
com o mapeamento do identificador do controlador para o driver. No momento da instalação, o comando update_drv
adicionou uma linha ao arquivo /etc/driver_aliases
na imagem do instalador. Você precisa reproduzir isso no arquivo correspondente na imagem instalada e, em seguida, atualizar o boot_archive.
O driver_aliases
no meu sistema de instalação é assim agora:
root@solaris:~# tail -3l /etc/driver_aliases
zyd "usbace,1211"
zyd "usb13b1,24"
ahci "pci8086,2682.103c.3015.9"
Para copiar esta linha para o sistema instalado, você precisa de um shell novamente. Você pode precisar reiniciar e importar o rpool. Abra um shell na imagem do instalador de texto ou em um terminal na imagem do instalador ao vivo, conecte o driver novamente (se necessário), importe o rpool e monte o ambiente de inicialização em um diretório vazio:
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
Isso pressupõe que o ambiente de inicialização seja chamado de solaris
, que é o padrão. Você pode listar todos os ambientes de inicialização com beadm list
. Apenas para ter certeza de fazer a coisa certa, faça um diff dos arquivos driver_aliases:
root@solaris:~# diff -u /tmp/a/etc/driver_aliases /etc/driver_aliases
Se isso parece bom, então acrescente a linha mágica:
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
Verifique novamente se o arquivo acabou bem. Isso mapeia o controlador para o driver, mas esse mapeamento está disponível apenas para um sistema já inicializado. Seu sistema deve iniciar a partir desse mesmo controlador, certo? Você precisa atualizar o boot_archive. Este é um sistema de arquivos raiz reduzido que contém tudo o que o sistema precisa para inicializar um marco quando ele pode mudar para o sistema de arquivos raiz real. O arquivo de inicialização é um arquivo iso9660 com arquivos compactados gzip (caso você esteja curioso e queira inspecionar o conteúdo, vá em frente). No sistema Intel de 64 bits, isso é /boot/platform/i86pc/amd64/boot_archive
.
O último comando mágico é:
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
Não se preocupe muito com essas mensagens de erro. Funcionou bem para mim.
Em seguida, desmonte e reinicialize:
root@solaris:~# beadm unmount solaris
root@solaris:~# zpool export rpool
root@solaris:~# init 6
Passei dias pesquisando na internet sobre esse problema. No final, li muita documentação sobre o processo de inicialização do Solaris e descobri essa solução. Este artigo surge da minha cabeça, algumas coisas podem não ser precisas. Sinta-se à vontade para comentar ou melhorar!
Essa abordagem também deve funcionar em OpenIndiana, OpenSolaris, IllumOS e outros.
Divirta-se!