Qual arquivo devo modificar para montar uma sobreposição de usuário no momento da inicialização

Qual arquivo devo modificar para montar uma sobreposição de usuário no momento da inicialização

Estou trabalhando em um dispositivo embarcado com córtex de braço A9. A versão do kernel é 4.16.0 e é gerada pelo buildroot 2018.05. A memória de armazenamento é um mmc com diversas partições. O U-boot lê o uImage em uma partição e inicia o kernel. O sistema de arquivos está incluído na imagem do kernel e é carregado na inicialização em um initramfs (config: BR2_TARGET_ROOTFS_INITRAMFS).

Quero usar um overlayfs para usar uma pasta (no mmc) como um sistema de arquivos 'usuário', montado em /.

Eu já tentei sobrepor com sucesso /etcum diretório chamado /data/etcadicionando estas linhas ao /etc/fstab:

/dev/mmcblk0p1 /data auto defaults 1 2
overlay /etc overlay x-systemd.requires=/data,lowerdir=/etc,upperdir=/data/etc,workdir=/data/work/etc 0 0

Isso está funcionando, mas a sobreposição é montada depois que o systemd já iniciou seus serviços. Portanto, a configuração da rede, por exemplo, é a do uImage e não a do meu usersistema de arquivos. Gostaria de montar a sobreposição antes de iniciar o systemd, logo após /a montagem.

Entendi que na inicialização o sistema cria um primeiro espaço de memória na RAM e depois extrai a imagem cpio nele. Aí /é montado lá e o sistema lança o primeiro programa: systemd:/sbin/initcom o PID 1. Meu entendimento está correto?

Eu li muitos artigos e sites de perguntas e respostas, mas ainda não entendi onde devo fazer as alterações para executar minha sobreposição no momento da inicialização. Quais são os arquivos que contém a mount /operação?

Responder1

Esta operação de inicialização está no initramfs. Você precisa adicionar um script ao seu initramfs/scripts, provavelmente init-bottompara (re) montar os sistemas de arquivos conforme desejado e, em seguida, gerar um novo pacote initramfs.

O script é executado antes do seu sistema de arquivos init, no final do initprocesso do kernel. A razão pela qual é confuso é porque o código para a configuração não está em nenhum lugar diretamente no sistema de arquivos, mas sim no seu arquivo initramfs.

Responder2

Você precisa descobrir a localização real da sua sobreposição e inseri-la no arquivo

/etc/fstab

da maneira como você o inseriria em um sistema em execução.

Uma advertência: você precisa adicionar o arquivo ao sistema de arquivos de sobreposição buildroot, para que, ao construir o rootfs, o buildroot inclua a tabela do sistema de arquivos modificada.

Por exemplo, vamos supor que você queira sobrepor/dev/mmc0p0sobre/lar, você seguiria estas etapas, usando MYCOMP e MYBOARD como o nome da sua empresa e do seu conselho:

- create a filesystem structure in a seperate directory, as 
  specified in the buildroot manual chapter 9.1 "Recommended 
  directory structure", presumably under /tmp/br_ext
- in this directory you add board/MYCOMP/MYBOARD/rottfs_overlay/etc/fstab 
  and fill it with this information:

placa/MYCOMP/MYBOARD/rottfs_overlay/etc/fstab:

  /dev/mmc0p0 /home ext4 defaults 0 1

Então você constrói o sistema de arquivos na árvore buildroot com:

make BR2_EXTERNAL=/tmp/br_ext menuconfig
make

Após reinicializar o novo sistema de arquivos, a sobreposição deverá estar instalada.

informação relacionada