A maioria dos sistemas embarcados usa um kernel customizado. Uma ferramenta para facilitar isso é o Buildroot , um conjunto de scripts para construir o toolchain GNU gcc, a biblioteca uClibc no lugar do (enorme) GNU libc, o kernel do Linux, BusyBox e outros utilitários / pacotes para o sistema de arquivos raiz de uma placa embarcada. O RaspberryPi é uma placa relativamente nova, então o suporte a ele no Buildroot ainda está em desenvolvimento, mas aparentemente há um projeto , outro projeto e um trabalho individual . Provavelmente haverá mais à medida que a fabricação de RP aumentar e a distribuição melhorar.
Usando o Buildroot, você pode criar um kernel Linux e um sistema de arquivos raiz exatamente como descreveu na sua pergunta. Dependendo da velocidade da sua conexão com a Internet e das capacidades do seu PC de desenvolvimento, você pode ter os binários em 1 a 4 ou mais horas. A desvantagem é que os binários resultantes não são testados nem garantidos o boot & executar. Um console do sistema é obrigatório para depurar a seqüência de inicialização. Veja minha resposta para Como posso acessar meu mini-pc (RaspberryPi / MK802 / Mele A1000 / VIA APC) via ethernet / wifi sem ter Monitor? Mas, dado que o RaspberryPi foi projetado para ser não vinculável , essa desvantagem não deve ser um impedimento para construir seu kernel personalizado e RFS.
Em relação a "sobreviver à perda de energia":
A seleção adequada do sistema de arquivos geralmente pode aliviar essa preocupação. A camada de dispositivo MTD mais um sistema de arquivos de registro no diário (por exemplo, jffs2) mostrou-se bastante robusta a partir da experiência. Para proteção quase absoluta, há o initramfs que usa ramfs
(não um ramdisk de tamanho fixo) sem alternar para um sistema de arquivos R / W.
Adendo
Uma introdução de 30 slides sobre os recursos do Buildroot é aqui
No final (# 27) há menção de algumas ferramentas semelhantes e alternativas para construir sistemas embarcados.