[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 2/5] lib/devfs, lib/ukboot: Move option to automatically mount root to libukboot
Hi Simon, On 8/29/19 4:17 PM, Simon Kuenzer wrote: > Moves the option of automatically mounting ramfs as a root filesystem > to lib/ukboot. This feature is not only useful for initializing > devfs. The idea is that we could later feed its initial content from a > archive given through an initrd. > > Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> > --- > lib/devfs/Config.uk | 8 +------- > lib/devfs/devfs_vnops.c | 25 ------------------------- > lib/ukboot/Config.uk | 5 +++++ > lib/ukboot/boot.c | 28 ++++++++++++++++++++++++++++ > 4 files changed, 34 insertions(+), 32 deletions(-) > > diff --git a/lib/devfs/Config.uk b/lib/devfs/Config.uk > index e38a616e..f6b16aee 100644 > --- a/lib/devfs/Config.uk > +++ b/lib/devfs/Config.uk > @@ -1,10 +1,4 @@ > config LIBDEVFS > bool "devfs: devfs file system" > default n > - depends on LIBVFSCORE > -if LIBDEVFS > - config LIBDEVFS_USE_RAMFS > - bool "Use ramfs as root" > - default n > - select LIBRAMFS > -endif > + select LIBVFSCORE > diff --git a/lib/devfs/devfs_vnops.c b/lib/devfs/devfs_vnops.c > index 11a3ea05..3399b2bc 100644 > --- a/lib/devfs/devfs_vnops.c > +++ b/lib/devfs/devfs_vnops.c > @@ -309,28 +309,3 @@ static struct vfscore_fs_type fs_devfs = { > }; > > UK_FS_REGISTER(fs_devfs); > - > -__constructor_prio(101) static void devfs_init(void) > -{ > -#ifdef CONFIG_LIBDEVFS_USE_RAMFS > - int ret; > - > - ret = mount("", "/", "ramfs", 0, NULL); > - if (ret != 0) { > - uk_pr_debug("Failed to mount / in %s\n", __func__); > - return; > - } > - > - ret = mkdir("/dev", S_IRWXU); > - if (ret != 0) { > - uk_pr_debug("Failed to mkdir /dev in %s\n", __func__); > - return; > - } > - > - ret = mount("", "/dev", "devfs", 0, NULL); > - if (ret != 0) { > - uk_pr_debug("Failed to mount /dev as devfs in %s\n", __func__); > - return; > - } > -#endif > -} > diff --git a/lib/ukboot/Config.uk b/lib/ukboot/Config.uk > index 841a8767..6f86c7de 100644 > --- a/lib/ukboot/Config.uk > +++ b/lib/ukboot/Config.uk > @@ -21,4 +21,9 @@ if LIBUKBOOT > bool "Initialize ukallocbbuddy as allocator" > default y > select LIBUKALLOCBBUDDY > + > + config LIBUKBOOT_VFSROOT > + bool "Mount ramfs to /" I'd suggest LIBUKBOOT_RAMFSROOT or smth like that since ramfs != vfs. > + default n > + select LIBRAMFS > endif > diff --git a/lib/ukboot/boot.c b/lib/ukboot/boot.c > index b4b390ef..15954205 100644 > --- a/lib/ukboot/boot.c > +++ b/lib/ukboot/boot.c > @@ -64,6 +64,11 @@ > #ifdef CONFIG_LIBUKLIBPARAM > #include <uk/libparam.h> > #endif /* CONFIG_LIBUKLIBPARAM */ > +#ifdef CONFIG_LIBUKBOOT_VFSROOT > +#include <sys/stat.h> > +#include <sys/mount.h> > +#endif /* CONFIG_LIBUKBOOT_VFSROOT */ > + > > int main(int argc, char *argv[]) __weak; > #ifdef CONFIG_LIBLWIP > @@ -90,6 +95,29 @@ static void main_thread_func(void *arg) > uk_bus_probe_all(); > #endif /* CONFIG_LIBUKBUS */ > > + /* > + * VFS initialization > + */ > +#ifdef CONFIG_LIBUKBOOT_VFSROOT > + /* > + * TODO: Provide a boot parameter option to specify a custom > + * root mount (e.g., ramfs, initrd, 9pfs). > + */ > + uk_pr_info("Mount root...\n"); > + ret = mount("", "/", "ramfs", 0, NULL); > + if (ret != 0) > + UK_CRASH("Failed to mount ramfs to /\n"); Why do we restrict ukboot to using ramfs? Why not keeping a constructor in the ramfs lib instead? > + > + /* > + * TODO: We could place here code that extracts an archive > + * found as initrd to '/' > + */ > + > +#endif /* CONFIG_LIBUKBOOT_VFSROOT */ > + > + /* > + * Network initialization > + */ > #ifdef CONFIG_LIBLWIP > /* > * TODO: This is an initial implementation where we call the > _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |