APM

David Allen the.real.david.allen at gmail.com
Sat Nov 14 00:42:30 UTC 2009


On 11/13/09, Chuck Swiger <cswiger at mac.com> wrote:
> Hi--
>
> On Nov 13, 2009, at 3:54 PM, David Allen wrote:
>>> I'd consider adding something to /etc/rc.d/mountcritlocal (which
>>> normally mounts the local filesystems) to setup a RAMdisk on /var and
>>> then do "rsync -a /var_template /var" (or use a dump/restore or tar
>>> pipeline).
>>
>> At the risk of sounding obtuse while asking for more help, I can work
>> out the rsync or dump part, but the rest I don't  get. The
>> mountcritremote essentially just does a mount -a -t ..., yes?  To
>> insert a few mdmfs commands followed by rsync commands, for example,
>> would require re-writing most the script.  Is there  a better place to
>> this?
>
> Quite possibly.  I used NetBSD for a flash-based Soerkris boxes a
> while back, rather than NanoBSD.  It looks like reading /etc/
> rc.initdiskless might be informative.
>
>> The reason I ask is that some time ago I had a look at nanobsd which
>> is designed to run on RO flash media.  The /var and /tmp directories
>> are created as memory devices that supposedly get re-populated from a
>> /cfg directory at boot.
>
> Right...
>
>> The /usr/src/tools/tools/nanobsd/nanobsd.sh setup script has a
>> function named setup_nanobsd_etc.  Essentially, it writes out an
>> /etc/fstab file and does a 'touch /etc/diskless'.  Unless there's
>> magic that happens behind the scenes with that /etc/diskless file, I
>> don't see how anything gets re-populated.
>
> The existence of /etc/diskless means /etc/rc runs /etc/rc.initdiskless:

Aaaargh!  For those following along at home, that's

  /etc/rc.initdiskless

and not

  /etc/rc.d/somethingdiskless

> % grep diskless /etc/rc
> dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
> if [ ${dlv:=0} -ne 0 -o -f /etc/diskless ]; then
> 	sh /etc/rc.initdiskless
> # Run these after determining whether we are booting diskless in order
> # to minimize the number of files that are needed on a diskless system,

The answer finally appears!

A note to the OP.  The only way I've found to keep a disk spun down
under FreeBSD is using memory devices for both /var and /tmp.
Disabling syslogd isn't enough, nor is modifying /etc/crontab, root's
crontab (or even disabling cron) to limit disk access.  But to use
memory devices and have a "normal" system, you'll need to re-populate
both /var and /tmp at startup.   Which, it turns out, means starting
with /etc/diskless.

Someone should add a section named  "Non-Diskless Diskless Operation"
to the Handbook.

Thanks again for all the help!


More information about the freebsd-questions mailing list