Ok, seems I finally understood the magic around linux initrd.gz files. Basically, it provides a minimal rootfs with an optional /linuxrc
executable. Using something like busybox (e.g. via ln -s /bin/busybox /bin/ash
) that can even be a shell script.
It should be possible to mount the nfsroot ro, create a tmpfs for unionfs changes and mount /etc, /var and /tmp as rw unionfs… so much for the theory.
In practice the nortmal root device will be mounted to / as soon as /linuxrc
terminates. So we should set up the root filesystem as we like and then call /sbin/init (or whatever the initial script) and dont have to bother with changing our root filesystem with something like pivot_root
.
Let’s see if I can’t actually come up with a solution that works like this. Nevertheless, I wonder why I did not manage to google one. Are we the only ones managing a pool of linux workstations? o_O
Some links: