Então, depois que aprendi (aqui, é claro) que um 'USB ativo' não pode ser montado nem gravado, parei de tentar atualizar minha imagem de instalação do Debian 12 com meus arquivos e comecei novamente com um novo stick. Copiei o material apropriado, gravei no MBR com meu fiel LILO e... erros estranhos. Uma dúzia de relatórios sobre 'senhora, nenhum array encontrado' e eventualmente: 'ALERTA! nenhum sistema de arquivos raiz'. (Não havia absolutamente nada de errado com o FS raiz.)
Então copiei o kernel e o initrd.img do stick Debian 12 para o novo stick, executei o LILO novamente e... vitória! As botas de pau. Então, obviamente, faltava alguma coisa no initrd.img anterior - funciona bem com uma inicialização de HDD, mas não funciona em um pendrive. Posso diagnosticar isso? Descobrir o que exatamente estava faltando? Gostaria de saber mais sobre como o initrd.img é criado. Talvez reconstruir o .img com defeito? O problema é que os arquivos do Debian 12 são da versão 6.1.0-18, enquanto meu HDD roda 6.1.0-20 e eu gostaria que o USB estivesse atualizado.
Acredito que o problema seja a combinação do LILO e um dispositivo USB. Acho que o LILO espera que a identidade do dispositivo seja constante. Dispositivos USB podem vagar por todos os lados, especialmente em computadores diferentes.
Eu recomendo usar o GRUB e certificar-se de que ele use o comando "search" para localizar os discos, por UUID (ou rótulo). Além disso, certifique-se de que cada sistema de arquivos seja único (ou seja, não clone discos) para que os UUIDs sejam distintos.
Quanto ao initrd... Parece que o sistema do qual você copiou usou alguns dispositivos RAID. Isso usaria "mdadm" (que acredito que você copiou incorretamente como "madame"). Em geral, o initrd deve ser gerado no contexto do sistema que irá inicializar. Assim, você instala tudo no USB, monta, monta (ou liga a montagem) /proc, /dev, /sys, etc nessa montagem e
chroot
no USB montado. Nesse momento, você deve construir o initrd. (Como alternativa, se você puder inicializá-lo, basta fazer e criar um novo initrd.)Se você realmente deseja o mesmo initrd no disco USB e normal, pode ser necessário ter o mesmo subconjunto de pacotes instalados que colocam as coisas no arquivo
/usr/share/initramfs-tools/
. (Os nomes de arquivos normalmente são nomes de pacotes, o que ajuda a identificá-los.) Eu não recomendaria me preocupar.Você também pode precisar verificar a linha de comando de inicialização para garantir que ela não faça referência aos dispositivos RAID.
Se você puder inicializar o USB e quiser apenas reconstruir o initrd, e assumindo que você está usando initramfs-tools, isso seria:
ou se isso não fizer nada (porque você ainda não possui um initrd):
Para reconstruir o initrd USB a partir do host, supondo que seu dispositivo USB seja
/dev/sdc
, que sua partição de inicialização seja/dev/sdc2
, e sua partição raiz seja/dev/sdc3
. E supondo que você tenha um diretório vazio/mnt/usb
. E supondo que você já esteja executando comoroot
.Neste ponto, você está logicamente no dispositivo USB (exceto que todos os serviços do sistema estão sendo executados no host e algumas das restrições de tamanho estão erradas. Agora, atualize o initrd, conforme descrito acima.
A menos que você queira executar para permanecer no sistema de arquivos USB, você provavelmente deveria
exit
usar control-D para sair do chroot.Depois desmonte tudo com:
Normalmente, você nunca precisa executar o update-initramfs manualmente, pois os scripts de instalação fazem isso automaticamente. Isso pode falhar se você instalar um kernel a partir do código-fonte ou fizer coisas como construir uma nova raiz, como em um USB.