Crie uma distribuição do Linux com um número mínimo de arquivos

3

Estou pensando em projetar um sistema para um projeto usando algum computador de placa única (RaspberryPi, CubieTruck etc) que executa o Linux.
Meu principal requisito é manter a complexidade do cartão SD inicializado ao mínimo - minha visão é algo como:

/
 boot.txt
 settings.txt # DHCP /ifconfig data etc.
 error.log    # optional
 OS.tar.gz    # the OS Omni-file
 Kernel.img   # If it can't fit with the Omni-file

O SO não precisa modificar seus arquivos, exceto possivelmente por algum log de erros.
Meu melhor palpite até agora é inicializar a partir de um ISO real usando easy2boot , mas o layout não é trivial o suficiente (e parece um bocado para trás).
Existe alguma opção de projeto / inicialização que possa me ajudar a alcançar meu objetivo?

update
Eu descobri dispositivos de loop , que se parecem com o que eu preciso - um FS dentro de um arquivo.
Eu consegui formatar e montar, como:

losetup /dev/loop0 /tmp/disk.img
mkfs -t ext2 /dev/loop0
losetup -d /dev/loop0
mkdir /tmp/disk-mount
mount /tmp/disk.img /tmp/disk-mount -o loop
touch /tmp/disk-mount/bla
umount /tmp/disk-mount

Existe alguma documentação para iniciar a partir de tal dispositivo?

    
por Nitz 18.01.2015 / 19:14

3 respostas

2

Considere usar o Buildroot para criar seu sistema de arquivos raiz de destino. Este projeto aproveita a configuração do kernel do Linux e cria o fluxo de trabalho para todo o sistema de arquivos do sistema embarcado.

    
por 19.01.2015 / 09:37
0

Se eu entendi corretamente, você precisa de uma ferramenta para criar um sistema de arquivos raiz personalizado. Uma das ferramentas com as quais trabalhei é o link no entanto, não sei se configurar o bootloader para rodar no Ri seria uma tarefa fácil.

Além disso, considere que alguns dos arquivos que você definiu no seu exemplo precisariam de alguma forma de daemon para preenchê-los, e que o deamon é um binário localizado em algum lugar na hierarquia do sistema de arquivos.

Então, quando você diz The OS doesn't have to modify its files, except possibly for some error log. , o aplicativo modificando é provavelmente um deamon de espaço de usuário localizado em algum lugar no rootfs (por exemplo /usr/bin ).

    
por 18.01.2015 / 19:46
0

Após sua pergunta secundária ("atualização") sobre o uso do dispositivo de loop: Por mais que eu esteja familiarizado com o fluxo de inicialização, você precisa primeiro inicializar em um ramdisk inicial (initrd) - uma imagem FS raiz mínima embutida na imagem do kernel que contém apenas conteúdo suficiente para montar o FS raiz principal como dispositivo de loop. Depois de montar o FS raiz principal, "chroot" do initrd na imagem raiz completa (loop) montada.

    
por 19.01.2015 / 22:16