U-Boot agora oferece suporte ao sistema de arquivos SquashFS

Graças à contribuição de João Marcos Costa, da empresa Bootlin, o Bootloader U-Boot agora oferece suporte ao sistema de arquivos SquashFS.

SquashFS é um dos mais populares sistemas de arquivos compactados somente leitura para o sistema operacional Linux. É amplamente utilizado em sistemas embarcados para compactar sistemas de arquivos inteiros, inodes e diretórios.

Em 2009, o suporte para SquashFS foi incorporado ao kernel principal como parte do Linux 2.6.9. Mas até agora, o Universal Bootloader (U-Boot) de código aberto não suportava SquashFS, levando a uma incapacidade de carregar imagens do kernel ou Device Tree Blobs de um sistema de arquivos SquashFS no U-Boot.

Agora, o suporte SquashFS foi finalmente adicionado ao U-Boot graças à contribuição de João Marcos Costa, estagiário da empresa Bootlin.

U-Boot agora oferece suporte ao sistema de arquivos SquashFS

U-Boot agora oferece suporte ao sistema de arquivos SquashFS

O suporte para SquashFS agora está disponível no U-Boot upstream, que você pode encontrar em fs/squashfs/ no código-fonte do U-Boot.
U-Boot agora oferece suporte ao sistema de arquivos SquashFS

Mais especificamente, a contribuição inclui um novo driver de sistema de arquivos SquashFS, comandos, suporte para descompressão zlib no driver e scripts para testar seus comandos.

Para usar o sistema de arquivos SquashFS, você também precisa primeiro habilitar seu suporte, que em troca adiciona o driver SquashFS e fornece comandos U-Boot SquashFS.

O comando inclui sqfsls para listar arquivos de um sistema de arquivos raiz Linux típico.
=> sqfsls mmc 0:1
bin/
boot/
dev/
etc/
lib/
lib32
linuxrc
media/
mnt/
opt/
proc/
root/
run/
sbin/
sys/
tmp/
usr/
var/

2 file(s), 16 dir(s)

E sqfsload para carregar imagens do kernel do Linux e blobs da árvore de dispositivos dos arquivos.
=> sqfsload mmc 0:1 $kernel_addr_r /boot/zImage
6160384 bytes read in 433 ms (13.6 MiB/s)
=> sqfsload mmc 0:1 0x81000000 /boot/am335x-boneblack.dtb
40817 bytes read in 11 ms (3.5 MiB/s)
=> setenv bootargs console=ttyO0,115200n8
=> bootz $kernel_addr_r - 0x81000000
## Flattened Device Tree blob at 81000000
Booting using the fdt blob at 0x81000000
Loading Device Tree to 8fff3000, end 8fffff70 ... OK

Starting kernel ...

[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.19.79 (joaomcosta@joaomcosta-Latitude-E7470) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05)) #1 SMP Fri May 29 18:26:39 CEST 2020
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d

Como o código do driver SquashFS é novo, você também pode encontrar alguns bugs ou limitações, que você pode relatar para resolver o mais rápido possível.

Além das contribuições do SquashFS, João também enviou o código para adicionar suporte para a descompressão LZO e ZSTD.

O que está sendo falado no blog

Sair da versão mobile