Eu tenho um sistema que desejo inicializar a partir de um disco NVMe (por meio de um riser PCIe). O sistema é compatível com UEFI, posso inicializar a partir de um disco USB e instalar o sistema operacional (escala TrueNAS) no disco NVMe, e o sistema operacional aparece nas opções de inicialização UEFI. No entanto, ao tentar inicializar a partir dessa opção UEFI, ele não consegue (apenas me leva à tela do BIOS).
Isso parece ocorrer porque o BIOS não suporta a inicialização a partir de discos NVMe. Isso faria sentido, já que usei um riser PCIe para adicionar o disco NVMe.
Quando procuro o assunto no Google, há muitas referências a rEFInd e "DUET". Porém não consigo encontrar nenhuma informação sobre este "DUET". Todos os links que posso encontrar apontam para um repositório inativo.
Como posso inicializar o sistema a partir do NVMe?
Consegui fazer isso funcionar usando o Vanilla rEFInd e fornecendo um driver para NVMe. Instalei em um dispositivo USB, pois era uma opção não intrusiva e transparente para o sistema. Como o TrueNAS gerencia o disco de inicialização, não quero interferir nisso.
O rEFInd inicializará a partir do USB e, em seguida, carregará o grub em cadeia do disco NVMe.
O rEFInd fornece um ISO que você pode gravar em um dispositivo USB, mas o sistema de arquivos contém muito pouco espaço livre e a
fatresize
ferramenta não conseguiu redimensioná-lo (afirma que é um sistema de arquivos FAT12). Então você tem que usar a ferramenta de instalação.gdisk
(ou outra ferramenta de partição) para particionar o dispositivo USB, definindo o tipo de partição comoEF00
.mkfs.vfat
, embora não tenha certeza se esta etapa é necessária.refind-install --usedefault /dev/name_of_usb_partition
. (por exemplo/dev/sdz1
)mkdir /path_to_usb/EFI/BOOT/drivers_x64
efi/clover/drivers/off/nvmexpressdxe.efi
do Clover para/path_to_usb/EFI/BOOT/drivers_x64/
.É isso. O rEFInd usará automaticamente o driver, procurará as opções de inicialização disponíveis e inicializará automaticamente após 20 segundos. Você pode seguir a documentação do rEFInd para configurar o comportamento.