52 lines
1.4 KiB
Bash
52 lines
1.4 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
#%stage: boot
|
||
|
#%depends: progs
|
||
|
#
|
||
|
if use_script busybox; then
|
||
|
if [ ! -x "/usr/bin/busybox" ]; then
|
||
|
echo "[BUSYBOX] No Busybox executable was found"
|
||
|
else
|
||
|
for i in `busybox | grep Curr -A 200 | grep -v "Currently defined f"`; do
|
||
|
DIR=bin
|
||
|
busyfile="${i/,/}"
|
||
|
# skip programs that do not work properly (if they exist)
|
||
|
if [ -e "bin/$busyfile" -o -e "sbin/$busyfile" ]; then
|
||
|
case $busyfile in
|
||
|
# modprobe: breaks udev
|
||
|
# fsck: breaks fsck.ext3
|
||
|
# umount: does not know -f
|
||
|
# sleep: can only use full integers (no floats)
|
||
|
# init: no need for init in initrd (breaks bootchart)
|
||
|
# cp: missing -v (breaks bootchart)
|
||
|
modprobe|fsck|umount|mount|sleep|init|cp)
|
||
|
continue
|
||
|
;;
|
||
|
esac
|
||
|
fi
|
||
|
if [ -h "bin/$busyfile" ]; then
|
||
|
# don't process symlinks
|
||
|
continue
|
||
|
elif [ -e "bin/$busyfile" ]; then
|
||
|
verbose "[BUSYBOX] replacing $DIR/$busyfile"
|
||
|
rm -f bin/$busyfile
|
||
|
elif [ -e "sbin/$busyfile" ]; then
|
||
|
DIR=sbin
|
||
|
rm -f sbin/$busyfile
|
||
|
verbose "[BUSYBOX] replacing $DIR/$busyfile"
|
||
|
fi
|
||
|
# we have to remove the copied program files from the
|
||
|
# internal list so we only get shared libs that are
|
||
|
# actually used
|
||
|
declare -i binc
|
||
|
for ((binc=0 ; $binc<${#initrd_bins[@]} ; binc++)); do
|
||
|
${A##*/}
|
||
|
if [ "${initrd_bins[$binc]##*/}}" = "$busyfile" ]; then
|
||
|
initrd_bins[$binc]=''
|
||
|
fi
|
||
|
done
|
||
|
ln -s ../bin/busybox "$DIR/$busyfile"
|
||
|
done
|
||
|
fi
|
||
|
fi
|