Saltar al contenido

El cargador de arranque U-Boot de código abierto ahora es compatible con el sistema de archivos SquashFS

Open Source U-Boot Bootloader Now Supports SquashFS Filesystem

SquashFS es uno de los sistemas de archivos comprimidos de solo lectura m√°s populares para el sistema operativo Linux. Se usa ampliamente en sistemas integrados para comprimir sistemas de archivos, inodos y directorios completos.

En 2009, el soporte para SquashFS se fusionó con el kernel principal como parte de Linux 2.6.9. Pero hasta ahora, el cargador de arranque universal de código abierto (U-Boot) no era compatible con SquashFS, lo que provocaba la imposibilidad de cargar imágenes del kernel o Blobs del árbol de dispositivos desde un sistema de archivos SquashFS en U-Boot.

Soporte de SquashFS para U-Boot

Ahora, el soporte de SquashFS finalmente se ha agregado a U-Boot gracias a una contribución de João Marcos Costa, un pasante que trabaja en la empresa Bootlin. El soporte para SquashFS ahora está disponible en upstream U-Boot, que puede encontrar en fs / squashfs / en el código fuente de U-Boot.

Soporte del sistema de archivos SquashFS para U-BootSoporte del sistema de archivos SquashFS para U-Boot

Más específicamente, la contribución incluye un nuevo controlador de sistema de archivos SquashFS, comandos, soporte para la descompresión zlib en el controlador y scripts para probar sus comandos.

Para usar el sistema de archivos SquashFS, primero debe habilitar su soporte, que a cambio agrega el controlador SquashFS y proporciona comandos SquashFS U-Boot.

El comando incluye sqfsls para listar archivos de un sistema de archivos raíz típico de Linux.

=> sqfsls mmc 0: 1 bin / boot / dev / etc / lib /        lib32        linuxrc media / mnt / opt / proc / root / run / sbin / sys / tmp / usr / var / 2 archivo (s), 16 dir (s)

Y sqfsload para cargar im√°genes del kernel de Linux y blobs del √°rbol de dispositivos desde archivos.

=> sqfsload mmc 0: 1 $ kernel_addr_r / boot / zImage 6160384 bytes leídos en 433 ms (13,6 MiB / s) => sqfsload mmc 0: 1 0x81000000 /boot/am335x-boneblack.dtb 40817 bytes leídos en 11 ms (3,5 MiB / s) => setenv bootargs console = ttyO0,115200n8 => bootz $ kernel_addr_r - 0x81000000 ## Blob del árbol de dispositivos acoplado en 81000000 Arrancando usando el blob fdt en 0x81000000 Cargando el árbol de dispositivos en 8fff3000, finaliza 8fffff70 ... OK Iniciando el kernel ... . (0.000000) Arrancando Linux en CPU física 0x0 (0.000000) Linux versión 4.19.79 ((correo electrónico protegido)) (gcc versión 7.3.1 20180425 (linaro-7.3-2018.05 revisión d29120a424ecfbc167ef90065c0eeb7f91977701) (Linaro GCC 7.3-2018.05)) # 1 SMP Viernes 29 de mayo 18:26:39 CEST 2020 (0.000000) CPU: Procesador ARMv7 (413fc082) revisión 2 (ARMv7), cr = 10c5387d

Dado que el código del controlador SquashFS es nuevo, es posible que también encuentre algunos errores o limitaciones, que puede informar para resolverlos lo antes posible.

Además de las contribuciones de SquashFS, João también ha enviado código para agregar soporte para la descompresión LZO y ZSTD.