Squash File System sobre OverlayFS
/
├── boot
│ ├── cmdline-no_overlay.txt # Configura el arranque sin el OverlayFS
│ └── cmdline-overlay.txt # Configura el arranque con el OverlayFS
└── sbin
└── overlayRoot.sh # SquashFS sobre OverlayFS script
Copiar el archivo cmdline-no_overlay.txt
y cmdline-overlay.txt
en el path /boot/
.
Para habilitar o deshabilitar el overlayFS
-
Habilitar OverlayFS:
cp /boot/cmdline-overlay.txt /boot/cmdline.txt
-
Deshabilitar OverlayFS:
cp /boot/cmdline-no_overlay.txt /boot/cmdline.txt
-
Después de modificar el archivo
cmdline.txt
se debe reiniciar el dispositivo para aplicar los cambios mediante el comandosudo reboot
Para esta explicación se parte de la base que el sistema operativo NO tiene habilitado el overlayFS
, por lo que la partición rootfs
es persistente.
Para este ejemplo se han creado 3 archivos de tst los cuales están localizados en los path /home
y /etc
.
-
Crear una carpeta temporal en el path
/home/user
:sudo -s mkdir /home/user/squahsfs_tmp
-
Dentro de la carpeta temporal, se crean 2 nuevas carpetas:
cd /home/user/squahsfs_tmp mkdir etc mkdir home
-
Creamos varios archivos mock para hacer la prueba:
touch etc/hello_etc touch home/home_file_01 touch home/home_file_02
-
Una vez creados/modificados/borrados los archivos, se creará el archivo
sfs
:cd .. # Estamos ubiados en el path /home/user squashfs squahsfs_tmp file_system.sfs -comp xz # Crea el archivo SFS file_system.sfs
El comando detallo genera el archivo
sfs
file_system.sfs
el cual contendrá la información que hay en la carpeta temporalsquashfs_tmp
creada anteriormente. -
La ubicación de los archivos
sfs
para que los monté posteriormente en el sistema operativo es el path/lib/live/squashfs
, por lo que el archivo generado se debe copiar allí.mv /home/user/squahsfs_tmp /lib/live/squashfs
-
Eliminamos la carpeta squasfs_tmp
rm -rf /home/user/squashfs_tmp
-
Habilitamos el overlayFS
cp /boot/cmdline-overlay.txt /boot/cmdline.txt
-
Reiniciamos el sistema para que se monte el
sfs
reboot
-
Si todo ha funcionado correctamente, se deben mostrar los archivos creados anteriormente tal y como se detalla a continuación:
ls /home ├── home_file_01 ├── home_file_02 └── other /home files... ls /etc ├── hello_etc └── other /etc files...
Para actualizar un archivo sfs
ya existente:
-
Reiniciamos el dispositvo deshabilitando el
overlayFS
sudo -s cp /boot/cmdline-no_overlay.txt /boot/cmdline.txt reboot
-
Accdemos al path
/lib/live/squashfs
sudo -s cd /lib/live/squashfs
-
Desomprimimos el archivo
sfs
llamado file_system.sfsunsquashfs -f file_system.sfs
Tras ejecutar el comando, se crea una carpeta llamada squashfs-root con todo el contenido del archivo
sfs
/lib/live/squashfs ├── file_sytem.sfs └── squashfs-root
-
Modicamr/crear/eliminar el archivo que se desee dentro de la carpeta squashfs-root (por ejemplo, se eliminará el archivo home_file_02):
rm -rf squashfs-root/home/home_file_02
-
Eliminamos el archivo
sfs
orginal file_system.sfsrm -rf file_system.sfs
-
Creamos el archivo sfs nuevamente con los cambios aplicados
squashfs squashfs-root file_system.sfs -comp xz
-
Modificamos el
cmdline.txt
par habilitar eloverlayFS
cp /boot/cmdline-overlay.txt /boot/cmdline.txt
-
Reiniciamos el dispositivo para que aplique los cambios
reboot
Otra forma de modificar los archivos sfs
sin necesidad de habilitar/deshabilitar el overlayFS
es la detallada a continuación:
-
Se remonta la partición de RO a RW
sudo -s mount -o remount,rw /lib/live/mounted/ro
-
Accedemos a la carpeta squashfs del directorio persistente, puesto que el sistema operativo se ha montado con
overlayFS
cd /lib/live/mounted/ro/lib/live/squashfs
-
Repetir los pasos anterior del punto 3 al punto 8
- Twitter. @0xDA_bit
- Github. OxDAbit
- Mail. oxdabit@protonmail.com