Editar 2: fontes verificadas
/init
linha 256
log_begin_msg "Mounting root file system"
# Always load local and nfs (since these might be needed for /etc or
# /usr, irrespective of the boot script used to mount the rootfs).
. /scripts/local
. /scripts/nfs
. /scripts/${BOOT}
parse_numeric ${ROOT}
maybe_break mountroot
mount_top
mount_premount
mountroot
log_end_msg
/scripts/local
@line 244
mountroot()
{
local_mount_root
}
/scripts/local
@line 131
local_mount_root()
{
# Some code ommited
# FIXME This has no error checking
[ -n "${FSTYPE}" ] && modprobe ${FSTYPE}
checkfs ${ROOT} root "${FSTYPE}"
# FIXME This has no error checking
# Mount root
mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
mountroot_status="$?"
if [ "$LOOP" ]; then
if [ "$mountroot_status" != 0 ]; then
if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then
panic "<Error message ommited>"
fi
fi
mkdir -p /host
mount -o move ${rootmnt} /host
# Some code ommitted
}
Resposta original, retida por razões históricas
Duas opções:
- A raiz é montada como somente leitura durante a inicialização e a implementação init está executando
fsck
. Systemd é a implementação do init no mint e, como você já verificou se existe, essa opção não se aplica. -
/sbin/fsck.ext4
é executado no "espaço inicial do usuário" , configurado por um initramfs . Qual é provavelmente o caso no seu sistema.
Systemd
Mesmo que você tenha percebido que /sbin/fsck.ext4
foi executado antes de systemd
, quero elaborar um pouco. O Systemd é perfeitamente capaz de rodar o fsck
, em um sistema de arquivos montado somente para leitura. Consulte a documentação do systemd-fsck @ .service . Muito provavelmente, este serviço não está habilitado por padrão no mint, já que será redundante com o espaço inicial do usuário .
Initramfs
Eu não sei qual implementação de uma menta initramfs está sendo executada, mas usarei dracut
como um exemplo. (usado no Debian, openSuse e mais) Ele afirma o seguinte em seu mount preperation documentação:
When the root file system finally becomes visible:
- Any maintenance tasks which cannot run on a mounted root file system are done.
- The root file system is mounted read-only.
- Any processes which must continue running (such as the rd.splash screen helper and its command FIFO) are hoisted into the newly-mounted root file system.
E as tarefas de manutenção incluem fsck
. Mais uma evidência, existe uma possibilidade em opções dracut cmdline para desligar fsck
:
rd.skipfsck
skip fsck for rootfs and /usr. If you’re mounting /usr read-only and the init system performs fsck before remount, you might want to use this option to avoid duplication
Implementações do initramfs
Um initramfs dinâmicos (baseados no udev) e flexíveis podem ser implementados usando o infra-estrutura do sistema . O Dracut é uma implementação desse tipo e provavelmente há distros lá fora que querem escrever seus próprios.
Outra opção seria um initramfs baseado em script . Nesse caso, busybox ash
é usado como um shell de script e talvez até mesmo substituindo udev
por mdev
, ou talvez apenas completamente estático. Eu encontrei algumas pessoas sendo descartadas para um busybox
shell devido a algum erro fsck int mint, então esta implementação pode se aplicar a hortelã.
Se você realmente quiser ter certeza, tente descompactar o arquivo initramfs em /boot
e veja o que está lá. Também pode ser possível vê-lo montado em /initramfs
.