如何在已Root的Android设备上安装Haveged与RNGD?
在Root权限的Android设备上安装rngd与haveged指南
嘿,我来给你梳理下在root后的Android上装rngd和haveged的具体步骤——这俩工具都是用来补充系统熵池的:rngd靠硬件随机数生成器填充/dev/random,haveged则通过系统活动生成随机数,对需要高熵值的场景特别有用。
前置准备
- 已经获取Root权限的Android设备
- 可选但推荐:装个Termux(安卓端的终端模拟器,敲命令超方便)或者Magisk(用来装模块,实现开机自动运行服务)
方法一:通过Termux安装(最简单省心)
Termux自带完整的Linux包管理体系,几步就能搞定:
- 打开Termux,先更新软件源和已装包:
pkg update && pkg upgrade - 安装rng-tools(里面包含rngd):
pkg install rng-tools - 安装haveged:
pkg install haveged - 启动服务(记得加
su切换到Root权限):- 启动rngd:不同设备的硬件随机设备路径可能不一样,常见的是
/dev/hw_random,先试试这个:
如果报错,用su -c rngd -r /dev/hw_randomfind /dev -name "*random*"找找你的设备对应路径,替换掉就行。 - 启动haveged:
-w参数用来设置熵池最低水位,设1024足够日常使用:su -c haveged -w 1024
- 启动rngd:不同设备的硬件随机设备路径可能不一样,常见的是
- 设置开机自启:不想每次开机手动启动的话,在Magisk的
/data/adb/service.d/目录下创建启动脚本:
先创建脚本文件:
粘贴以下内容:su -c nano /data/adb/service.d/rngd_haveged.sh
保存退出后给脚本加执行权限:#!/system/bin/sh rngd -r /dev/hw_random & haveged -w 1024 &
下次开机就会自动启动这俩服务啦。su -c chmod 755 /data/adb/service.d/rngd_haveged.sh
方法二:通过Magisk模块安装(无需Termux)
如果不想折腾终端命令,用Magisk模块是最省事的选择:
- 找一个适配你设备架构(比如arm64、armv7)的rngd+haveged Magisk模块包
- 打开Magisk Manager,进入「模块」页面,点击「从本地安装」,选中下载的模块压缩包
- 重启设备,模块会自动把工具集成到系统,开机后自动启动服务
- 验证是否运行:打开终端(或Magisk内置终端)输入以下命令,能看到对应进程就说明没问题:
su -c ps | grep -E "rngd|haveged"
方法三:手动编译安装(适合自定义需求)
如果你的设备架构比较特殊,上面的方法都不适用,就自己编译源码:
- 先在Termux里安装编译工具链:
pkg install clang make autoconf automake libtool - 下载rng-tools和haveged的官方源代码包
- 编译rng-tools:
解压源码包后进入目录,配置编译环境(--host参数要对应你的设备架构,比如arm64用aarch64-linux-android,armv7用arm-linux-androideabi):tar xvf rng-tools-x.x.x.tar.gz cd rng-tools-x.x.x ./configure --host=aarch64-linux-android make su -c make install - 编译haveged的步骤和上面类似:
tar xvf haveged-x.x.x.tar.gz cd haveged-x.x.x ./configure --host=aarch64-linux-android make su -c make install - 启动和自启设置和方法一一致即可。
小提示
- 验证熵池效果:可以用
cat /proc/sys/kernel/random/entropy_avail查看当前熵池大小,启动haveged后数值应该会快速上升到较高水平 - 如果rngd启动失败,大概率是硬件随机设备路径不对,多找找设备里的
*random*设备文件就行
内容的提问来源于stack exchange,提问作者user243084




