runqemu-export-rootfs: improve rpcbind error detection

mountd requires rpcbind or portmap. Check that one of these
services is running before doing anything else, and report
a user-friendly error when they are not found.

(From OE-Core rev: 16d6ec51f4b976c9b86a8b6bf6251089df2d2732)

Signed-off-by: Scott Garman <scott.a.garman@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Garman 2012-10-03 15:13:52 -07:00 committed by Richard Purdie
parent c435e4f9d2
commit 746a86758b
1 changed files with 24 additions and 9 deletions

View File

@ -100,6 +100,21 @@ fi
# See how we were called. # See how we were called.
case "$1" in case "$1" in
start) start)
PORTMAP_RUNNING=`ps -ef | grep portmap | grep -v grep`
RPCBIND_RUNNING=`ps -ef | grep rpcbind | grep -v grep`
if [[ "x$PORTMAP_RUNNING" = "x" && "x$RPCBIND_RUNNING" = "x" ]]; then
echo "======================================================="
echo "Error: neither rpcbind nor portmap appear to be running"
echo "Please install and start one of these services first"
echo "======================================================="
echo "Tip: for recent Ubuntu hosts, run:"
echo " sudo apt-get install rpcbind"
echo "Then add OPTIONS=\"-i -w\" to /etc/default/rpcbind and run"
echo " sudo service portmap restart"
exit 1
fi
echo "Starting User Mode rpc.mountd" echo "Starting User Mode rpc.mountd"
echo " $PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS" echo " $PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS"
$PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS $PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS
@ -107,25 +122,25 @@ case "$1" in
echo "=====================" echo "====================="
echo "Error starting MOUNTD" echo "Error starting MOUNTD"
echo "=====================" echo "====================="
ps -ef | grep -v grep | grep rpcbind 2>&1 > /dev/null if [ ! "x$RPCBIND_RUNNING" = "x" ] ; then
if [ $? = 0 ] ; then
echo " If you see an error above that says:" echo " If you see an error above that says:"
echo " RPC: Authentication error; why = Client credential too weak" echo " RPC: Authentication error; why = Client credential too weak"
echo " You need to change the startup of rpcbind" echo " You need to add the -i option when running rpcbind"
echo " on your host by doing the following as root:"
echo "===============================================" echo "==============================================="
echo " According to /etc/sysconfig/rpcbind, then " echo "For recent Fedora/RedHat hosts:"
echo " echo RPCBIND_ARGS=-i >> /etc/sysconfig/rpcbind" echo "Add RPCBIND_ARGS=-i to /etc/sysconfig/rpcbind"
echo " or" echo " or"
echo " echo RPCBIND_OPTIONS=-i >> /etc/sysconfig/rpcbind" echo "Add RPCBIND_OPTIONS=-i to /etc/sysconfig/rpcbind"
echo " /etc/init.d/rpcbind restart" echo "Then run as root: /etc/init.d/rpcbind restart"
echo "===============================================" echo "==============================================="
echo "For Ubuntu 11.10 hosts" echo "For recent Debian/Ubuntu hosts:"
echo "Add OPTIONS=\"-i -w\" to /etc/default/rpcbind" echo "Add OPTIONS=\"-i -w\" to /etc/default/rpcbind"
echo "sudo service portmap restart" echo "sudo service portmap restart"
fi fi
exit 1 exit 1
fi fi
echo "Starting User Mode nfsd" echo "Starting User Mode nfsd"
echo " $PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS" echo " $PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS"
$PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS $PSEUDO $PSEUDO_OPTS $OECORE_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS