DragonFly 3.4 release planning

Matthew Dillon dillon at apollo.backplane.com
Sun Mar 31 11:23:03 PDT 2013


    Here's a solution that I think I could live with, tell me what
    you guys think:

    We leverage the distinction between our boot and root mounts.  As people
    know, most DFly installations have a separate UFS /boot partition.

    We would make /bin and /sbin dynamic, but for single-user-mode booting
    the system would have a /boot/rescue directory tree, build appropriate
    infrastructure under it using tmpfs mounts, and chroot into that.

    Thus we would have a statically-built /boot/rescue/bin, /boot/rescue/sbin,
    minimal infrastructure in /boot/rescue/etc, and a tmpfs mount for
    /boot/rescue/etc (copy-over), /boot/rescue/var, /boot/rescue/tmp, and
    /boot/rescue/var/tmp.  Plus /boot/rescue/boot would be a null-mount
    from the original /boot to keep that accessible.

    --

    In terms of handling this environment, if a 's'ingle user boot is
    requested the kernel would mount /boot and chroot into /boot/rescue
    and exec /sbin/init from the chroot instead of mounting the normal
    root and execing /sbin/init from the normal root.

    /boot/rescue/etc/rc would then handle building and chrooting into
    the single-user environment.

    --

    The work involved would be fairly straight-forward I think.  We would
    adjust buildworld to build most of /sbin and /bin dynamic, and we
    would adjust the build code in /usr/src/sys/boot to build the
    /boot/rescue stuff (including a static bin and sbin for it) along with
    the other /boot stuff that it already does.

    The only real coding would be the kernel root mount, to make it mount
    the /boot partition instead of the root partition.  It could modify
    the root path from 'd' and 'a' for that purpose and issue the chroot,
    plus accept an appropriate tunable to allow the /boot partition to be
    specified... not difficult at all.

    We might still want a few things in the normal /sbin and/or /bin to be
    statically built for performance purposes, but that could be discussed
    later.  'resident' could probably be used to make those things perform
    anyway.  We might still need the normal /sbin/init to be statically built
    as well, not sure.

					-Matt
					Matthew Dillon 
					<dillon at backplane.com>



More information about the Kernel mailing list