Descobri que não é possível executar fsck
em um dispositivo de loopback na inicialização pelo fsck
sinalizador dentro do fstab
arquivo, nem é possível fazer isso executando manualmente fsck
quando o dispositivo de loop está montado.
Existe uma alternativa para verificar o dispositivo no momento da inicialização?
A frase-chave é "quando o dispositivo de loop está montado" . Você pode executar
fsck
em um dispositivo de loopback não montado.Em outras palavras, você pode executar
losetup
para criar o dispositivo de bloco de loopback e anexá-lo ao arquivo relevante e, em seguida, executáfsck
-mount
lo.Isso, é claro, pode ser roteirizado. Você pode até fazer isso em
/etc/rc.local
ou similar se as montagens de loopback forem sinalizadasnoauto
-/etc/fstab
então faça o losetup/fsck/mount para cada loopback fs in/etc/fstab
.Observe que é uma espécie de abuso do
noauto
sinalizador porque o (s) sistema (s) de arquivos de loopback acabarão sendo montados automaticamente. Comente quaisquer sistemas de arquivos de loopback que você não deseja que sejam montados automaticamente.Como alternativa, você pode modificar qualquer código executado
mount -a
em seu sistema (systemd, sysvinit shell script ou qualquer outro) para que seja executadomount -a -tnoloop
, de modo que os sistemas de arquivos de loopback nunca sejam montados automaticamente como outros sistemas de arquivos. O script que faz o losetup/fsck/mount pode então ser escrito para honrar onoauto
sinalizador, se presente.Encontrei uma solução elegante e confiável.
Eu escrevi um script para a fase de inicialização "/etc/initramfs-tools/scripts/local-premount/" para processar meu disco de loop antes da montagem do sistema de arquivos.
Abaixo os detalhes:
Aqui está a fonte do script:
Cumprimentos!