initrandom revision 98184
198184Sgordon#!/bin/sh 298184Sgordon# 398184Sgordon# $FreeBSD: head/etc/rc.d/initrandom 98184 2002-06-13 22:14:37Z gordon $ 498184Sgordon# 598184Sgordon 698184Sgordon# PROVIDE: initrandom 798184Sgordon# REQUIRE: initdiskless 898184Sgordon# BEFORE: disks 998184Sgordon# KEYWORD: FreeBSD 1098184Sgordon 1198184Sgordon. /etc/rc.subr 1298184Sgordon 1398184Sgordonname="initrandom" 1498184Sgordonstart_cmd="initrandom_start" 1598184Sgordonstop_cmd=":" 1698184Sgordon 1798184Sgordonfeed_dev_random() 1898184Sgordon{ 1998184Sgordon if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then 2098184Sgordon cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null 2198184Sgordon fi 2298184Sgordon} 2398184Sgordon 2498184Sgordoninitrandom_start() 2598184Sgordon{ 2698184Sgordon echo -n 'Entropy harvesting:' 2798184Sgordon 2898184Sgordon if checkyesno harvest_interrupt; then 2998184Sgordon if [ -w /dev/random ]; then 3098184Sgordon ${SYSCTL_W} kern.random.sys.harvest.interrupt=1 >/dev/null 3198184Sgordon echo -n ' interrupts' 3298184Sgordon fi 3398184Sgordon fi 3498184Sgordon 3598184Sgordon if checkyesno harvest_ethernet; then 3698184Sgordon if [ -w /dev/random ]; then 3798184Sgordon ${SYSCTL_W} kern.random.sys.harvest.ethernet=1 >/dev/null 3898184Sgordon echo -n ' ethernet' 3998184Sgordon fi 4098184Sgordon fi 4198184Sgordon 4298184Sgordon if checkyesno harvest_p_to_p; then 4398184Sgordon if [ -w /dev/random ]; then 4498184Sgordon ${SYSCTL_W} kern.random.sys.harvest.point_to_point=1 >/dev/null 4598184Sgordon echo -n ' point_to_point' 4698184Sgordon fi 4798184Sgordon fi 4898184Sgordon 4998184Sgordon echo '.' 5098184Sgordon 5198184Sgordon # First pass at reseeding /dev/random. 5298184Sgordon # 5398184Sgordon case ${entropy_file} in 5498184Sgordon [Nn][Oo] | '') 5598184Sgordon ;; 5698184Sgordon *) 5798184Sgordon if [ -w /dev/random ]; then 5898184Sgordon feed_dev_random "${entropy_file}" 5998184Sgordon fi 6098184Sgordon ;; 6198184Sgordon esac 6298184Sgordon 6398184Sgordon # XXX temporary until we can get the entropy 6498184Sgordon # harvesting rate up 6598184Sgordon # Entropy below is not great, 6698184Sgordon # but better than nothing. 6798184Sgordon ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ 6898184Sgordon | dd of=/dev/random bs=8k 2>/dev/null 6998184Sgordon cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null 7098184Sgordon} 7198184Sgordon 7298184Sgordonload_rc_config random 7398184Sgordonrun_rc_command "$1" 74