[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260124003939.426931-1-hpa@zytor.com>
Date: Fri, 23 Jan 2026 16:39:33 -0800
From: "H. Peter Anvin" <hpa@...or.com>
To: Alexander Viro <viro@...iv.linux.org.uk>,
Christian Brauner <brauner@...nel.org>, Jan Kara <jack@...e.cz>,
Jonathan Corbet <corbet@....net>, "H. Peter Anvin" <hpa@...or.com>
Cc: linux-fsdevel@...r.kernel.org, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org,
Lennart Poettering <lennart@...ttering.net>,
systemd-devel@...ts.freedesktop.org
Subject: [PATCH 0/3] Add the ability to mount filesystems during initramfs expansion
At Plumber's 2024, Lennart Poettering of the systemd project requested
the ability to overmount the rootfs with a separate tmpfs before
initramfs expansion, so the populated tmpfs can be unmounted.
This patchset takes this request and goes one step further: it allows
(mostly) arbitrary filesystems mounts during initramfs processing.
This is done by having the initramfs expansion code detect the special
filename "!!!MOUNT!!!" which is then parsed into a simplified
fstab-type mount specification and the directory in which the
!!!MOUNT!!! entry is used as the mount point.
This specific method was chosen for the following reasons:
1. This information is specific to the expectations of the initramfs;
therefore using kernel command line options is not
appropriate. This way the information is fully contained within the
initramfs itself.
2. The sequence !!! is already special in cpio, due to the "TRAILER!!!"
entries.
3. The filename "!!!MOUNT!!!" will typically be sorted first, which
means using standard find+cpio tools to create the initramfs still
work.
4. Similarly, standard cpio can still expand the initramfs.
5. If run on a legacy kernel, the !!!MOUNT!!! file is created, which
is easy to detect in the initramfs code which can then activate
some fallback code.
6. It allows for multiple filesystems to be mounted, possibly of
different types and in different locations, e.g. the initramfs can
get started with /dev, /proc, and /sys already booted.
The patches are:
1/3: fs/init: move creating the mount data_page into init_mount()
2/3: initramfs: support mounting filesystems during initramfs expansion
3/3: Documentation/initramfs: document mount points in initramfs
---
.../driver-api/early-userspace/buffer-format.rst | 60 +++++++++++++-
fs/init.c | 23 +++++-
include/linux/init_syscalls.h | 3 +-
init/do_mounts.c | 17 +---
init/initramfs.c | 95 +++++++++++++++++++++-
5 files changed, 175 insertions(+), 23 deletions(-)
Powered by blists - more mailing lists