Coloquei a raiz de uma instalação do Trusty em um cartão SD flash, que acabarei configurando como somente leitura, usando um overlayFS para tornar algumas partes necessárias graváveis, como / etc. Eu sei que pode parecer um pouco louco fazer isso, mas não é onde eu estou tendo problemas.
O instalador do Ubuntu não reconhece o leitor de cartão múltiplo na frente da máquina, então eu uso um leitor de cartão USB para resolver este problema. Então, quando a instalação estiver completa, coloque o cartão SD no leitor de múltiplos cartões e lá vou eu.
Isso funcionou perfeitamente em 2 Foxconn NanoPCs com firmware de 2012, embora recentemente tenhamos comprado modelos mais novos, com firmware mais recente, e é aí que o problema apareceu.
Quando eu alterno do leitor de cartão USB para o interno, o sistema perde o controle do cartão SD durante a execução de scripts locais e cai para um shell no initramfs, dando a mensagem;
Gave up waiting for root device. Common Problems;
-Boot args (cat /proc/cmdline)
-Check rootdelay= (did the system wait long enough?)
-Check root= (did the system wait for the right device?)
-Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/XXXXXXXXXXXXXX does not exist. Dropping to a shell!
Parece-me que o hardware não está passando o UUID para o sistema no ponto em que o sistema de arquivos raiz está sendo montado.
Existe alguma maneira de fazer o initramfs apontar para o leitor de cartão interno, ou procurar o cartão SD por algo diferente de UUID?
Alternativamente, estou latindo na árvore errada, há algo mais que eu deveria tentar?
EDITAR
Acabou de me ocorrer que a principal diferença entre os sistemas funcionando e o não funcional é que, ao escolher opções de inicialização do BIOS, se o cartão SD está no leitor interno, o sistema operacional mostra o nome do cartão SD (Multi-cartão genérico 1.00), mas nos sistemas que não funcionam, ele sempre aparece como leitor de cartão USB 2.0. Isso sugere que é um problema de firmware?