在 raspbian GNU/Linux 8 系统上,我在启动过程中收到以下错误:
ifplugd(eth0)[214]: Executing '/etc/ifplugd/ifplugd.action eth0 up'.
ifplugd(eth0)[214]: client: /sbin/ifup: failed to open lockfile /run/network/.ifstate.lock: No such file or directory
ifplugd(eth0)[214]: client: run-parts: /etc/ifplugd/action.d//ifupdown exited with return code 1
ifplugd(eth0)[214]: Program execution failed, return value is 1.
随后,ifplugd 重复该操作并成功。我怀疑最初的失败是由于 /run 未安装。我的问题是:
这是正常行为还是错误/配置错误? ifplugd 运行时 systemd-fsck 仍在运行,所以 ifplugd 似乎有点早?我可以忽略这个问题吗?
挂载 /run 似乎是 /etc/fstab 不处理的特殊情况,因为它需要很早就出现。那么哪个部分控制/run的挂载呢?这是由systemd完成的吗?如果是的话,systemd 的哪一部分?
答案1
/run
已经安装得够早了。
你的诊断有误。
/run
systemd
由作为进程 #1 运行的程序安装。它是 systemd 在开始启动服务和目标之前安装的所谓“API 文件系统”之一。事实上,systemd 允许/run
在进程 #1 执行程序本身之前由引导程序的 initrd 阶段安装systemd
。无论问题的原因是什么,都不是因为/run
未安装。
鉴于问题出在 中的文件上/run/network/
,实际上您的第一个想法应该是/run/network/
此时目录是否存在于引导程序中?引出这个问题什么创建/run/network/
目录?导致networking
运行脚本的服务以及它是在运行脚本的服务/etc/init.d/networking
之前还是之后运行。要获得答案,请参阅您正在查看的日志。 ☺ifplugd
/etc/init.d/ifplugd
是的,该ifplugd
服务依赖于networking
首先启动的服务。不,他们的 van Smoorenburgrc
脚本实际上并未对这种顺序进行编码。
进一步阅读
- API文件系统。 Freedesktop.org。
- 初始化接口。 Freedesktop.org。
- https://unix.stackexchange.com/a/233581/5132