imho, i'm sorta sensing ongoing changes... / needs here... the way i'm seeing it is "overlay" dominated fixes when "rom" means many things now...
not sure if you were asking for this... or not but...
extroot-overlay ( non-ubi )
root@wndr3700:~# cat /proc/mounts
/dev/root /rom squashfs ro,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,noatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,noatime 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,noatime 0 0
/dev/sda3 /overlay ext4 rw,relatime,data=ordered 0 0
overlayfs:/overlay / overlay rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,size=512k,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0
debugfs /sys/kernel/debug debugfs rw,noatime 0 0
/proc/mtd
root@wndr3700:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00050000 00010000 "u-boot"
mtd1: 00020000 00010000 "u-boot-env"
mtd2: 00780000 00010000 "firmware"
mtd3: 00154440 00010000 "kernel"
mtd4: 0062bbc0 00010000 "rootfs"
mtd5: 003e0000 00010000 "rootfs_data"
mtd6: 00010000 00010000 "art"
if i'm not mistaken... the routine first unmounts any "extroot-overlay" ( likely-all-"extra"-mounts ) prior to going into its zap rootfs_data.../ jffs2reset ? or it's in pre-init... so they are not mounted at that stage... something like that anyway...
extroot-native-device
( on usb -zero overlay -zero rom no idea what firstboot would do here )
[root@syno-rt2600ac / 60°]# cat /proc/mounts
/dev/root / ext4 rw,noatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,noatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,noatime 0 0
cgroup /sys/fs/cgroup cgroup rw,nosuid,nodev,noexec,relatime,cpuset,cpu,cpuacct,blkio,memory,devices,freezer,net_cls,pids 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,noatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,size=512k,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0
debugfs /sys/kernel/debug debugfs rw,noatime 0 0