On Wed, Aug 25, 2010 at 10:07:45AM -0400, Cole Robinson wrote: > On 08/25/2010 05:03 AM, Soren Hansen wrote: > > uml_dir overrides user-mode-linux's default of ~/.uml. This is needed > > for a couple of different reasons: > > > > libvirt expects this to default to virGetUserDirectory(geteuid()) + > > '/.uml'. However, user-mode-linux actually uses the HOME environment > > variable to determine where to look for the uml sockets, but if running > > libvirtd under sudo (which I routinely do during development), $HOME is > > pointing at my user's homedir, while my euid is 0, so libvirt looks in > > /root. > > > > Also (and this was my actual motivation for this patch), if HOME isn't > > set at all, user-mode-linux utterly fails. Looking at the code, it seems > > it's meant to emit a warning, but alas, it doesn't for some reason. > > If running libvirtd from upstart, HOME is not set, so any system using > > upstart will need this change. > > > > Signed-off-by: Soren Hansen <soren@xxxxxxxxxxx> > > --- > > src/uml/uml_conf.c | 4 ++-- > > 1 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c > > index 65b06c5..4906192 100644 > > --- a/src/uml/uml_conf.c > > +++ b/src/uml/uml_conf.c > > @@ -409,7 +409,7 @@ static char *umlNextArg(char *args) > > * for a given virtual machine. > > */ > > int umlBuildCommandLine(virConnectPtr conn, > > - struct uml_driver *driver ATTRIBUTE_UNUSED, > > + struct uml_driver *driver, > > virDomainObjPtr vm, > > fd_set *keepfd, > > const char ***retargv, > > @@ -499,7 +499,6 @@ int umlBuildCommandLine(virConnectPtr conn, > > ADD_ENV_COPY("LD_PRELOAD"); > > ADD_ENV_COPY("LD_LIBRARY_PATH"); > > ADD_ENV_COPY("PATH"); > > - ADD_ENV_COPY("HOME"); > > ADD_ENV_COPY("USER"); > > ADD_ENV_COPY("LOGNAME"); > > ADD_ENV_COPY("TMPDIR"); > > @@ -508,6 +507,7 @@ int umlBuildCommandLine(virConnectPtr conn, > > //ADD_ARG_PAIR("con0", "fd:0,fd:1"); > > ADD_ARG_PAIR("mem", memory); > > ADD_ARG_PAIR("umid", vm->def->name); > > + ADD_ARG_PAIR("uml_dir", driver->monitorDir); > > > > if (vm->def->os.root) > > ADD_ARG_PAIR("root", vm->def->os.root); > > I think this should also solve this long standing fedora/selinux bug: Almost. We still need to change 'driver->monitorDir' so that it gets initialized to '$LOCAL_STATE_DIR/lib/libvirt/uml' like we do with QEMU (or $HOME/.libvirt/uml/lib for session mode) Regards, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list