[lxc-devel] [PATCH 3/3] lxc-busybox: if in userns, don't try to mknod

Stéphane Graber stgraber at ubuntu.com
Wed Oct 23 23:13:15 UTC 2013


On Wed, Oct 23, 2013 at 01:02:59AM +0000, Serge Hallyn wrote:
> From: Serge Hallyn <serge.hallyn at ubuntu.com>
> 
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

We really should be working on a shared set of functions all templates
can source instead of re-inventing the wheel over and over again
(thinking about config, fstab, architecture handling, locking, ...)

Acked-by: Stéphane Graber <stgraber at ubuntu.com>

> ---
>  templates/lxc-busybox.in | 44 +++++++++++++++++++++++++++++++-------------
>  1 file changed, 31 insertions(+), 13 deletions(-)
> 
> diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
> index cbdaaf3..7aa4130 100644
> --- a/templates/lxc-busybox.in
> +++ b/templates/lxc-busybox.in
> @@ -20,6 +20,17 @@
>  # License along with this library; if not, write to the Free Software
>  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>  
> +am_in_userns() {
> +    [ -e /proc/self/uid_map ] || { echo no; return; }
> +    [ "$(wc -l /proc/self/uid_map | awk '{ print $1 }')" -eq 1 ] || { echo yes; return; }
> +    line=$(awk '{ print $1 " " $2 " " $3 }' /proc/self/uid_map)
> +    [ "$line" = "0 0 4294967295" ] && { echo no; return; }
> +    echo yes
> +}
> +
> +in_userns=0
> +[ $(am_in_userns) = "yes" ] && in_userns=1
> +
>  install_busybox()
>  {
>      rootfs=$1
> @@ -55,19 +66,26 @@ $rootfs/usr/lib64"
>      pushd $rootfs/dev > /dev/null || return 1
>  
>      # minimal devices needed for busybox
> -    mknod tty c 5 0       || res=1
> -    mknod console c 5 1   || res=1
> -    chmod 666 tty console || res=1
> -    mknod tty0 c 4 0      || res=1
> -    mknod tty1 c 4 0      || res=1
> -    mknod tty5 c 4 0      || res=1
> -    chmod 666 tty0        || res=1
> -    mknod ram0 b 1 0      || res=1
> -    chmod 600 ram0        || res=1
> -    mknod null c 1 3      || res=1
> -    chmod 666 null        || res=1
> -    mknod urandom c 1 9   || res=1
> -    chmod 666 urandom     || res=1
> +    if [ $in_userns -eq 1 ]; then
> +        for dev in tty console tty0 tty1 tty5 ram0 null urandom; do
> +            touch $rootfs/dev/$dev
> +            echo "/dev/$dev dev/$dev    none bind 0 0" >> $path/fstab
> +        done
> +    else
> +        mknod tty c 5 0       || res=1
> +        mknod console c 5 1   || res=1
> +        chmod 666 tty console || res=1
> +        mknod tty0 c 4 0      || res=1
> +        mknod tty1 c 4 0      || res=1
> +        mknod tty5 c 4 0      || res=1
> +        chmod 666 tty0        || res=1
> +        mknod ram0 b 1 0      || res=1
> +        chmod 600 ram0        || res=1
> +        mknod null c 1 3      || res=1
> +        chmod 666 null        || res=1
> +        mknod urandom c 1 9   || res=1
> +        chmod 666 urandom     || res=1
> +    fi
>  
>      popd > /dev/null
>  
> -- 
> 1.8.1.2
> 
> 
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20131023/8333c643/attachment.pgp>


More information about the lxc-devel mailing list