我的系统在 systemd 尝试挂载文件系统时卡住了。它因依赖项超时而失败。依赖关系是dev-disk-by\x2dlabel-cb\x2drootfs.device
正在安装的设备所在的位置/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.
没有什么可以阻止我安装系统:
mount -av
因此,在这种情况下,systemd 似乎正在等待错误的事情,因为设备显然已经在那里并准备好安装。
可能使事情变得复杂的是根文件系统是涉及同一设备的overlayfs。简单来说,initramfs 是这样做的:
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
那么根文件系统是否已准备好让 systemd 开始挂载/etc/fstab
:
然后/etc/fstab
尝试挂载
/dev/disk/by-label/cb-rootfs /host ext4 defaults 0 0
正如我所说,我可以mount -av
,并且 Linux 挂载 `/dev/disk/by-label/cb-rootfs 绝对没有问题。但 systemd 显然正在无休止地等待它以某种方式准备就绪。
systemd 还在等什么?我怎样才能避免这样等待呢?
为了回答我关于 systemd 邮件列表的问题,我得到了这样的回复:
就我而言,事实证明 udev 未正确安装或已损坏,因此尽管 /dev 中的设备可用,但 systemd 仍在等待来自 udev 的信号。
只需重新安装 udev 就可以解决我的问题。