]> git.ipfire.org Git - ipfire-2.x.git/blob - src/initscripts/system/random
Merge remote-tracking branch 'origin/master' into aarch64
[ipfire-2.x.git] / src / initscripts / system / random
1 #!/bin/sh
2 . /etc/sysconfig/rc
3 . $rc_functions
4
5 if [ -e /proc/sys/kernel/random/poolsize ]; then
6 poolsize=$(</proc/sys/kernel/random/poolsize);
7 poolsize=$(expr $poolsize / 8 );
8 else
9 poolsize=512;
10 fi
11
12 case "$1" in
13 start)
14
15 #CRNG init need 128bit so wait until there is more)
16 avail=$(</proc/sys/kernel/random/entropy_avail)
17 while [ $avail -lt 130 ]; do
18 avail=$(</proc/sys/kernel/random/entropy_avail)
19 boot_mesg -n "\rWait for entropy: $avail/130 "
20 # Generate some disc access to gather entropy
21 echo avail > /var/tmp/random-tmpfile
22 sync
23 rm -f /var/tmp/random-tmpfile
24 done;
25
26 boot_mesg "\rInitializing kernel random number generator..."
27 if [ -f /var/tmp/random-seed ]; then
28 /bin/cat /var/tmp/random-seed >/dev/urandom
29 fi
30 touch /var/tmp/random-seed
31 chmod 600 /var/tmp/random-seed
32 /bin/dd if=/dev/urandom of=/var/tmp/random-seed \
33 count=1 bs=$poolsize &>/dev/null
34 evaluate_retval
35 ;;
36
37 stop)
38 boot_mesg "Saving random seed..."
39 touch /var/tmp/random-seed
40 chmod 600 /var/tmp/random-seed
41 /bin/dd if=/dev/urandom of=/var/tmp/random-seed \
42 count=1 bs=$poolsize &>/dev/null
43 evaluate_retval
44 ;;
45
46 *)
47 echo "Usage: $0 {start|stop}"
48 exit 1
49 ;;
50 esac
51
52 # End $rc_base/init.d/random