通过 /dev/random 和 /dev/urandom 可以获取由linux内核产生的随机数。下面的介绍将帮助那些使用 random 和 urandom 设备的程序(例如:OpenSSH)的运行。
在linux系统刚刚启动的时候,没有太多的互动操作,熵比较低,所以用来计算随机数的 数据还处于一个可以预测的状态。这个就使linux每次产生的随即数有可能是相同的。为了克服这个现象, 你需要在启动的时候调用上次关机时的熵比较高的信息,下面的init.d 脚本帮助自动完成这一系列工作。
cat > /etc/rc.d/init.d/random << "EOF" #!/bin/sh # $rc_base/init.d/random 开始 # 基于 sysklogd 脚本( LFS-3.1 或者更早版本 ) # Rewritten by Gerard Beekmans - [email protected] # Random script elements by Larry Lawrence source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Initializing kernel random number generator..." if [ -f /var/tmp/random-seed ]; then cat /var/tmp/random-seed >/dev/urandom fi dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null evaluate_retval ;; stop) echo "Saving random seed..." dd if=/dev/urandom of=/var/tmp/random-seed count=1 &>/dev/null evaluate_retval ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac # $rc_base/init.d/random 结束 EOF chmod 755 /etc/rc.d/init.d/random |
在rc.d的相关目录中建立符号链接
cd /etc/rc.d/init.d && ln -sf ../init.d/random ../rc0.d/K45random && ln -sf ../init.d/random ../rc2.d/S25random && ln -sf ../init.d/random ../rc3.d/S25random && ln -sf ../init.d/random ../rc4.d/S25random && ln -sf ../init.d/random ../rc5.d/S25random && ln -sf ../init.d/random ../rc6.d/K45random |