为什么几乎每个命令都试图读取 urandom?

Why almost every command is trying to read urandom?

在嵌入式系统的最新内核 (5.x) / rootfs 中(mips/MT7628/busybox,如果重要的话)我看到了 TONS of:

random: mount: uninitialized urandom read (4 bytes read)
random: fsck.vfat: uninitialized urandom read (4 bytes read)
random: tar: uninitialized urandom read (4 bytes read)
...

过了一会儿(~10 分钟!!)我终于看到了:

[  562.001438] random: crng init done

两个问题:

  1. 为什么初始化需要这么长时间/dev/urandom?
  2. 出于什么原因 mounttar 应该首先尝试使用它?

注意:旧内核 (3.x) 没有这个问题。

答案来自另一个来源(感谢 Alessandro Rubini);我在这里关联它以供将来参考。

  1. 如果在编译内核时选择了"cryptographically strong"个随机数,这是预料之中的(没有专用硬件的随机化,仅使用中断时序需要很多时间);如果不需要(如我的情况),请取消选择 "cryptographic RNG"。
  2. 这与一般的实际命令或特定的 Barebox 无关;加载程序似乎随机化了 Virtual Space 中的堆栈位置,以加强对缓冲区溢出的利用。