|
Harald Hoyer |
55891e |
From f8342dd5f2235979db7b5fc0d54df408538921e6 Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
55891e |
From: Michal Soltys <soltys@ziu.info>
|
|
Harald Hoyer |
55891e |
Date: Mon, 17 Oct 2011 23:36:33 +0200
|
|
Harald Hoyer |
55891e |
Subject: [PATCH] check root candidates more carefully
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
This is from the following thread:
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
http://thread.gmane.org/gmane.linux.raid/35753/focus=35795
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
Additional tests + more specific info.
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
Signed-off-by: Michal Soltys <soltys@ziu.info>
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
[harald@redhat.com: usable_root(): relaxed check for root]
|
|
Harald Hoyer |
55891e |
---
|
|
Harald Hoyer |
55891e |
modules.d/99base/dracut-lib.sh | 9 +++++++++
|
|
Harald Hoyer |
55891e |
modules.d/99base/init | 12 ++++++++++--
|
|
Harald Hoyer |
55891e |
2 files changed, 19 insertions(+), 2 deletions(-)
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
|
|
Harald Hoyer |
55891e |
index bc4d7c9..2cfaf93 100755
|
|
Harald Hoyer |
55891e |
--- a/modules.d/99base/dracut-lib.sh
|
|
Harald Hoyer |
55891e |
+++ b/modules.d/99base/dracut-lib.sh
|
|
Harald Hoyer |
55891e |
@@ -544,3 +544,12 @@ foreach_uuid_until() (
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
return 1
|
|
Harald Hoyer |
55891e |
)
|
|
Harald Hoyer |
55891e |
+
|
|
Harald Hoyer |
55891e |
+usable_root() {
|
|
Harald Hoyer |
55891e |
+ local _d
|
|
Harald Hoyer |
55891e |
+ [ -d $1 ] || return 1
|
|
Harald Hoyer |
55891e |
+ for _d in proc sys dev; do
|
|
Harald Hoyer |
55891e |
+ [ -e "$1"/$_d ] || return 1
|
|
Harald Hoyer |
55891e |
+ done
|
|
Harald Hoyer |
55891e |
+ return 0
|
|
Harald Hoyer |
55891e |
+}
|
|
Harald Hoyer |
55891e |
diff --git a/modules.d/99base/init b/modules.d/99base/init
|
|
Harald Hoyer |
55891e |
index 06d61a8..556ac68 100755
|
|
Harald Hoyer |
55891e |
--- a/modules.d/99base/init
|
|
Harald Hoyer |
55891e |
+++ b/modules.d/99base/init
|
|
Harald Hoyer |
55891e |
@@ -286,10 +286,18 @@ getarg 'rd.break=mount' 'rdbreak=mount' && emergency_shell -n mount "Break mount
|
|
Harald Hoyer |
55891e |
# be sourced any number of times. As soon as one suceeds, no more are sourced.
|
|
Harald Hoyer |
55891e |
i=0
|
|
Harald Hoyer |
55891e |
while :; do
|
|
Harald Hoyer |
55891e |
- [ -d "$NEWROOT/proc" ] && break;
|
|
Harald Hoyer |
55891e |
+ if ismounted "$NEWROOT"; then
|
|
Harald Hoyer |
55891e |
+ usable_root "$NEWROOT" && break;
|
|
Harald Hoyer |
55891e |
+ umount "$NEWROOT"
|
|
Harald Hoyer |
55891e |
+ fi
|
|
Harald Hoyer |
55891e |
for f in $hookdir/mount/*.sh; do
|
|
Harald Hoyer |
55891e |
[ -f "$f" ] && . "$f"
|
|
Harald Hoyer |
55891e |
- [ -d "$NEWROOT/proc" ] && break;
|
|
Harald Hoyer |
55891e |
+ if ismounted "$NEWROOT"; then
|
|
Harald Hoyer |
55891e |
+ usable_root "$NEWROOT" && break;
|
|
Harald Hoyer |
55891e |
+ warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook"
|
|
Harald Hoyer |
55891e |
+ umount "$NEWROOT"
|
|
Harald Hoyer |
55891e |
+ rm -f "$f"
|
|
Harald Hoyer |
55891e |
+ fi
|
|
Harald Hoyer |
55891e |
done
|
|
Harald Hoyer |
55891e |
|
|
Harald Hoyer |
55891e |
i=$(($i+1))
|