46 lines
		
	
	
		
			861 B
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			861 B
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/sbin/runscript
 | |
| # Copyright 2007-2008 Roy Marples
 | |
| # All rights reserved
 | |
| 
 | |
| urandom_seed=${urandom_seed:-${URANDOM_SEED:-/var/run/random-seed}}
 | |
| 
 | |
| description="Initializes the random number generator."
 | |
| 
 | |
| depend()
 | |
| {
 | |
| 	need localmount
 | |
| }
 | |
| 
 | |
| save_seed()
 | |
| {
 | |
| 	local psz=1
 | |
| 
 | |
| 	if [ -e /proc/sys/kernel/random/poolsize ]; then
 | |
| 		psz=$(($(cat /proc/sys/kernel/random/poolsize) / 4096))
 | |
| 	fi
 | |
| 
 | |
| 	(	# sub shell to prevent umask pollution
 | |
| 		umask 077
 | |
| 		dd if=/dev/urandom of="${urandom_seed}" count=${psz} 2>/dev/null
 | |
| 	)
 | |
| }
 | |
| 
 | |
| start()
 | |
| {
 | |
| 	[ -c /dev/urandom ] || return
 | |
| 	if [ -f "${urandom_seed}" ]; then
 | |
| 		ebegin "Initializing random number generator"
 | |
| 		cat "${urandom_seed}" > /dev/urandom
 | |
| 		eend $? "Error initializing random number generator"
 | |
| 	fi
 | |
| 	rm -f "${urandom_seed}" && save_seed
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| stop()
 | |
| {
 | |
| 	ebegin "Saving random seed"
 | |
| 	save_seed
 | |
| 	eend $? "Failed to save random seed"
 | |
| }
 |