Como executar automaticamente o mkinitramfs no Debian após a atualização do apt para pacotes do kernel?

Como executar automaticamente o mkinitramfs no Debian após a atualização do apt para pacotes do kernel?

O que estou tentando alcançar é ter um sistema de arquivos raiz criptografado em um Raspberry Pi (executando Raspian Buster) que seja desbloqueado na inicialização via ssh. Cheguei bastante longe adaptandoum tutorial para Kali linuxe funcionou pelo menos uma vez, mas ainda não sobreviveu às atualizações do kernel.

Um dos problemas é que esta configuração está usando um initramfs que é referenciado /boot/config.txtpor

initramfs initramfs.gz followkernel

e isso precisa ser atualizado após uma atualização do kernel chamando manualmente, por exemplo

mkinitramfs -o /boot/initramfs.gz 4.19.118-v7+

onde 4.19.118-v7+depende da versão atual do kernel e do tipo de hardware Raspberry Pi usado. Claro, quero que isso seja feito automaticamente sempre que apt upgradeinstalar um novo kernel.

Foi aqui que fiquei preso com 2 problemas:

  • A) Onde e como conecto esse processo de atualização de maneira adequada?
  • B) Como determino a versão correta do kernel a ser usada?

Em relação a A) cheguei ao ponto de aprender que raspberrypi-kernel.postinstexecuta /etc/kernel/postinst.d/. Isso novamente chama /usr/sbin/update-initramfso que no final chamará mkinitramfs. Onde fiquei confuso foi esse código em /usr/sbin/update-initramfs:

set_initramfs()
{
        initramfs="${BOOTDIR}/initrd.img-${version}"
}

Ele determina o nome do arquivo para o initramfs. Nenhum arquivo desse tipo foi gerado durante a atualização e não tenho certeza se estou no caminho certo, poisWikipédiadiz que o esquema init.rd foi substituído pelo esquema initramfs. No entanto, não consegui encontrar uma boa documentação que descreva como as coisas deveriam acontecer após a atualização de um módulo do kernel. (Bons links apreciados).

Então, minha pergunta é: onde é um bom lugar para inserir um script que execute o mkinitramfscomando? Devo modificar /etc/kernel/postinst.d/? Esta solução será estável nas próximas versões do Debian?

Em relação a B), é fácil obter versões de kernel disponíveis com

> ls -l /lib/modules/ | awk -F" " '{print $9}'`

5.4.51+
5.4.51-v7+
5.4.51-v7l+
5.4.51-v8+

Mas como seleciono automaticamente o correto para o hardware atual? Para um Pi3B+ isso seria 5.4.51-v7+. Existe uma maneira de determinar isso automaticamente?

Muito obrigado pela sua ajuda!

Responder1

Parece que o initramfs deve ser habilitado configurando INITRD=Yese /etc/default/raspberrypi-kerneladicionando um script pós-atualização /etc/initramfs/post-update.d/para atualizar /boot/config.txtcomo proposto emAtualizar intramfs após atualização do kernel#608.

Eu espero que isso funcione ...

informação relacionada