Quão determinista é uma seqüência de inicialização do sistema Linux?

-1

Eu fiz uma pequena experiência: configurei uma vanilla Ubuntu Linux instalada alguns dias antes com a opção atime mount para o root fs. Em seguida, reiniciei algumas vezes, executando alguns aplicativos prontos para uso e, finalmente, desliguei-o com elegância. Eu então inicializei a máquina a partir de alguma imagem ao vivo e removi qualquer arquivo do Ubuntu não acessado nos últimos dias. Eu então tentei reiniciar o Ubuntu. Ele falha na tela preta no início da inicialização.

Eu repeti o experimento várias vezes, verificando cuidadosamente as configurações de fs e introduzindo uma janela de tempo passado crescente para os arquivos mantidos. Eu nunca consegui fazer o boot do Ubuntu no Unity.

Quais arquivos cruciais podem estar faltando, que são necessários para a inicialização, mas nunca foram acessados antes?

    
por dronus 09.01.2018 / 04:03

1 resposta

2

Which crucial files may be missing, that are needed for boot, but were never accessed before?

Eu acho que não é sobre "nunca acessado antes", mas sim "seus novos tempos de acesso não puderam ser armazenados", porque em geral alguns estágios do processo de inicialização leem o (s) sistema (s) de arquivos em modo somente leitura.

Não é que algo ignore o recurso atime de propósito. O tempo de acesso não sendo atualizado é apenas um efeito colateral da montagem somente leitura preliminar (para armazenar o novo atime você precisa escrevê-lo, certo?). Eu espero que isso se aplique especialmente a initrd e vmlinuz em /boot , mas o sistema de arquivos raiz é inicialmente montado somente para leitura também:

Thus, the kernel initializes devices, mounts the root filesystem specified by the boot loader as read only, and runs Init (/sbin/init) ...

( source )

Então o que quer que atue como Init (é systemd no Ubuntu) remonta o sistema de arquivos como read-write em algum momento. Para systemd :

systemd-remount-fs.service is an early boot service that applies mount options listed in fstab(5) to the root file system [...]

Então, quando eu li essa afirmação: "Não aparece na tela preta na inicialização inicial", estou supondo que você removeu alguns arquivos que precisam ser acessados apenas durante esses primeiros estágios de inicialização somente de leitura quando o atime não pode ser atualizado.

Outra armadilha (que no final parece irrelevante para o seu caso, mas é bom saber):

De man 8 mount [ênfase minha]:

atime

Do not use the noatime feature, so the inode access time is controlled by kernel defaults. See also the descriptions of the relatime and strictatime mount options.

relatime

Update inode access times relative to modify or change time. Access time is only updated if the previous access time was earlier than the current modify or change time. (Similar to noatime, but it doesn't break mutt or other applications that need to know if a file has been read since the last time it was modified.)

Since Linux 2.6.30, the kernel defaults to the behavior provided by this option (unless noatime was specified), and the strictatime option is required to obtain traditional semantics. In addition, since Linux 2.6.30, the file's last access time is always updated if it is more than 1 day old.

Esta condição de "1 dia de idade" junto com o sistema operacional "instalado alguns dias antes" e com a remoção de arquivos "não acessados pelos últimos dias" - tudo isso torna o padrão relatime irrelevante para o seu problema, eu acho. Ainda assim você pode ter pensado que a opção atime é suficiente para que o tempo de acesso seja atualizado sempre; então achei que seria bom explicar isso.

    
por 09.01.2018 / 08:56