作为数据分区,我有一个多磁盘btrfs文件系统。我的根磁盘是ext4
法斯达:
UUID=290624c6-6b95-41fd-94a1-923ebca64b83 / ext4 rw,relatime,data=ordered 0 1
/dev/sdc /mnt/btrfs btrfs rw,relatime,compress-force=zlib,autodefrag 0 0当我启动机器时,它会等待1m30秒的消息。
A start job is running for dev-sdc.device在那之后
Dependency failed for /mnt/btrfs当我登录的时候我可以
mount /mnt/btrfs
systemctl default它会成功的。系统将正常启动。
首先,我想我可能需要用mkinitcpio钩子做一些事情,但是此页说:
Arch的默认mkinitcpio包包含一个标准的btrfs钩子,这足以获得多设备(RAID)支持。除此之外,内核可以在没有任何钩子的情况下引导单个设备btrfs根。
所以一切都应该从盒子里出来。
为什么它不起作用,我该怎么做才能修好它?
发布于 2014-03-22 11:15:44
两条评论。首先,尝试通过Label或UUID来安装而不是设备。设备名称有时会更改。
否则,btrfs在了解计算机上的btrfs文件系统之前需要brtfs device scan调用。我希望arch能够处理这一问题,但直到我为此创建了一个服务文件并将其放入/etc/systemd/system/local-fs-pre.target.wants/btrfs-dev-scan.service中,它才起作用:
[Unit]
Description=Btrfs scan devices
Before=local-fs-pre.target
DefaultDependencies=false
[Service]
Type=oneshot
ExecStart=/usr/bin/btrfs device scan
[Install]
WantedBy=local-fs-pre.targetDefaultDependencies=false是必要的,否则它会破坏引导。(非拱形用户可能将btrfs定位于/sbin而不是/usr/bin)
这就是应该由btrfs钩子来处理的东西(我后来就知道了),但是仍然有可能会出现问题。
然而,您可能还有其他问题。Dependency failed建议一些早期的所需服务没有启动。我不知道这可能是什么,你应该检查你的journalctl -b并搜索依赖投诉,它通常会说明到底遗漏了什么。或者至少,您得到了一个失败的依赖链--依赖故障可能会传播.
您还可以生成systemd-analyze plot > boot.svg,并检查究竟按照什么顺序引导的序列。你可以猜到到底出了什么问题--谁在等谁?systemctl --failed是怎么说的?
发布于 2014-07-28 08:45:48
有一个用于mkinitcpio的钩子,您可以将其包括进来以确保
btrfs device scan将在根文件系统挂载之前在引导期间运行。
您可以通过修改/etc/mkinitcpio.conf、搜索行HOOKS和将btrfs放在udev前面来包括这个钩子。
修改后,请确保使用mkinitcpio -p linux重新生成initramfs
Arch实际上建议使用udev钩子,但是我也遇到了同样的问题,并以这种方式进行了修复。
https://unix.stackexchange.com/questions/120907
复制相似问题