sábado, 7 de novembro de 2015

Por que mesmo ao colocar "fs_passno 0" ainda vejo o fsck ser executado?

Se sua distribuição usar o dracut como gerador de initramfs e configurá-lo para usar o systemd (Fedora, openSUSE, etc), você verá que, mesmo colocando 0 na sexta coluna (fs_passno) do /etc/fstab, o systemd-fsck ainda será executado no sistema de arquivos do diretório raiz. E no /usr caso esteja num volume separado — ver este link sobre esse cenário.

Investigando um pouco, cheguei à resposta.

A principal finalidade, quando não única, do initramfs é montar / e /usr, antes disso cuidando de porventura colocar arranjos RAID por software de pé, subir a rede para casos de sistemas que usem algo remotamente, etc. Demais volumes, que não sejam esses dois, não são montados no initramfs (exceção citada adiante).

Restringindo o leque de possibilidades apenas a partições locais, a forma como dizemos qual sistema de arquivos deve ser montado é através de opções de boot; root= e mount.usr= servem para isso e são postas na configuração do bootloader pelo instalador (Anaconda, YaST, etc). Podem especificar o sistema de arquivos das formas conhecidas: /dev/sdxy, UUID=<xxxxxxxx-xxxx-...>, LABEL=<rótulo>.

Logo que inicia, no ambiente do initramfs, o volume do sistema (o / principal), chamado naquele ponto de /sysroot, ainda não foi montado. E, como não existe uma cópia de /etc/fstab ali, o systemd assume sempre, por garantia, fs_passno 1. Uma vez montado o diretório raiz, /etc/fstab está disponível. A partir desse momento, opcionalmente, o systemd do initramfs pode montar, antes de fazer a mudança para o diretório raiz, sistemas de arquivos adicionais que tenham na quarta coluna (fs_mntops) a opção x-initrd.mount. Também montará sempre /usr, se estiver ali listado e não for especificado através da opção de boot mount.usr=. Interessante notar que fs_passno será respeitado para /usr neste caso. Se ambas estiverem presentes, o systemd-fstab-generator dará preferência à opção de boot.

Depois de feita a mudança para o sistema de arquivos do diretório raiz, todos os demais pontos de montagem que não tenham noauto em fs_mntops são montados, tendo fs_passno interpretado.

Nenhum comentário:

Postar um comentário