installer - use a more modern mount setup for UFS and HAMMER.
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 14 Dec 2015 03:18:47 +0000 (19:18 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 14 Dec 2015 07:07:56 +0000 (23:07 -0800)
commitf9602a12d5f0345feed0941d0b9e3b4e1816a411
tree39a9c9ba37d58e82ab352f3b1c4c4e8c3fe96011
parentef6b578f137cdf9e9abd9592a179e0d28185fafa
installer - use a more modern mount setup for UFS and HAMMER.

* Rewrite a large chunk of the disklabeling and mount point code.
  UFS now gains a separate /boot partition, avoiding issues with
  the boot loader if the user desires to install a large UFS root on
  a drive.

* Normalize the mount mechanics for both UFS and HAMMER.  Instead of
  using PFSs on HAMMER, we create two large partitions by default:
  One is the root partition, the other is /build.

  The /build partition holds major elements of the system which would
  normally not have to be backed up:

/var/tmp (from /build/var.tmp)
/var/cache (from /build/var.cache)
/var/crash (from /build/var.crash)
/var/spool (from /build/var.spool)
/var/log (from /build/var.log)
/usr/obj (from /build/usr.obj)

  The root partition holds all remaining major directories, including the
  base /var.

  There are several reasons for this.  Generally speaking, stuff in /home,
  /usr and most of the stuff in /var is critical to system operation and
  user happiness, and it makes little sense to separate it out from the root
  mount.

  We pick-out the less critical directories and place them on /build,
  using NULL mounts to mount them in their expected locations.

* Users can easily make adjustments post-install without having to mess
  around with PFSs, and can make simple adjustments pre-install.

* Drives smaller than around 40GB will not create a separate /build
  partition by default, but will still create a /build directory in the
  root partition and generate the same nullfs mounts.  This makes it easier
  for the user to adjust to a larger configuration later on if desired.

* This also improves crash recovery mechanics, increasing the chance that
  the root partition will be able to mount with minimal recovery work.

* We now use a tmpfs filesystem for /tmp by default.  /var/tmp is mounted
  from storage.  Again, the user can change this easily post-install.

* Calculate better values for swap, root, and /build, based on the size
  of the slice being installed to.  The /build directory will cap-out
  at around 20GB leaving.  Swap will be made smaller if the root partition
  seems to small, and so forth.

  Some swap is always configured.  Swap is a very useful thing to have,
  even if you have tons of memory, because there will always be a certain
  number of always-idle pages from idle services laying around.

* Remove /dev from sources.conf, it is no longer appropriate to try to
  cpdup /dev.  Fixes a cpdup error.

* UFS root can now be encrypted (it couldn't before), because the UFS
  install now splits out a separate /boot partition.

* Tested w/non-crypto UFS and HAMMER install, crypto UFS and HAMMER install,
  and with small and large drives.
etc/mtree/BSD.root.dist
etc/mtree/BSD.var.dist
share/installer/sources.conf
usr.sbin/installer/dfuibe_installer/flow.h
usr.sbin/installer/dfuibe_installer/fn.h
usr.sbin/installer/dfuibe_installer/fn_configure.c
usr.sbin/installer/dfuibe_installer/fn_install.c
usr.sbin/installer/dfuibe_installer/fn_subpart_hammer.c
usr.sbin/installer/dfuibe_installer/fn_subpart_ufs.c
usr.sbin/installer/libinstaller/diskutil.c