环境:嵌入式 ubuntu 系统
芯片方案: aarch64
系统本来是可以正常 reboot 的,但之后由于需要,默认启动了 rngd -r /dev/urandom 进程。在此之后,reboot 就会卡住
下面是串口 log 的前后对比,猜测和网络有关
开启 rngd 之前,能够正常 reboot,串口部分 log 如下
[ OK ] Unmounted /run/user/1000.
[ OK ] Reached target Unmount All Filesystems.
[ OK ] Stopped User Runtime Directory /run/user/1000.
[ OK ] Removed slice User Slice of UID 1000.
Stopping Permit User Sessions...
[ OK ] Stopped Permit User Sessions.
[ OK ] Stopped target Network. #### 注意这里,出现异常时没有这个打印
[ OK ] Stopped target Remote File Systems. #### 注意这里,出现异常时,打印卡在这里
Stopping ifup for eth0...
Stopping Raise network interfaces...
Stopping Network Name Resolution...
Stopping WPA supplicant...
。。。后续还有些 log
启动 rngd 之后,reboot 会被卡住,打印 log 如下
[ OK ] Unmounted /run/user/1000.
[ OK ] Reached target Unmount All Filesystems.
[ OK ] Stopped User Runtime Directory /run/user/1000.
[ OK ] Removed slice User Slice of UID 1000.
Stopping Permit User Sessions...
[ OK ] Stopped Permit User Sessions.
[ OK ] Stopped target Remote File Systems. #### 注意这里,此处出现异常,串口卡住不动了
猜测是 rngd 占用了网络,导致在关闭网络的时候卡住了。请问这种情况应该怎么解决呢
如果你是确定 rngd -r /dev/urandom 影响的,就基于这个因素来排查解决
比如
去掉开机运行rngd -r /dev/urandom,重启后再看是否能reboot
手动运行rngd -r /dev/urandom, 看是否能reboot,
手动运行rngd -r /dev/urandom,再手动停止改进程,看是否能reboot,如果这个可以,就配一下服务,关机前先关这个进程
开机的 Scripts 中加入:
rngd -b -o /dev/random -r /dev/urandom