[lxc-devel] [PATCH] Enable support for chroot on busybox hosts

Purcareata Bogdan-B43198 B43198 at freescale.com
Wed Apr 10 10:39:41 UTC 2013


Hello,

Thank you very much for your reply! I'm sorry for sending this in a hurry, and not providing enough explanations. Please find my additional comment inline.

Thank you,
Bogdan P.

> -----Original Message-----
> From: Serge Hallyn [mailto:serge.hallyn at ubuntu.com]
> Sent: Tuesday, April 09, 2013 4:12 PM
> To: Purcareata Bogdan-B43198
> Cc: lxc-devel at lists.sourceforge.net
> Subject: Re: [lxc-devel] [PATCH] Enable support for chroot on busybox hosts
> 
> Quoting Bogdan Purcareata (bogdan.purcareata at freescale.com):
> > Signed-off-by: Bogdan Purcareata <bogdan.purcareata at freescale.com>
> 
> We generally prefer that mounting be done in a fresh namespace
> (lxc-unsahre -s MOUNT -- actions).  If lxc-busybox were switched to be
> 'set -e', it could leave lingering mounts (and we might not notice
> this still being done).
> 
> Do you mind changing it to do that?

What I am trying to do is install a busybox container on a busybox host.

When running the template, in order to change the root password, I need to do that chroot. But on my host, the chroot utility is not part of the coreutils package - it's part of busybox. And the busybox implementation for chroot only works if it has /lib in the new root populated with the right executables (or at least that's the solution I found to make it work).

My patch for this was to temporarily bind-mount /lib in the NEWROOT, chroot there, change the password, go back and unmount. All this is done while installing the template, and the mount should last only while executing the chroot command.

Is there a better way of achieving this?

> 
> > ---
> >  templates/lxc-busybox.in | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
> > index cb425ec..450c5a5 100644
> > --- a/templates/lxc-busybox.in
> > +++ b/templates/lxc-busybox.in
> > @@ -189,8 +189,11 @@ configure_busybox()
> >      # passwd exec must be setuid
> >      chmod +s $rootfs/bin/passwd
> >      touch $rootfs/etc/shadow
> > +
> >      echo "setting root passwd to root"
> > +    mount --bind /lib $rootfs/lib
> >      echo "root:root" | chroot $rootfs chpasswd
> > +    umount $rootfs/lib
> >
> >
> >      # add ssh functionality if dropbear package available on host
> > --
> > 1.7.11.7
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Precog is a next-generation analytics platform capable of advanced
> > analytics on semi-structured data. The platform includes APIs for building
> > apps and a phenomenal toolset for data science. Developers can use
> > our toolset for easy data analysis & visualization. Get a free account!
> > http://www2.precog.com/precogplatform/slashdotnewsletter
> > _______________________________________________
> > Lxc-devel mailing list
> > Lxc-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/lxc-devel






More information about the lxc-devel mailing list