U-boot 2016.07: ext4fs_devread ler partições externas

1

Com o mais recente lançamento do U-Boot (2016.07), de repente ele começou a produzir mensagens de erro enigmáticas como esta:

U-Boot> ext4load mmc 0:2 ${ramdisk_addr_r} /initramfs.uImage
invalid extent block
ext4fs_devread read outside partition 4294967294

A pesquisa no Google leva a algumas trocas de listas de e-mail antigas relacionadas a um U real -Boot correção feito em 2014. Então, esta informação parece ser irrelevante para este problema.

O lado do host monta bem o sistema de arquivos problemático. Às vezes o uboot consegue ler arquivos e os principais fatores afetados são desconhecidos.

    
por Roman Saveljev 18.08.2016 / 09:05

1 resposta

1

(Vou deixar minha resposta aqui para googlers, porque demorou três dias para descobrir)

O mais recente e melhor e2fsprogs (> 1,43) ativou o recurso 64bit para os sistemas de arquivos EXT4. Você pode verificar se esse é o caso do seu sistema procurando em /etc/mke2fs.conf . Eu tenho estes:

[fs_types]
        ext4 = {
                features = has_journal,extent,huge_file,flex_bg,64bit,dir_nlink,extra_isize
                inode_size = 256
        }

Todo sistema de arquivos gerado com mkfs.ext4 terá, portanto, o recurso 64bit ativado:

$ sudo tune2fs -l /dev/sda1 | grep 'Filesystem features:'
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize

O U-Boot não entenderá este tipo de sistema de arquivos e até este commit irá resgatar as mensagens mencionadas acima.

A correção é criar sistemas de arquivos EXT4 e desabilitar explicitamente o recurso 64bit :

$ sudo mkfs.ext4 -O ^64bit /dev/sda1
    
por 18.08.2016 / 09:05

Tags