Montando imagem squashfs com sobreposição de leitura / gravação para rootfs

4

Estou tentando atualizar um script de init initramfs personalizado para montar uma imagem do squashfs como o sistema de arquivos raiz. Eu tenho testado a montagem de uma imagem de squash para um dispositivo de loop em somente leitura, montando outro arquivo vazio em outro dispositivo de loop em leitura-gravação e usando mapeador de dispositivo para criar um instantâneo rw do dispositivo de loop ro.

Cheguei até aqui com meu script de teste (em execução como root):

mkdir /tmp/squash_rw
dev=$(losetup -f)
losetup -r $dev /mcp_fs.sqsh
ovl=/overlay
newdevname=overlay
size=$(blockdev --getsz "$dev")
loop=$(losetup -f --show -- "$ovl")
printf '%s\n' "0 $size snapshot $dev $loop P 8" | dmsetup create "$newdevname"

Em seguida, uso o toque para testar se o novo dispositivo é montado como rw, mas com um aviso de que é um dispositivo somente leitura.

 # touch /tmp/squash_rw/test
touch: cannot touch '/tmp/squash_rw/test': Read-only file system

Estou usando uma distribuição do gentoo e o kernel Linux 3.10.6 com os módulos device mapper e squashfs incluídos. Muitas referências sugerem usar um dracut initramfs, mas estou tentando obter o script de inicialização para o qual fui fornecido por um fornecedor.

Estou preso a isso há alguns dias e gostaria de receber qualquer ajuda que alguém possa oferecer.

Depois de continuar pesquisando e experimentando, parece que o dispositivo devmapper que estou fazendo assume o sistema de arquivos do primeiro dispositivo que está sendo mesclado. Se eu usar o dispositivo squashfs, o dispositivo devmapper é somente leitura, se eu usar a imagem rw, o dispositivo devmapper é rw, mas quando montado não contém o conteúdo do arquivo squash.

    
por Jose Rodriguez 08.02.2017 / 16:42

0 respostas