]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
dracut: handle toplevel symlinks
authorHarald Hoyer <harald@redhat.com>
Thu, 19 May 2011 21:16:17 +0000 (23:16 +0200)
committerHarald Hoyer <harald@redhat.com>
Fri, 20 May 2011 12:03:50 +0000 (14:03 +0200)
dracut

diff --git a/dracut b/dracut
index 3ac7e56897936fbb95916ac7883df067378c8334..6f408ee7536013bbf2ae9f0f36e8103ce975253b 100755 (executable)
--- 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"