oxraspbian
es la distribución debian oficial de Rasbperry Pi dónde se monta un file system custom, mediante overlayFS
que habilita a la Raspberry Pi para trabajar en modo "kiosko".
A nivel de disco, el dispositivo se configura con 3 particiones:
boot
. Corresponde a la partición de arranque del dispositivorootfs
. Corresponde a la partición del sistema operativo (partición no persistente)oxdata
. Corresponde a la partición de datos (partición persistente)
En cada arranque, la Raspberry montará el rootfs
, vía overlayFS
, con los archivos squashfs
que estarán ubicados en el path /lib/live/squashfs/
. De esta forma, una vez iniciado el sistema, toda la información que se cree, borre o modifique durante la sesión, no se perderá en el próximo arranque, puesto que el sistema no estará escribiendo en disco.
Con este file system se pretende alargar la vida del disco para aquellos dispositivos que tenemos montados 24/7
Guía con el detalle del montaje del sistema operativo customizado desde cero:
Important
Esta guía así como el uso del script oxsfs.sh
está validada con la distribución Debian Bookworm
Note
Para esta guía de ejemplo se recurre al uso de una Rapberry Pi 4 con una SSD de 128Gb.
- Descargar la imagen del SO de Raspberry desde la página web oficial (Para esta guía, se utilizará el SO Raspberry OS Lite 64Gb)
- Descargar el programa para flashear la imagen
Balena Etcher
- Seleccionar la imagen descargada, el volumen dónde se grabará la imagen e iniciar el proceso
- Desconectar el disco y volver a conectar al ordenador puesto que al finalizar el proceso de grabación el volumen se desmonta de forma automática
- Abrir la partición
bootfs
que se montará en el ordenador al volver a conectar la SSD o la SD y editar el archivocmdline.txt
eliminando el último parámetroinit=/usr/lib/raspberrypi-sys-mods/firstboot
Caution
Es muy importante realizar el último paso antes de iniciar por primera vez el dispositivo se , de lo contrario, la partición correspondiente al rootfs
se extenderá a todo el disco y el script no podrá crear la tercera partición persistente de datos /oxdata
Tras grabar la imagen y arrancar por primera vez el dispositivo, el sistema solicitará que selecciones tú idioma y cambies el usuario por defecto insertando uno nuevo.
Tras realizar este paso, el dispositivo ya está preparado para ser configurado vía USB.
Con la idea de automatizar todo el proceso de montaje del sistema operativo, se ha creado el script oxsfs.sh
para que realice las funciones de asistente y se encargue de todo.
Para poder realizar la configuración del sistema desde el USB, se deben seguir los pasos detallados a continuación:
-
Conectar el USB a nuestro ordenador y crear la estructura de carpetas abajo detallada copiando, directamente del repositorio de Github, el contenido de la carpeta oxusb
├── content # Archivos correspondientes a los contenidos de configuración del sistema │ └── oxcpu.conf # Archivo de configuración genérico ├── oxoverlay # Archivos para la configuración del FS Overlay │ ├── overlayRoot.sh # Archivo de configuración SFS │ └── overlaySFS.sh # Archivo de configuración SFS ├── oxsfs # SFS container │ └── 01-package.sfs # Archivo/s SFS que se copiarán tras la configuración del sistema └── oxsfs.sh # Script que se encarga de ejecutar la configuración
Note
Los scripts overlaySFS.sh
, overlayRoot.sh
se mantienen actualizados en el repositorio overlay-Raspbian
-
Abrir el archivo
oxsfs.sh
y modificar las variables globaleswifi_ssid
ywifi_pswd
para poder establecer la conexión de red correctamente -
Conectamos el USB a la Raspberry Pi
-
Conectamos un teclado y una pantalla al dispositivo para poder efecutar la configuración
-
Nos logamos como usuario
root
y posteriormente creamos una carpeta dónde montar el dispositivo USB:sudo -s mkdir /media/oxusb
-
Obtenemos la información del USB (en mi caso, llamado
OXUSB
) mediante el comandoblkid
el cual debe devolver una información similiar a la abajo detallada:/dev/sdb2: LABEL_FATBOOT="OXUSB" LABEL="OXUSB" UUID="3EA3-1A09" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="e2423cef-095d-4ca2-99b0-051dcb9dea81"
-
Montamos el dispositivo USB en la carpeta
/media/oxusb
mount /dev/sda2 /media/oxusb/
Tip
Podemos comprobar mediante el uso del comando df /media/oxusb
que el volumen se ha montado correctamente
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb2 7411556 1120 7410436 1% /media/oxusb
- Por último, llega el momento de ejecutar el script, el cual tiene 2 tipos de ejecución:
-
Sin parámetro de configuración. El script realizará la configuración del dispositivo sin habilitar la conexión WiFi (el dispositivo se conectará por ETH):
cd /media/oxusb chmod +x oxsfs.sh ./oxsfs.sh
-
Con parámetro de configuración. El script realizará la configuración del dispositivo hablitando la conexión WiFi (el dispositivo se podrá conectar por WiFi y por ETH) detallando el ssid y password informados en las variables globales:
cd /media/oxusb chmod +x oxsfs.sh ./oxsfs.sh wifi
-
Note
El funcionamiento del script se detalla en el documento Changelog oxsfs
- Tras finalizar la ejecución del script el dispositivo se reiniciará para aplicar los cambios y arrancará con el sistema SFS deshabilitado.
Para habilitar/deshabiltar el overlayFS
así como gestionar (crear/borrar/modificar) los archivos SFS se ha documentado toda la información en el documento overlayFS.md
- Twitter. @0xDA_bit
- Github. OxDAbit
- Mail. oxdabit@protonmail.com