Eu tenho um sistema que trava quando o systemd tenta montar um sistema de arquivos. Ele falha quando uma dependência atinge o tempo limite. A dependência é dev-disk-by\x2dlabel-cb\x2drootfs.device
onde está o dispositivo que está sendo montado /dev/disk/by-label/cb-rootfs
.
systemd[1]: dev-disk-by\x2dlabel-cb\x2drootfs.device: Job dev-disk-by\x2dlabel-cb\x2drootfs.device/start timed out.
Nada me impede de montar o sistema com:
mount -av
Portanto, neste caso, parece que o systemd está esperando a coisa errada, já que o dispositivo está obviamente lá e pronto para ser montado.
O que pode tornar isso complexo é que o sistema de arquivos raiz é um overlayfs envolvendo o mesmo dispositivo. Em termos simples, o initramfs está fazendo isso:
mount /dev/disk/by-label/cb-rootfs /host
mount -o loop /host/rootfs/foo.squashfs /ro
mount -t overlay overlay lowerdir=/ro,upperdir=/host/writable,workdir=/host/workdir /root
/root
então o sistema de arquivos raiz está pronto para o systemd iniciar a montagem /etc/fstab
:
Então /etc/fstab
tenta montar
/dev/disk/by-label/cb-rootfs /host ext4 defaults 0 0
Como eu disse, posso mount -av
e o Linux não tem absolutamente nenhum problema em montar `/dev/disk/by-label/cb-rootfs. Mas o systemd aparentemente está esperando indefinidamente que fique pronto de alguma forma.
O que o systemd está esperando? como posso evitar esperar assim?
Em resposta à minha pergunta nas listas de discussão do systemd, recebi esta resposta :
No meu caso, descobriu-se que o udev não estava instalado corretamente ou corrompido, portanto, apesar do dispositivo estar disponível em /dev, o systemd ainda estava aguardando um sinal do udev.
Simplesmente reinstalar o udev resolveu o problema para mim.