[Soekris] rc.shutdown hangs when /dev is mfs
dkelly at WarningSystems.com
Mon Apr 21 15:26:54 UTC 2003
On a net4501 running a cut down version of FreeBSD 4.8 I have found
when I use memory backed filesystems for /dev, /tmp, and /var, on
shutdown init times out executing
During shutdown I don't believe the output on the serial console is in
sync with actual events.
Experimenting, learned I need a rudimentary /dev/ for the kernel to
boot far enough to execute rc.diskless to create the mfs
filesystems /dev, /var, and /tmp.
Am suspecting on boot init opens a device in the read-only CF /dev,
upon which an mfs /dev is later mounted on top of. And that somehow the
two are getting confused?
/etc/rc.shutdown is optional, according to the source of init. Renaming
the file demonstrates the truth, and eliminates the timeout from init
on shutdown. I have been moving an "exit 0" down this file from the top
and have not been able to make any sense of where the hang occurs as
there is no hang if exit is one of the first statements executed. Seems
to depend on how much data is written to the console.
I don't understand the nuances of the environment rc.shutdown runs in.
The first executable line is "stty status ^T" which seems like a no-op.
But if I remove it I get no running dialog output from the script.
On shutdown, console output from rc.shutdown appears to be much
delayed. The bulk of the data isn't written until after the 2 minute
timeout by init.
The system has apache2 and the aureal-kmod port installed. These are
the only ports whose startup scripts are run at shutdown.
By sprinkling "fsync /dev/console" lines in the /etc/rc.shutdown
script, my problem seems to be resolved. Something is blocking until
the output buffers are flushed, but nothing is forcing the flush? Seems
like the final echo should flush the line buffered output.
Am still playing with it, suspect one fsync just prior to exit may do
Any one else see this before?
More information about the Soekris-tech