installer: Fix the "missing /var/run/sem" issues better.
authorSascha Wildner <saw@online.de>
Sun, 19 Mar 2017 15:34:37 +0000 (16:34 +0100)
committerSascha Wildner <saw@online.de>
Sun, 19 Mar 2017 15:34:37 +0000 (16:34 +0100)
* Add -C to the tmpfs mount of /var/run on the USB image. This
  ensures that the USB image itself keeps the ppp/, sem/, and
  wpa_supplicant/ dirs under /var/run.

* Since we do not cpdup /var/run explicitly during installation
  it ends up empty on the installed system. Ensure that it has
  the subdirectories it needs by running mtree on /var.

* It looks like the 1e5a476188185cf1161f4fe3ffc060465562ef0d
  change could be reverted because the issue never was that
  /var/run/sem wasn't existing _after_ make upgrade. The mtree
  in the preceding installworld takes care of it. It doesn't
  hurt either, so just shuffle the commands a bit downwards.

etc/Makefile
nrelease/Makefile
share/installer/cmdnames.conf
usr.sbin/installer/dfuibe_installer/fn_install.c

index 85db6ae..a8a5295 100644 (file)
@@ -154,8 +154,6 @@ upgrade_etc:        upgrade_check preupgrade remove-obsolete-files
            ${DEFAULTS} ${DESTDIR}/etc/defaults
        cd ${UPGRADE_SRCDIR}/periodic; ${MAKE} install
        mkdir -p ${DESTDIR}/etc/rc.d
-       mkdir -p ${DESTDIR}/var/run/sem
-       chmod 1777 ${DESTDIR}/var/run/sem
        cd ${UPGRADE_SRCDIR}/rc.d; ${MAKE} install 
        cd ${UPGRADE_SRCDIR}/devd; ${MAKE} install
        mkdir -p ${DESTDIR}/etc/autofs
@@ -234,6 +232,8 @@ upgrade_etc:        upgrade_check preupgrade remove-obsolete-files
        done
        ldconfig -R
        mkdir -p ${DESTDIR}/dev
+       mkdir -p ${DESTDIR}/var/run/sem
+       chmod 1777 ${DESTDIR}/var/run/sem
 
 # The existence of cleartext_pass_ok means pam config files are out of date.
        @set - `fgrep cleartext_pass_ok ${DESTDIR}/etc/pam.d/*`; \
index 0566c7d..28eef78 100644 (file)
@@ -397,7 +397,7 @@ mkimg:
        echo "/dev/${IMGUSBDEV}s2a / ufs rw,noatime 0 1" > ${IMGMNT}/etc/fstab
        echo "dummy /tmp tmpfs rw 0 0" >> ${IMGMNT}/etc/fstab
        echo "dummy /var/tmp tmpfs rw 0 0" >> ${IMGMNT}/etc/fstab
-       echo "dummy /var/run tmpfs rw 0 0" >> ${IMGMNT}/etc/fstab
+       echo "dummy /var/run tmpfs rw,-C 0 0" >> ${IMGMNT}/etc/fstab
        echo "dummy /usr/obj tmpfs rw 0 0" >> ${IMGMNT}/etc/fstab
        echo "proc /proc procfs rw 0 0" >> ${IMGMNT}/etc/fstab
        @echo "STEP: fixup ${IMGMNT}/boot/loader.conf"
index 24eea2d..47cc05f 100644 (file)
@@ -63,6 +63,7 @@ CHROOT=usr/sbin/chroot
 FDFORMAT=usr/sbin/fdformat
 INETD=usr/sbin/inetd
 KBDCONTROL=usr/sbin/kbdcontrol
+MTREE=usr/sbin/mtree
 PW=usr/sbin/pw
 PWD_MKDB=usr/sbin/pwd_mkdb
 RPCBIND=usr/sbin/rpcbind
index 8f5ef3a..dc10c3f 100644 (file)
@@ -451,6 +451,12 @@ fn_install_os(struct i_fn_args *a)
                command_set_log_mode(cmd, COMMAND_LOG_QUIET);
        }
 
+       /*
+        * Ensure /var has all directories it needs.
+        */
+       command_add(cmds, "%s%s -deU -f %setc/mtree/BSD.var.dist -p %smnt/var",
+           a->os_root, cmd_name(a, "MTREE"), a->os_root, a->os_root);
+
        /*
         * Create symlinks.
         */