Eu gravei um dispositivo embutido em linux.
Eu estava experimentando e adicionei meu próprio caminho a /etc/ld.so.conf
. O libc
que eu incluí no meu caminho não é compatível com este dispositivo em particular, então eu perdi o acesso ssh a ele e é claro que ele não inicializa mais.
Eu posso entrar em uma espécie de modo de download, onde eu posso carregar na memória o bootloader, o kernel, o dtb e o initramfs. Eu posso então dizer ao processador para pular para um determinado endereço na memória, e fazer o boot do sistema.
Isso não resolve o problema, porque assim que o root
é alterado do initramfs para a memória flash do dispositivo, as bibliotecas erradas são usadas e o dispositivo para de funcionar.
Meu plano é adicionar um script personalizado ao initramfs que monta o flash, apaga /etc/ld.so.conf
e /etc/ld.so.cache
. Eu não me importo se o deivice não inicializa então, assim que os arquivos são esvaziados e o dispositivo é reinicializado, ele deve retornar para usar as bibliotecas padrão. Eu posso então conectar via ssh e limpar a bagunça.
Não consegui entender exatamente onde devo injetar minha correção no initramfs, então a pergunta é:
Onde devo inserir algumas linhas do bash para que sejam executadas na inicialização, antes de /
ser montado?