#8024 NORM 8.2.1: Browse and Firefox hang on startup until cursor is exercised.
Zarro Boogs per Child
bugtracker at laptop.org
Fri Sep 26 17:05:48 EDT 2008
#8024: Browse and Firefox hang on startup until cursor is exercised.
------------------------+---------------------------------------------------
Reporter: tomeu | Owner: cscott
Type: defect | Status: new
Priority: normal | Milestone: 8.2.1
Component: kernel | Version: Development build as of this date
Resolution: | Keywords:
Next_action: diagnose | Verified: 0
Blockedby: 8089 | Blocking:
------------------------+---------------------------------------------------
Comment(by gnu):
The problem is that the 1024 bytes of shiny random goodness that we dump
into the pool as documented above by cscott, DO NOT UPDATE THE ENTROPY
ESTIMATE. Anyone can dump data into /dev/random or /dev/urandom, but
though this stirs the pool, it doesn't change the kernel's estimate of how
much entropy is in the pool (because /dev/random has no idea whether the
data you're feeding it is random or carefully crafted).
The Linux random number design *disconnects* the hardware randomness
sources from the kernel's /dev/random, and requires a daemon to
periodically grab some hardware randomness, test it for statistical
properties, and push it into /dev/random. That daemon is rngd from the
rng-utils package.
So, the right term fix is to install and run rngd, which is a tiny daemon
that, if properly configured (with a 0 timeout), should never wake up
unless entropy needs to be added to the pool. Its default, unfortunately,
is to wake up every 60 seconds whether it's needed or not,
to stir the pool a bit. You change that with "rngd -t 0". "top" shows it
using 1804k virtual, 352k resident while it runs. There's a commented-out
line in /etc/rc.sysinit that starts it; that needs to be uncommented, and
"-t 0" added to its command line.
A possible short-term fix is to change the ramdisk script to update the
entropy count as we add the hardware random data. That's done with a
RNDADDENTROPY ioctl on /dev/random. Look in rngd_linux.c in rng-utils for
the details of its arguments. Due to the complexity of doing bizarre
ioctl's from Python, it might be easier to run rngd.
--
Ticket URL: <http://dev.laptop.org/ticket/8024#comment:27>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list