Commit 6902a6c6 by Dwight Engen Committed by Stéphane Graber

Create busybox commands as symlinks instead of hardlinks

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: 's avatarDwight Engen <dwight.engen@oracle.com> Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
parent 1d4f0646
......@@ -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
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment