Mar*_*ter 7 boot init-script syslog random
CPU是AMD GX-412TC SOC:
\n\n\nGX-412TC GE412TIYJ44JB 4 6W 2MB 1.0GHz/\n1.4GHz 不适用 DDR-1333 0-90\xc2\xb0C
\n
其中没有rdrand
:
grep rdrand /proc/cpuinfo\n# nothing\n
Run Code Online (Sandbox Code Playgroud)\n我在syslog
机器启动后看到以下消息:
kernel: random: dd: uninitialized urandom read (512 bytes read)\nkernel: random: cryptsetup: uninitialized urandom read (32 bytes read)\n
Run Code Online (Sandbox Code Playgroud)\n这些消息到底意味着什么?我能做什么?
\n这是否意味着dd
并cryptsetup
尝试读取/dev/urandom
,但没有足够的熵?
我正在使用haveged
守护程序,但它是在引导过程后期启动的,在出现此消息之后。
这是我的引导脚本启动顺序:
\n/etc/rcS.d/S01hostname.sh\n/etc/rcS.d/S01mountkernfs.sh\n/etc/rcS.d/S02mountdevsubfs.sh\n/etc/rcS.d/S03checkroot.sh\n/etc/rcS.d/S04checkfs.sh\n/etc/rcS.d/S05mountall.sh\n/etc/rcS.d/S06bootmisc.sh\n/etc/rcS.d/S06procps\n/etc/rcS.d/S06urandom\n/etc/rcS.d/S07crypto-swap\n/etc/rc2.d/S01haveged\n/etc/rc2.d/S01networking\n/etc/rc2.d/S04rsyslog\n/etc/rc2.d/S05cron\n/etc/rc2.d/S05ssh\n
Run Code Online (Sandbox Code Playgroud)\n系统日志中的消息来自这两个脚本:
\n/etc/rcS.d/S06urandom -> dd\n/etc/rcS.d/S07crypto-swap -> cryptsetup\n
Run Code Online (Sandbox Code Playgroud)\n应该haveged
先开始urandom
?
我使用的是 Debian 10。
\n另外,我应该补充一点,这台机器是裸板,没有键盘。唯一的接口是串行控制台。haveged
我认为这会对可用熵产生影响,这也是我首先安装的原因。如果没有haveged
,则sshd
守护进程将在几分钟内不会启动,因为它没有足够的熵。
为了让haveged工作,它必须与你的内核\xe2\x80\x94兼容,有一个问题haveged在>=5.x的内核版本中没有做任何事情,看看haveged仍然有用/相关吗?GitHub 上#57 。
\n维护者很友善地重新引入了功能,但必须发布这些补丁,然后首先将其放入各种发行版中......旧版本要么根本无法启动,要么实际上不会做任何事情如果它正在运行(使用 检查strace
),因为内核的熵池似乎不再缺少 \xe2\x80\x94,但 crng init 由于某种原因仍然需要时间。
它还必须很早就运行,因此如果您正在使用 initramfs,那么您还必须在使用随机设备之前一段时间在 initramfs 中开始运行。在传统的 init 系统中,haveged 应该在/proc
/sys
/dev
可用时立即运行。
我不确定 hasged 到底需要多长时间才能将熵发送到内核......它必须首先自行收获随机性,并且还对其运行一些质量测试。在我的上一次测试中(使用已修补的haveged),启动haveged和内核报告之间有大约半秒的延迟random: crng init done
。
除了 haged 之外,您还可以考虑保存/恢复随机种子,如果您有网络,一点流量也可能有助于内核收集一些熵。
\n