Anthony already explained that writing to /dev/random does not increase the entropy count and showed how the RNDADDENTROPY ioctl (see random(4)) can be used to credit for entropy. It is obviously not really secure, so here is an alternative when a hardware random number generator is available.
The following implementations take 512 bytes (4096 bits) of randomness from /dev/hwrng and forward it to the entropy pool (crediting 4 bits of entropy per byte, this is an arbitrary choice from me). After that it will invoke the select(2) syscall to block when the entropy pool is full (documented in the random(4) manpage).
A Python version:
import fcntl, select, struct
with open('/dev/hwrng', 'rb') as hw, open('/dev/random') as rnd:
while True:
d = hw.read(512)
fcntl.ioctl(rnd, 0x40085203, struct.pack('ii', 4 * len(d), len(d)) + d)
select.select([], [rnd], [])
Since the Arch Linux iso did not have Python installed, here is a Perl version too:
open my $hw, "</dev/hwrng" and open my $rnd, "</dev/random" or die;
for (;;) {
my $l = read $hw, my $d, 512;
ioctl $rnd, 0x40085203, pack("ii", 4 * $l, $l) . $d or die;
vec(my $w, fileno $rnd, 1) = 1;
select undef, $w, undef, undef
}
This is probably what the rngd program (part of rng-tools) does (unverified), except that it uses tools (Python or Perl) that are already commonly available.