[lxc-devel] [PATCH] Create busybox commands as symlinks instead of hardlinks
Stéphane Graber
stgraber at ubuntu.com
Fri Nov 30 22:10:55 UTC 2012
On 11/30/2012 11:49 AM, Dwight Engen wrote:
> I was getting a "Too many links" error when creating a busybox container on
> a btrfs file system. This change has the template create the links as
> symlinks instead. It also generates the list of commands to be symlinked from
> busybox itself instead of a hardcoded list in the template.
>
> Also set the root password to root, to match what other templates do.
>
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Looks good, thanks.
Acked-by: Stéphane Graber <stgraber at ubuntu.com>
> ---
> templates/lxc-busybox.in | 49 +++++++++------------------------------------
> 1 files changed, 10 insertions(+), 39 deletions(-)
>
> diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
> index f38d77e..91095a3 100644
> --- a/templates/lxc-busybox.in
> +++ b/templates/lxc-busybox.in
> @@ -151,40 +151,6 @@ configure_busybox()
> {
> rootfs=$1
>
> - functions="\
> - [ [[ addgroup adduser adjtimex ar arp arping ash awk basename \
> - brctl bunzip2 bzcat bzip2 cal cat catv chattr chgrp chmod \
> - chown chpasswd chpst chroot chrt chvt cksum clear cmp comm \
> - cp cpio crond crontab cryptpw cut date dc dd deallocvt \
> - delgroup deluser df dhcprelay diff dirname dmesg dnsd dos2unix \
> - du dumpkmap dumpleases echo ed egrep eject env envdir envuidgid \
> - ether-wake expand expr fakeidentd false fbset fdformat fdisk \
> - fetchmail fgrep find findfs fold free freeramdisk fsck \
> - fsck.minix ftpget ftpput fuser getopt getty grep gunzip gzip \
> - halt hdparm head hexdump hostid hostname httpd hwclock id \
> - ifconfig ifdown ifenslave ifup inetd init insmod install ip \
> - ipaddr ipcalc ipcrm ipcs iplink iproute iprule iptunnel \
> - kbd_mode kill killall killall5 klogd last length less linux32 \
> - linux64 linuxrc ln loadfont loadkmap logger login logname \
> - logread losetup lpd lpq lpr ls lsattr lsmod lzmacat makedevs \
> - md5sum mdev mesg microcom mkdir mkfifo mkfs.minix mknod mkswap \
> - mktemp modprobe more mount mountpoint msh mt mv nameif nc \
> - netstat nice nmeter nohup nslookup od openvt passwd patch \
> - pgrep pidof ping ping6 pipe_progress pivot_root pkill poweroff \
> - printenv printf ps pscan pwd raidautorun rdate readahead \
> - readlink readprofile realpath reboot renice reset resize rm \
> - rmdir rmmod route rpm rpm2cpio run-parts runlevel runsv \
> - runsvdir rx script sed sendmail seq setarch setconsole \
> - setkeycodes setlogcons setsid setuidgid sh sha1sum slattach \
> - sleep softlimit sort split start-stop-daemon stat strings \
> - stty su sulogin sum sv svlogd swapoff swapon switch_root \
> - sync sysctl syslogd tac tail tar taskset tcpsvd tee telnet \
> - telnetd test tftp tftpd time top touch tr traceroute \
> - true tty ttysize udhcpc udhcpd udpsvd umount uname uncompress \
> - unexpand uniq unix2dos unlzma unzip uptime usleep uudecode \
> - uuencode vconfig vi vlock watch watchdog wc wget which \
> - who whoami xargs yes zcat zcip"
> -
> type busybox >/dev/null
>
> if [ $? -ne 0 ]; then
> @@ -206,8 +172,14 @@ configure_busybox()
> return 1
> fi
>
> - # do hardlink to busybox for the different commands
> - for i in $functions; do ln $rootfs/bin/busybox $rootfs/bin/$i; done
> + # symlink busybox for the commands it supports
> + # it would be nice to just use "chroot $rootfs busybox --install -s /bin"
> + # but that only works right in a chroot with busybox >= 1.19.0
> + pushd $rootfs/bin > /dev/null || return 1
> + ./busybox --help | grep 'Currently defined functions:' -A300 | \
> + grep -v 'Currently defined functions:' | tr , '\n' | \
> + xargs -n1 ln -s busybox
> + popd > /dev/null
>
> # relink /sbin/init
> ln $rootfs/bin/busybox $rootfs/sbin/init
> @@ -215,9 +187,8 @@ configure_busybox()
> # passwd exec must be setuid
> chmod +s $rootfs/bin/passwd
> touch $rootfs/etc/shadow
> - chroot $rootfs /bin/passwd -d root
> -
> - echo "No password for 'root', please change !"
> + echo "setting root passwd to root"
> + echo "root:root" | chroot $rootfs chpasswd
>
> return 0
> }
>
--
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: 899 bytes
Desc: OpenPGP digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20121130/4fed4ccf/attachment.pgp>
More information about the lxc-devel
mailing list