commit:     856eafb006655b7dda630a94cbd16f5db9f781be
Author:     Doug Freed <dwfreed <AT> mtu <DOT> edu>
AuthorDate: Sat Dec 17 19:59:45 2016 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Sat Dec 17 23:27:37 2016 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=856eafb0

sh/init.sh.Linux.in: skip /proc test if no md5sum

This will also warn users if md5sum is missing, which serves as a pretty
good indicator that /usr is not mounted.

 sh/init.sh.Linux.in | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in
index fcae0d2..96555d2 100644
--- a/sh/init.sh.Linux.in
+++ b/sh/init.sh.Linux.in
@@ -11,6 +11,16 @@ if [ -d "@SYSCONFDIR@/rc.conf.d" ]; then
        done
 fi
 
+# check for md5sum, and probably /usr too
+if command -v md5sum >/dev/null; then
+       got_md5sum=true
+else
+       eerror "md5sum is missing, which suggests /usr is not mounted"
+       eerror "If you have separate /usr, it must be mounted by initramfs"
+       eerror "If not, you should check coreutils is installed correctly"
+       got_md5sum=false
+fi
+
 # By default VServer already has /proc mounted, but OpenVZ does not!
 # However, some of our users have an old proc image in /proc
 # NFC how they managed that, but the end result means we have to test if
@@ -21,9 +31,12 @@ fi
 mountproc=true
 f=/proc/self/environ
 if [ -e $f ]; then
-       if [ "$(VAR=a md5sum $f)" = "$(VAR=b md5sum $f)" ]; then
+       if $got_md5sum && [ "$(VAR=a md5sum $f)" = "$(VAR=b md5sum $f)" ]; then
                eerror "You have cruft in /proc that should be deleted"
        else
+               # If they don't have md5sum, this will fail in pretty ways if
+               # /proc isn't really mounted.  Oh well, their system is busted
+               # anyway, and they get to keep the pieces.
                einfo "/proc is already mounted"
                mountproc=false
        fi

Reply via email to