技术解析

buildroot 构建的系统,启动后会卡住,直到出现 random: nonblocking pool is initialized 才能进入系统
0
2021-06-15 14:33:42
idczone
  • 可以确定的是在我把 openssh 编译进文件系统之后出现的这个现象.
  • 发现是在 rcS 脚本启动 SSH 服务的时候卡住的
  • 在这之前能直接进入系统,但是也会出现 random: nonblocking pool is initialized

这个 random: nonblocking pool is initialized 到底是什么东西 跟 SSH 又有啥关系?


盲猜和 /dev/random urandom 有关,考虑搞一些用户空间的程序加快熵的生成。
嵌入式系统的随机数来源比较少,不像桌面系统

什么 CPU ?多少 RAM ?是性能不行吧。

如果是随机数相关的话,参考下
://wiki.archlinux.org/index.php/Random_number_generation

缺熵
可以考虑安装 haveged

添加启动参数 -Djava.security.egd=file:/dev/urandom
几年前在客户的 vmware 环境遇到过类似的问题( Oracle JDBC 连接很慢,非常慢)

这个是在 boot rootfs 启动 ssh 中调用了 getrandom()这个系统调用时候卡住的,装一个 systemd 可以解决。
比较麻烦的方法就是装一个 EGD 这样的生成程序,然后重新编译 openssh,--with-egd-pool

装了 EGD 可能还需要调整一下启动的优先级啥的,所以还是在你构建系统的时候把 systemd 加进去省事~

所以为啥不用 dropbear 呢,都上 buildroot 了,我自己构建的整套也每次开机都用这个打印,也照样用

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服