diff options
-rw-r--r-- | modules.d/busybox/install-busybox-stage4.sh | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/modules.d/busybox/install-busybox-stage4.sh b/modules.d/busybox/install-busybox-stage4.sh index ad34b75c..55b1ab16 100644 --- a/modules.d/busybox/install-busybox-stage4.sh +++ b/modules.d/busybox/install-busybox-stage4.sh @@ -3,14 +3,17 @@ if hash busybox; then # check if the stage4 has a busybox in the same location # as within the initramfs. If so, we keep it and just hope - # that everything works out. If there is none, we can copy - # our busybox there safely + # that everything works out and that the apps are symlinked. + # Otherwise we copy it and activate applets in /opt/openslx/{s,}/bin bb_path="$(type -p busybox)" - if ! [ -x "${NEWROOT}/${bb_path}" ]; then - cp -f "$bb_path" "${NEWROOT}/${bb_path}" + if [ -n "$bb_path" ] && [ ! -x "${NEWROOT}/opt/openslx/bin/busybox" ]; then + mkdir -p "${NEWROOT}"/opt/openslx/{s,}bin + cp -f "$bb_path" "${NEWROOT}/opt/openslx/bin/busybox" + # --list-full gives {s,}bin prefixes + for app in $(busybox --list-full); do + ln -s "/opt/openslx/bin/busybox" "/opt/openslx/$app" \ + || warn "Failed to symlink '$app' to busybox." + done fi - # finally install the applets under /opt/openslx/bin - mkdir -p "${NEWROOT}/opt/openslx/bin" - busybox --install -s "${NEWROOT}/opt/openslx/bin" fi true |