From: Harald Hoyer Date: Thu, 19 May 2011 21:16:17 +0000 (+0200) Subject: dracut: handle toplevel symlinks X-Git-Tag: 011~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=785a6cd21c19d849524bf6f592f4ef3add5abdf7;p=thirdparty%2Fdracut.git dracut: handle toplevel symlinks --- diff --git a/dracut b/dracut index 3ac7e5689..6f408ee75 100755 --- a/dracut +++ b/dracut @@ -472,18 +472,31 @@ export initdir dracutbasedir dracutmodules drivers \ # Create some directory structure first [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}" -mkdir -m 0755 -p "${initdir}${prefix}/lib" +[[ -h /lib ]] || mkdir -m 0755 -p "${initdir}${prefix}/lib" [[ $prefix ]] && ln -sfn "${prefix#/}/lib" "$initdir/lib" -if [[ $kernel_only != yes ]]; then +if [[ $prefix ]]; then for d in bin etc lib "$libdir" sbin tmp usr var; do + ln -sfn "${prefix#/}/${d#/}" "$initdir/$d" + done +fi + +if [[ $kernel_only != yes ]]; then + for d in bin etc lib "$libdir" sbin tmp usr var usr/bin usr/sbin; do [[ -e "${initdir}${prefix}/$d" ]] && continue - mkdir -m 0755 -p "${initdir}${prefix}/$d" - [[ $prefix ]] && ln -sfn "${prefix#/}/${d#/}" "$initdir/$d" + if [ -h "/$d" ]; then + inst "/$d" "${prefix}/$d" + else + mkdir -m 0755 -p "${initdir}${prefix}/$d" + fi done for d in proc sys sysroot root run run/lock run/initramfs; do - mkdir -m 0755 -p "$initdir/$d"; + if [ -h "/$d" ]; then + inst "/$d" + else + mkdir -m 0755 -p "$initdir/$d" + fi done ln -sfn /run "$initdir/var/run"