fs: use nullfs unconditionally as the real rootfs

Remove the "nullfs_rootfs" boot parameter and simply always use nullfs.
The mutable rootfs will be mounted on top of it. Systems that don't use
pivot_root() to pivot away from the real rootfs will have an additional
mount stick around but that shouldn't be a problem at all. If it is
we'll rever this commit.

This also simplifies the boot process and removes the need for the
traditional switch_root workarounds.

Suggested-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
Christian Brauner 2026-01-14 11:22:54 +01:00
parent 7416634fd6
commit 313c47f4fe
No known key found for this signature in database
GPG key ID: 91C61BC06578DCA2
4 changed files with 32 additions and 77 deletions

View file

@ -493,21 +493,15 @@ void __init prepare_namespace(void)
out:
devtmpfs_mount();
if (nullfs_rootfs) {
if (init_pivot_root(".", ".")) {
pr_err("VFS: Failed to pivot into new rootfs\n");
return;
}
if (init_umount(".", MNT_DETACH)) {
pr_err("VFS: Failed to unmount old rootfs\n");
return;
}
pr_info("VFS: Pivoted into new rootfs\n");
if (init_pivot_root(".", ".")) {
pr_err("VFS: Failed to pivot into new rootfs\n");
return;
}
init_mount(".", "/", NULL, MS_MOVE, NULL);
init_chroot(".");
if (init_umount(".", MNT_DETACH)) {
pr_err("VFS: Failed to unmount old rootfs\n");
return;
}
pr_info("VFS: Pivoted into new rootfs\n");
}
static bool is_tmpfs;

View file

@ -15,7 +15,6 @@
void mount_root_generic(char *name, char *pretty_name, int flags);
void mount_root(char *root_device_name);
extern int root_mountflags;
extern bool nullfs_rootfs;
static inline __init int create_dev(char *name, dev_t dev)
{