¿Qué archivo debo modificar para montar una superposición de usuario en el momento del arranque?

¿Qué archivo debo modificar para montar una superposición de usuario en el momento del arranque?

Estoy trabajando en un dispositivo integrado con un brazo corteza A9. La versión del kernel es 4.16.0 y la genera buildroot 2018.05. La memoria de almacenamiento es un mmc con varias particiones. U-boot lee uImage en una partición e inicia el kernel. El sistema de archivos está incluido en la imagen del kernel y se carga al inicio en initramfs (config: BR2_TARGET_ROOTFS_INITRAMFS).

Quiero usar overlayfs para usar una carpeta (en mmc) como sistema de archivos de 'usuario', montado en /.

Ya intenté con éxito superponer /etcun directorio llamado /data/etcagregando estas líneas a /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

Esto está funcionando, pero la superposición se monta después de que systemd ya haya iniciado sus servicios. Entonces, la configuración de red, por ejemplo, es la de uImage y no la de mi usersistema de archivos. Me gustaría montar la superposición antes de iniciar systemd, justo después de /montarlo.

Tengo entendido que al inicio, el sistema crea un primer espacio de memoria en la RAM y luego extrae la imagen cpio en él. Luego /se monta allí y el sistema lanza el primer programa: systemd:/sbin/initcon el PID 1. ¿Es correcto lo que entiendo?

He leído muchos artículos y sitios web de preguntas y respuestas, pero todavía no entiendo dónde debo realizar los cambios para realizar la superposición en el momento del arranque. ¿Cuáles son los archivos que contiene la mount /operación?

Respuesta1

Esta operación de tiempo de arranque está en initramfs. Debe agregar un script a su archivo initramfs/scripts, probablemente init-bottompara (re)montar los sistemas de archivos como desee y luego generar un nuevo paquete initramfs.

El script se ejecuta antes de su sistema de archivos init, al final del initproceso del kernel. La razón por la que es confuso es porque el código para la configuración no está directamente en el sistema de archivos, sino en su archivo initramfs.

Respuesta2

Debe averiguar la ubicación real de su superposición e ingresarla en el archivo.

/etc/fstab

en la forma en que lo ingresaría en un sistema en ejecución.

Una advertencia: debe agregar el archivo al sistema de archivos superpuesto buildroot, de modo que al compilar rootfs, buildroot incluya la tabla del sistema de archivos modificada.

Como ejemplo, supongamos que desea superponer/dev/mmc0p0encima/hogar, seguiría estos pasos, utilizando MYCOMP y MYBOARD como nombre de su empresa y de su junta directiva:

- 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:

tablero/MYCOMP/MYBOARD/rottfs_overlay/etc/fstab:

  /dev/mmc0p0 /home ext4 defaults 0 1

Luego construyes el sistema de archivos en el árbol buildroot con:

make BR2_EXTERNAL=/tmp/br_ext menuconfig
make

Después de reiniciar el nuevo sistema de archivos, la superposición debería estar en su lugar.

información relacionada