0

0

random: crng init 延迟的 rng-tools 服务启动顺序调整

冷炫風刃

冷炫風刃

发布时间:2026-01-29 14:09:59

|

342人浏览过

|

来源于php中文网

原创

rng-tools 启动延迟因过早尝试向未就绪的 /dev/random 注入熵所致,应通过 systemd 依赖 systemd-random-seed-load.service 确保等待 crng init done 信号后再启动。

random: crng init 延迟的 rng-tools 服务启动顺序调整

为什么 rng-tools 启动时总报 crng init done 延迟?

Linux 内核在完成 CSPRNG(crng)初始化前,会阻塞对 /dev/random 的阻塞式读取。而 rng-tools 默认启动时立即尝试向 /dev/random 注入熵,若此时内核尚未输出 random: crng init done,服务就会卡住或反复重试,表现为启动超时、Failed to start rng-tools.service 或日志里持续出现 failed to read from entropy source

如何让 rng-tools 等到 crng init done 再启动?

关键不是“延迟几秒”,而是等待内核明确就绪信号。推荐用 systemd 的 After=systemd-random-seed-load.service + Wants=systemd-random-seed-load.service,因为该 service 本身已定义了 ExecStartPost=/bin/sh -c 'while ! grep -q "crng init done" /proc/sys/kernel/random/entropy_avail 2>/dev/null; do sleep 0.1; done' 类似逻辑(实际由内核导出的 /proc/sys/kernel/random/crng_readyentropy_avail 判断)。

实操建议:

  • 编辑 /etc/systemd/system/rng-tools.service.d/wait-for-crng.conf(新建目录和文件)
  • 写入以下内容:
[Unit]
After=systemd-random-seed-load.service
Wants=systemd-random-seed-load.service

然后执行 systemctl daemon-reload && systemctl restart rng-tools

rng-tools 启动失败时该查哪些日志和状态?

不要只看 journalctl -u rng-tools,容易漏掉前置依赖。必须组合检查:

  • journalctl -b | grep -i "random\|crng" —— 找最早一条 random: crng init done 出现时间
  • cat /proc/sys/kernel/random/crng_ready —— 返回 1 表示就绪,0 表示未就绪(比 entropy_avail 更直接)
  • systemctl list-dependencies --reverse rng-tools.service —— 确认是否真依赖了 systemd-random-seed-load
  • 如果用了 rngd -f -r /dev/hwrng 手动运行,注意加 -q(quiet)避免干扰判断,且 -r 指定的设备必须真实存在(ls /dev/hwrng* 验证)

ARM 平台或无硬件 RNG 的机器要特别注意什么?

这类机器往往熵池填充慢,crng init done 可能晚于所有用户空间服务启动完成。单纯靠 After= 不够,还需补充熵源:

  • 确认内核编译启用了 CONFIG_RANDOM_TRUST_CPU=y(Intel/AMD)或 CONFIG_RANDOM_TRUST_BOOTLOADER=y(ARM),否则即使有 CPU RNG 也不会被信任
  • 安装 haveged 作为软件熵源:它不依赖 crng 就能工作,且会主动唤醒内核熵池;但注意不能和 rng-tools 同时喂同一个设备(如都往 /dev/random 写),否则可能冲突
  • rng-tools/etc/default/rng-tools 中,RNGDOPTIONS="--hrng-device=/dev/hwrng --fill-watermark=90%" 这类配置在无硬件设备时会导致启动失败,务必注释或删掉 --hrng-device

最常被忽略的是:crng init done 不代表熵值高,只代表密钥已生成、可安全阻塞读取。低熵环境仍需持续喂入,但服务启动那一刻,等这个信号就够了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

236

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

458

2024.03.01

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

95

2023.09.25

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

223

2023.12.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1415

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

706

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

295

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

782

2023.07.05

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号