Date: Tue, 21 May 2002 17:41:53 -0700 From: Peter Wemm <peter@wemm.org> To: Maxime Henrion <mux@FreeBSD.ORG> Cc: arch@FreeBSD.ORG Subject: Re: a virtual fs to allow root mounting of any fs without special code Message-ID: <20020522004153.CDF5B3A9A@overcee.wemm.org> In-Reply-To: <20020520212459.GH496@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Maxime Henrion wrote: > I've written a small virtual filesystem called rootfs which solves the > chicken and egg problem of root mounting quite nicely. Currently, we > need special code in each filesystem to allow root mounting. The reason > for this is that the VFS_MOUNT operations of the filesystems generally > need to do a lookup to get a device file (e.g. /dev/ad0s1a), so they > need devfs to be there, and they need lookups to work. > > rootfs is nothing more than a 3-vnodes filesystem (/, /dev and /root). > To mount the root filesystem with rootfs, I do the following : > > - initialize rootfs > - mount devfs on /dev (on top of rootfs) > - mount the real fs on /root > - umount devfs from /dev > - translate vnodes so that / is now the /root > - remount devfs on /dev (on top of the real fs) > - terminate rootfs You know, this sounds an awful lot like what linux does with their 'initrd' ramdisk and pivot_root(2). The main difference is that instead of the rootfs being a synthetic file system, it is a real file system that is read/write mounted and you can have init etc living in there. One thing you didn't clarify above, where does starting init live in the sequence of events above? Or is this all pre-exec-init stage? It would be nice to be able to fsck/remount the /root fs while we have the devfs nodes available. Cheers, -Peter -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020522004153.CDF5B3A9A>