rng-tools 在arm linux(uclibc 库)上实现交叉编译 用于解决linux系统熵严重不足的问题

由于使用tunnel隧道工具进行加密传输,但是运行的时候,提示系统熵不足,导致程序无法运行,解决方法就是使用rng-tools的rngd来自动增加系统的熵,尝试了rng-tools交叉编译,发现只支持GNU libc版本的arm-linux-gnueabi-gcc,并不支持uclibc版本的arm-linux-gcc交叉编译,所以重新修改了实现。

如果直接使用原版本编译 rng-tools 6.5,就会提示编译错误argp.h: No such file or directory 主要是main参数的解析API部分不兼容,所以我们重新修改了rng-tools 6.5的实现,下载连接在这里 rng-tools,编译方法如下:

先编译libsysfs,由于rng-tools需要依赖这个包:

libsysfs下载地址:https://sourceforge.net/projects/linux-diag/files/sysfsutils/2.1.0/sysfsutils-2.1.0.tar.gz/download

#gnuzip sysfsutils-2.1.0.tar.gz
#cd sysfsutils-2.1.0
#./configure --host=arm-linux --prefix=$PWD/install
#make
#make install

至此,就会在sysfsutils-2.1.0/install目录下生成所有的库文件

接下来我们编译rng-tools,注意sysfsutils-2.1.0和rng-tools在同一个目录

#git clone https://github.com/actg/rng-tools.git
#cd rng-tools
#export LDFLAGS=-L../sysfsutils-2.1.0/install/lib/
#export CPPFLAGS=-I../sysfsutils-2.1.0/install/include
#./configure --host=arm-linux --prefix=$PWD/install --without-libgcrypt --without-nistbeacon
#make
#make install

至此,就会在sysfsutils-2.1.0/install目录下生成rngd可执行文件,使用方法如下:

rngd使用方法:

  • 如果你的硬件支持/dev/hwrng硬件真随机数,那么直接运行就可以自动默认设置为后台daemon程序,会增加系统的熵值,在很多例如加密的应用中非常有用。
/sbin/rngd
  • 如果你的硬件不支持/dev/hwrng真随机数,那么使用linux的伪随机数也可以,使用方法:
/sbin/rngd -r/dev/urandom

查看系统熵值是多少

cat /proc/sys/kernel/random/entropy_avail

你可能感兴趣的:(嵌入式软件)