Martin Marcher wrote:
>...
> What I'm looking for are starting points to read about what to do when
> RO mounting the root fs (and all other parts) especially on CF-media.

I did this recently, in December and January, and can point out what I
found.  More experienced or expert users will be able to say what the
better options are.

Since the smallest CF I could get was 1GB, I split it into two, to have
one for the root tree and another partition for reserve copies in case
experiments don't work.  The whole system, including extras, is about
202 MB.  I chose to do any compilation on another machine and therefore
left out comp, the man pages (for me) are as essential as the kernel so
I've kept them.  I can't remember why I kept misc.

          [X] bsd
          [X] bsd.rd
          [ ] bsd.mp
          [X] base42.tgz
          [X] etc42.tgz
          [X] misc42.tgz
          [ ] comp42.tgz
          [X] man42.tgz
          [ ] game42.tgz
          [ ] xbase42.tgz
          [ ] xetc42.tgz
          [ ] xshare42.tgz
          [ ] xfont42.tgz
          [ ] xserv42.tgz

I chose to have /tmp, /var, and /dev in memory and put the rest of the
normal system into one partition. /home is a symlink to /var/home/,
/root is a symlink to /var/root, /data is a separate partition for spare
material and short term backup.  No swap partition was used.

Templates for /dev and /var are kept in /dev.base and /var.base,
respectively.  There are probably better naming conventions.
mfs loads into RAM and then mounts the RAM versions.

Here is what I have in /etc/fstab (wrapped text) to do that:

  /dev/wd0a / ffs ro 1 1
  /dev/wd0d /data ffs rw,nodev,nosuid 1 2

  # populate /var with data from CF, then mount in RAM
  swap /var mfs -P/var.base,-s160000,noexec,async,nosuid, \
  nodev,noatime,rw 0 0

  # mount /tmp in memory
  swap /tmp mfs noexec,async,nosuid,nodev,noatime,rw, \
  -b4096,-i1024,-s15000,-m0 0 0

  # mount /dev in memory
  swap /dev mfs rw,-P=/dev.base,-s=3000,-i=1024 0 0

When you make changes, mount -o rw /, then make the changes then sync.

I have also used config(8) to tune the GENERIC kernel somewhat.  Just
what I chose, I cannot recall, but when it is time to look at that
again, I will try removing unneeded devices.

Here is what I chose to have in /etc/boot.conf, the re-configured kernel
is called /nbsd:

  stty com0 19200
  set tty com0
  #set image /bsd
  set image /nbsd

To use cu, kermit or tip for serial console, you must be a member of the
group dialer.

I'm going to assume you have already set up a way to do the
installation.  I chose to use PXE boot.  Now that I seem to be swimming
in USB devices and media, I will probably try using those next time
instead.  Having PXE boot available is an advantage later if you want to
set run live CDs or thin clients.

For the logging, I've chosen not to worry about it yet.  When the
machine powers down, the logs are lost.  Maybe you could set up
something in /etc/rc.shutdown to rsync to a non-volatile partition.
An external log server is another option.  I've had log servers in the
past, but will postpone that till I can experiment more with IPv6.
There was a good IPv4 summary of logging on BSDTalk in January:

 http://bsdtalk.blogspot.com/2008/01/bsdtalk138-central-syslog.html
 http://cisx1.uma.maine.edu/~wbackman/bsdtalk/bsdtalk138.ogg

There is apparently a risk that the log partition on the log server can
get filled by anyone who wants to do so.

YMMV,
-Lars

Reply via email to