Estou tendo alguns problemas para assinar meu módulo zfs no Fedora 27 usando UEFI/Secure Boot e espero que alguém aqui possa ajudar.
Como uma rápida explicação de como normalmente faria isso, assino o módulo VirtualBox usando chaves que já gerei e registrei no efibootmgr, com o seguinte comando:
# /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./key.priv ./key.der $(modinfo -n vboxdrv)
Funciona bem porque o vboxdrv existe como um módulo de kernel comum, e faço a mesma coisa com sucesso para cada atualização do kernel, e o processo é genérico o suficiente para que eu possa fazer a mesma coisa com o zfs. Mas tentar fazer isso falha. Verificando # modinfo -n zfs
, vejo que o módulo do kernel zfs parece existir como um arquivo compactado - /lib/modules/4.15.17-300.fc27.x86_64/extra/zfs.ko.xz
(e essa é a versão atual correta do kernel).
Para ver se talvez exista outro módulo em outro lugar, eu corro # find / -name zfs.ko
que não retorna nada, então este arquivo .xz é o único módulo zfs disponível. Tudo bem, então eu corro # xz --decompress zfs.ko.xz
. Isso me diz que os dados estão corrompidos (o utilitário xz é o que retorna esse erro, sugerindo que não é um arquivo compactado em xz, ou pelo menos é modificado de alguma forma ou não pode ser tratado pelo xz integrado) .
# modinfo zfs
apenas retorna o caminho para zfs.ko.xz e um erro de modinfo.
Portanto, estou perdido neste momento. Desativar a inicialização segura não é realmente uma opção que eu queira considerar. Como devo assinar um módulo compactado se não consigo descompactar o arquivo primeiro? Ou já está assinado com uma chave disponível para mim em algum lugar para download que devo registrar?
Você pode descompactar o módulo compactado, assiná-lo e compactá-lo novamente
ou um pouco mais geral (eu uso isso para evdi, inspirado em https://gist.github.com/dop3j0e/2a9e2dddca982c4f679552fc1ebb18df )
depois de correr
sudo depmod -a
modprobe evdi
simplesmente funciona :)