今天遇到一个问题,在执行某些操作后,发现经常报“read_urandom: /dev/urandom: open failed: No such file or directory”这个错误。后来查看/dev,发现/dev下的设备都不见了,查看日记记录发现。我误操作在没有解挂临时dev时,就删除了临时目录。我做了如下操作:
mkdir /home/tmp/dev
mount --bind /dev /home/tmp/dev
rm -rf /home/tmp
在没有解挂临时dev时,我就删除了tmp目录,因为/dev和/home/tmp/dev已经绑定,删除dev目录实际就删除了系统/dev目录,由于系统/dev目录下有几个设备正在被使用,不能删除,所以/dev目录被保留下来,但是/dev目录下的大多数设备都已经被删除了。
上网搜索下,dev设备被误删应该如何解决,很多网友说重启就可以了,/dev下的设备是可以重建的。于是我reboot重启了,结果报出如下错误,重启都不行。
linux-UMLhEm:/tmp/tmp.UuZ8TIdxwa # reboot
Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.TimedOut: Activation of org.freedesktop.PolicyKit1 timed out (g-dbus-error-quark, 20)
Could not watch jobs: Connection timed out
Failed to talk to init daemon.
查看messages记录如下:
2018-02-09T14:19:34.919559+08:00|crit|systemd[-]|Assertion 'sd_id128_randomize(&id) >= 0' failed at src/core/dbus.c:685, function bus_on_connection(). Aborting.
2018-02-09T14:19:34.935271+08:00|emerg|systemd[-]|Caught <ABRT>, dumped core as pid 5496.
2018-02-09T14:19:34.935506+08:00|emerg|systemd[-]|Freezing execution.
2018-02-09T14:20:00.045113+08:00|info|dbus-daemon[-]|dbus[931]: [system] Failed to activate service 'org.freedesktop.systemd1': timed out
原来是dev下的random urandom被删除后,影响到systemd,导致systemd挂了。这种情况下,只能强制重启,通过运行 reboot -nf
命令,这样重启时可以指定跳过 init 的处理和 sync 操作,重启后问题解决,系统恢复正常。