On Mon, Feb 27, 2023 at 10:53:45AM -0500, Stefan Hajnoczi wrote:--
On Fri, Feb 24, 2023 at 03:37:51PM +0100, David Heidelberg wrote:We merged a patch from Christoph Hellwig to support this.
From: Stefan Hajnoczi <stefanha@xxxxxxxxxx>Vivek, do you remember where we ended up with boot from virtiofs? I
Make it possible to boot directly from a virtiofs file system with tag
'myfs' using the following kernel parameters:
rootfstype=virtiofs root=myfs rw
Booting directly from virtiofs makes it possible to use a directory on
the host as the root file system. This is convenient for testing and
situations where manipulating disk image files is cumbersome.
Reviewed-by: Helen Koike <helen.koike@xxxxxxxxxxxxx>
Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx>
Signed-off-by: David Heidelberg <david@xxxxxxx>
---
v2: added Reviewed-by and CCed everyone interested.
We have used this option in Mesa3D CI for testing crosvm for
more than one years and it's proven to work reliably.
We are working on effort to removing custom patches to be able to do
automated apply and test of patches from any tree.
https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/.gitlab-ci/crosvm-runner.sh#L85
init/do_mounts.c | 10 ++++++++++
1 file changed, 10 insertions(+)
thought a different solution was merged some time ago.
commit f9259be6a9e7c22d92e5a5000913147ae17e8321
Author: Christoph Hellwig <hch@xxxxxx>
Date: Wed Jul 14 16:23:20 2021 -0400
init: allow mounting arbitrary non-blockdevice filesystems as root
Now one should be able to mount virtiofs using following syntax.
"root=myfs rootfstype=virtiofs rw"
IIUC, this patch should not be required anymore.
Thanks
Vivek
There is documentation from the virtiofs community here:
https://virtio-fs.gitlab.io/howto-boot.html
Stefan
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 811e94daf0a8..11c11abe23d7 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -578,6 +578,16 @@ void __init mount_root(void)
printk(KERN_ERR "VFS: Unable to mount root fs via SMB.\n");
return;
}
+#endif
+#ifdef CONFIG_VIRTIO_FS
+ if (root_fs_names && !strcmp(root_fs_names, "virtiofs")) {
+ if (!do_mount_root(root_device_name, "virtiofs",
+ root_mountflags, root_mount_data))
+ return;
+
+ panic("VFS: Unable to mount root fs \"%s\" from virtiofs",
+ root_device_name);
+ }
#endif
if (ROOT_DEV == 0 && root_device_name && root_fs_names) {
if (mount_nodev_root() == 0)
--
2.39.1