From 9e214906db8b351be775901dc4e8fc070bfacf1b Mon Sep 17 00:00:00 2001 From: Serge Hallyn Date: Wed, 23 Oct 2013 01:02:59 +0000 Subject: [PATCH] lxc-busybox: if in userns, don't try to mknod MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Serge Hallyn Acked-by: Stéphane Graber --- 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 29dc36d60..25125e4c5 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 -- 2.47.2