blob: 45c4f58c215afcc5dfbf8e09e0a8f102ef974571 [file]
#!/bin/bash
bins=(
busybox
flasher
@EXTRA_BINS@
)
busybox_bins=(
awk cat grep kill sed sh sort stty test umount watchdog
reboot
)
mkdir -p /run/initramfs
cd /run/initramfs
mkdir -p {bin,lib}
if [ ! -e usr ]; then
ln -s . usr || exit
fi
copy_bin() {
local bin="$1"
if [ -e bin/"$bin" ]; then
echo "Skipping existing bin/$bin" >&2
return 0
fi
local abs
abs=$(type -tP "$bin") || return
if [ -L "$abs" ]; then
local tgt
tgt="$(readlink "$abs")" || return
tgt="$(basename "$tgt")" || return
ln -sv "$tgt" bin/"$bin" || return
copy_bin "$tgt"
return
fi
cp -v "$abs" bin/"$bin" || return
local out
out="$(LD_TRACE_LOADED_OBJECTS=1 "$abs")" || return
echo "$out" | grep /lib/ | sed 's,.*\W\(/[^ ]*[.]so[^ ]*\)\W.*,\1,g' | xargs cp -nvt lib/ || exit
}
for bin in "${bins[@]}"; do
copy_bin "$bin" || exit
done
for lnk in "${busybox_bins[@]}"; do
if ! busybox --list | grep -q "^$lnk$"; then
echo "Busybox Missing $lnk" >&2
exit 1
fi
if [ ! -e bin/"$lnk" ]; then
ln -s busybox bin/"$lnk"
fi
done
cp -nv /usr/share/shutdown-init.sh shutdown
chmod +x shutdown