Hi all, The pivot_root() system call is also used by the LXC project (LinuX Containers); This project is gaining very high popularity recently especially due to the Docker container engine; see: https://github.com/lxc/lxc/blob/master/src/lxc/conf.c#L1067 http://linuxcontainers.org/ Regards, Kevin On Mon, Feb 3, 2014 at 12:31 PM, Michal Soltys <soltys@xxxxxxxx> wrote: > On 2014-01-30 16:20, Phillip Susi wrote: >> >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> On 1/30/2014 9:50 AM, Thomas Bächler wrote: >>> >>> At least mkinitcpio now generates a fresh "initrd" to return to >>> during system shutdown instead of keeping around the actual >>> initrd. >> >> >> I see, so at shutdown the initramfs is re-loaded into a tmpfs that is >> then pivot_root()ed to? And at boot time, pivot_root is not used? >> > > Initially when initramfs prepares /run and stuff (and switchroot moves it to > real root), workable "minisystem" is kept under /run/initramfs (or similar). > > On shutdown, /run/initramfs is bind-mounted to itself, which makes it > pivotable, with old root say available at /oldroot. Now your aim is to > cleanly unmount old root. In case of classic non-systemd, you would need: > > - telinit u (graceful re-exec of init) > - mdmon --takeover (if you have non-native raid handled by md, to gracefully > reexec the daemon) > - etc. > > This allows to close all open files on real root (things are usually tried > in loop, with attempts to stop stuff like lvm, md, ...) and finally unmount > old root. > > Of course there is also a question - why bother doing all this, when simple > ro remount before halt has been working fine for decades (and still works) > .... > > Dracut (and others) /could/ be doing even more clever thing (hmm, maybe I > should review certain old patches of mine) - during boot it could prepare > mini-root on tmpfs before (some copying, some symlinks and/or PATH stuff) > starting everything - then move actual tmpfs with living root to real root. > The small advantage of that is, that you can at any moment chroot to such > miniroot and do some maintenance on e.g. boot-critical storage daemon that > lacks ability to reexecute itself gracefully. > > Another interesting use for pivot_root() call - when paired with mount > namespaces - is ability to provide stronger chroot jails. > > So the call itself is still pretty useful. It hasn't beed used during boot > anymore for years, but other possibilities emerged for it =) > > > -- > To unsubscribe from this list: send the line "unsubscribe util-linux" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html