You can mount tmpfs and aufs from rootfs on the initramfs level. Should be fairly simple but you will need a aufs-enabled kernel and userspace utils in initramfs as well._________________BitBucket -- better-initramfs

first it mounts as read-only the /mnt/root
then it mounts tmpfs with name 'etc-tmpfs' inside /aufs/etc
on the end it mounts a aufs filesystem under /mnt/root/etc, with /aufs/etc as read-write and /mnt/root/etc as readonly branch.

and yes you can use mountpoint and readonly branch as the same path, then you switch_root to /mnt/root where /etc is read-write.

Also instead of writing mtab I would suggest leave it empty OR link it to /proc/mounts._________________BitBucket -- better-initramfs

# umount -n /etc/
umount: /etc: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
umount: /etc: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

the /aufs/etc is mounted outside /mnt/root, after switch_root you dont have access there as you are on different layer.

you mount your rootfs which container real /etc as read-only, if you want make permament maybe implament something to preserve /etc content, like on shutdown tar /etc and store it on /boot. then after mouting new aufs initramfs would unpack it to /mnt/root/etc or something. Umounting filesystem where something have open descriptior like /etc is impossible without shutting it down which pretty much means reboot._________________BitBucket -- better-initramfs