现象:板子上电后,调试打印信息中出现“random: crng init done”,并且初始化完成比较慢,会导致其他应用阻塞
三、分析:随机数生成器RNG的初始化需要足够的熵才能完成,熵的来源是来自/dev/random,而/dev/random的random pool依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用。
四、解决:为/dev/random增加一个来自硬件的熵源,即通过rng-tools将/dev/hwrng的熵提供给/dev/random。
(1)编辑build/conf/local.conf
(2)在最后加上IMAGE_INSTALL_append += "rng-tools"
(3)bitbake core-image-base 编译进rootfs,重新烧录,上电即可解决
五、备注:安装rng-tools前后可以通过指令cat /proc/sys/kernel/random/entropy_avail查看系统熵值的变化,可以看到,安装rng-tools后系统熵值飙升至3000以上

 


​​

/dev/random 和 /dev/urandom 的原理_Linux开发那些事儿的博客-/dev/./urandom​​

小结
本文主要介绍了 Linux 下 /dev/random 和 /dev/urandom 两种随机数生成器的原理以及区别,关于它们更细节的知识请自行查阅 man 文档 或 参考下面的链接

​https://eprint.iacr.org/2006/086.pdf​​​ https://hal.inria.fr/hal-00738638/document