Como depurar scripts initramfs?

1

Para minha configuração do Ubuntu 14.04, eu tenho 4 partições LUKS que funcionam como dispositivos de bloco de apoio da minha partição raiz BTRFS. Usando as configurações padrão, não consegui obter as 4 partições criptografadas desbloqueadas no momento da inicialização, então escrevi um script que faria isso para mim.

O script funciona, às vezes, quando eu inicio, não tenho problemas, outras vezes, ele é inicializado no prompt initramfs. Eu acho que existem problemas de tempo entre a descriptografia das partições LUKS, a montagem da partição BTRFS e a montagem da raiz subvol, mas não tenho idéia de como depurar / testar / corrigir isso. Alguma idéia do que eu poderia fazer para descobrir qual é o problema?

    
por elventear 19.05.2014 / 19:25

1 resposta

1

Use o parâmetro do kernel "debug", você verá mais resultados de depuração no momento da inicialização e o initramfs gravará um log de inicialização em /run/initramfs/initramfs.debug.

Depurar os scripts de inicialização reais geralmente é um trabalho lento. Você precisa pegar o initramfs, descompactá-lo ( gzip -d init*.gz then cpio -vid < init* ), modificá-lo (começar em /init ), empacotá-lo novamente e inicializar com ele. Adicione instruções de impressão onde você deseja verificar o que está acontecendo em um determinado ponto. O problema com as condições de corrida é que a adição de impressões de depuração pode alterar o tempo, resultando em comportamento diferente. Não há solução fácil para isso, além de ler o código e entender o que ele está fazendo. Dito isto, os scripts são curtos e devem ser fáceis de seguir ( /init é apenas cerca de 300 linhas de código).

    
por bain 19.05.2014 / 22:10