Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Mar 2018 22:42:26 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        "Rodney W. Grimes" <freebsd-rwg@pdx.rh.cn85.dnsmgr.net>
Cc:        Mark Saad <nonesuch@longcount.org>, Kristoffer Eriksson <ske@pkmab.se>,  "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, Theron <theron.tarigo@gmail.com>
Subject:   Re: GSoC Idea: per-process filesystem namespaces for FreeBSD
Message-ID:  <CANCZdfrpSUX9NMkzJuHtJY2ySkdOYE_61RT4C%2BgNnfZAT_mUNA@mail.gmail.com>
In-Reply-To: <201803140353.w2E3rHN1086319@pdx.rh.CN85.dnsmgr.net>
References:  <CAMXt9NbsZ%2B2K4JhBOvEWVGoa5tq5PeUY6=ab=MOW1M47RJOeMw@mail.gmail.com> <201803140353.w2E3rHN1086319@pdx.rh.CN85.dnsmgr.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Mar 13, 2018 at 9:53 PM, Rodney W. Grimes <
freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote:

> > On Tue, Mar 13, 2018 at 9:25 PM, Rodney W. Grimes
> > <freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote:
> > >> > On Mar 13, 2018, at 7:16 PM, Warner Losh <imp@bsdimp.com> wrote:
> > >> >
> > >> >
> > >> >
> > >> >> On Tue, Mar 13, 2018 at 4:31 PM, Mark Saad <nonesuch@longcount.org>
> wrote:
> > >> >>
> > >> >>> On Mar 13, 2018, at 5:43 PM, Warner Losh <imp@bsdimp.com> wrote:
> > >> >>>
> > >> >>>> On Tue, Mar 13, 2018 at 1:55 PM, Kristoffer Eriksson <
> ske@pkmab.se> wrote:
> > >> >>>>
> > >> >>>>
> > >> >>>>> On 13 Mar 2018 12:53:18, Theron <theron.tarigo@gmail.com>
> wrote:
> > >> >>>>> For those unfamiliar with Plan9, here is a rough explanation of
> the
> > >> >>>>> namespace feature: unlike in Unix, where all processes share
> the same
> > >> >>>>> virtual filesystem, each process instead has its own view of the
> > >> >>>>> filesystem according to what has been mounted ...
> > >> >>>>
> > >> >>>> What if I mount a new /etc with a passwd file where root has no
> > >> >>>> password, and then run "su"?
> > >> >>>>
> > >> >>>> (How does Plan9 handle that?)
> > >> >>>>
> > >> >>>
> > >> >>> Plan9 handles that by having a daemon that does user
> authentication. It's
> > >> >>> actually more complicated than that, but the machine owner has
> control over
> > >> >>> who can do what. For this to work in FreeBSD, either we'd need to
> disallow
> > >> >>> the 'file' type for passwd, or we'd have to do something sensible
> with
> > >> >>> setuid programs. Well, maybe not 'or' but 'and' since the
> security of
> > >> >>> setuid programs depends on the security of the filesystem....
> Plan 9
> > >> >>> doesn't have these complications, so it can offer a user malleable
> > >> >>> filesystem without security risk.
> > >> >>>
> > >> >>> Warner
> > >> >>
> > >> >>  A kind of related task; FreeBSD could benefit from : Fixing  and
> improving unionfs / nullfs. There are some weird issues with the current
> unionfs and while it works in many cases there are some edge cases where
> the comments are something like ? FreeBSD needs a proper stacking vfs ...?
>  the examples I can think of ; imagine you have a jail , chroot or even a
> Pxe booted system where you want a a read only null mount from the hosts
> /bin to the targets /bin . Now expand that to most of the base system and
> the mount tmpfs?s for /tep /var/log etc.  most of that works but try to
> unmount it in the wrong order or thrash a unionfs with lots of writes ,on
> top of a tmpfs and things break .
> > >> >> So to be clear the project would be to better document the various
> uses of unionfs and nullfs that work , for the ones that do not diving into
> the stacking vfs and seeing if it could be implemented and if it would help
> .
> > >> >>
> > >> >> Alternatively making FreeBSD multiboot compliant would rock . This
> would allow FreeBSD to natively boot from ipxe or syslinux derivates; thus
> allowing you to boot a working FreeBSD install via a kernel and mfsroot
> image off a web server .
> > >> >
> > >> > There appears to already be a multiboot.c in the bootloader. I've
> been told by others in the past it just works...
> > >> >
> > >> > Warner
> > >>
> > >> I am going down the rabbit hole to see how it works .
> > >
> > > If you have any questions I am happy to share my working tooling.
> > >
> >
> > I think you are both missing my point. I can boot FreeBSD with ipxe
> > loading mfsbsd style setups like this
> >
> > :freebsd
> > initrd ${base-root}/freebsd/mfsroot.gz
> > chain ${base-root}/other/memdisk harddisk raw
>
> Nope, not what I am doing.
>
> > I want to be able to boot and run it like I would Linux or ESXi with
> > the ability to directly load an kernel and a mfsroot/initrd and pass
> > kernel loader arguments
> >
> > :centos674
> > set centos674_args edd=off ramdisk_size=50000 nomodeset
> > ks=${centos-root}/CentOS6.7_x64/ks/supermicro-4drives.ks
> > ksdevice=${net0/mac} verbose ip=dhcp
> > root-path=${centos-root}/CentOS6.7_x64/OS/ net.ifnames=0 biosdevname=0
> > nousb
> > echo ${centos674_args}
> > kernel ${base-root}/centos/CentOS6.7_x64/isolinux/vmlinuz
> ${centos674_args}
> > initrd ${base-root}/centos/CentOS6.7_x64/isolinux/initrd.img
>
> :freebsd6411
> set root-path 192.168.48.38:/B/FreeBSD/11.0/amd64
> iseq ${platform} efi && chain nfs://192.168.48.38/B/FreeBSD/
> 11.0/amd64/boot/loader.efi || chain nfs://192.168.48.38/B/FreeBSD/
> 11.0/amd64/boot/pxeboot
> boot || goto failed
> goto start
>
> I agree it would be nice to get the "variable=value" stuff working.
> I do know the above does infact pass that root-path to the kernel,
> and without that mountroot fails, so some of this is working
>

right, loader.efi and/or pxebooot is what sets the root path (and other
variables).  What others are asking for is some kind way to do just load
the kernel + a bundle of variables with some kind of 'mini /boot/loader'
(in our terms) that can turn the bundle into the metadata the kernel needs
to do it's job. We have an extra layer of with loader.efi/pxeboot and linux
doesn't...

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfrpSUX9NMkzJuHtJY2ySkdOYE_61RT4C%2BgNnfZAT_mUNA>