I was upgrading an EdgeRouter and it restarted multiple times instead of booting /bsd
When I had a chance to boot it correctly, I noticed that sysmerge and fw_update were run multiple times. This diff avoids filling rc.firsttime and rc.sysmerge. Index: distrib/miniroot/install.sub =================================================================== RCS file: /cvs/src/distrib/miniroot/install.sub,v retrieving revision 1.1154 diff -u -p -r1.1154 install.sub --- distrib/miniroot/install.sub 26 May 2020 16:21:00 -0000 1.1154 +++ distrib/miniroot/install.sub 14 Jul 2020 12:54:27 -0000 @@ -2734,6 +2734,9 @@ finish_up() { local _kernel_dir=/mnt/usr/share/relink/kernel local _kernel=${MDKERNEL:-GENERIC} _syspatch_archs="amd64 arm64 i386" + # Empty rc.firsttime + echo "" >/mnt/etc/rc.firsttime + # Mount all known swap partitions. This gives systems with little # memory a better chance at running 'MAKEDEV all'. if [[ -x /mnt/sbin/swapctl ]]; then @@ -2812,7 +2815,7 @@ finish_up() { # Ensure that sysmerge in batch mode is run on reboot. [[ $MODE == upgrade ]] && - echo "/usr/sbin/sysmerge -b" >>/mnt/etc/rc.sysmerge + echo "/usr/sbin/sysmerge -b" >/mnt/etc/rc.sysmerge # If a proxy was needed to fetch the sets, use it for fw_update and syspatch [[ -n $http_proxy ]] &&