diff --git a/base/mkinitramfs/mkinitramfs.sh b/base/mkinitramfs/mkinitramfs.sh
index f5b1fba3f..efa8efb07 100644
--- a/base/mkinitramfs/mkinitramfs.sh
+++ b/base/mkinitramfs/mkinitramfs.sh
@@ -13,73 +13,86 @@
 # GNU General Public License can be found in the file COPYING.
 # --- SDE-COPYRIGHT-NOTE-END ---
 
-set -e
-
 root=
 kernever=
 template=
 running=
 
 mkinitrd_usage() {
-	cat <<-EOT
-	Usage: $0 [ -R <root> ] [ -T <template> ] [<kernelver>]
-		root.....: location of the sandbox to work in
-		           (default: /)
-		template.: file to use as template for this image
-		           (default: \$root/boot/initrd.img)
-		kernelver: kerner version to use when grabbing the
-		           modules. (default: $( uname -r ))
-	EOT
+	cat <<EOT
+Usage: $0 [ -R <root> ] [ -T <template> ] [<kernelver>]
+	root.....: location of the sandbox to work in
+	           (default: /)
+	template.: file to use as template for this image
+	           (default: \$root/boot/initrd.img)
+	kernelver: kerner version to use when grabbing the
+	           modules. (default: $( uname -r ))
+EOT
 }
 
-while [ $# -gt 1 ]; do
+while [ $# -gt 0 ]; do
 	case "$1" in
 		-R)	root="$2"; shift ;;
 		-T)	template="$2"; shift ;;
 		[0-9]*)	kernelver="$1" ;;
-		*)	usage; exit 1 ;; 
+		*)	mkinitrd_usage; exit 1 ;; 
 	esac
 	shift
 done
 
 # $root - root of the sandbox
 [ "$root" ] || root="/"
-if [ -d "$root" ]; then
+if [ ! -d "$root" ]; then
 	echo "ERROR: '$root' is not a directory"
+	mkinitrd_usage
 	exit 2
 else
 	root=$( cd "$root"; pwd -P )
-	echo "root: '$root'"
-
 	[ "$root" != "/" ] || root=""
 fi
 
+
+# $kernelver - kernel version, only useful if we have modules
+if [ -z "$kernelver" ]; then
+	kernelver=$( uname -r )
+	running=yes
+fi
+
 # $template - cpio.gz file to use as base for this initrd
 [ "$template" ] || template="${root}/boot/initrd.img"
 if [ ! -r "$template" ]; then
 	echo "ERROR: template '$template' not found."
+	mkinitrd_usage
 	exit 3
 else
 	echo "template: '${template#$root}'"
 fi
 
-# $kernelver - kernel version, only useful if we have modules
-if [ -z "$kernelver" ]; then
-	kernelver=$( uname -r )
-	running=yes
-fi
-
 moddir="${root}/lib/modules/$kernelver"
 sysmap="${root}/boot/System.map_$kernelver"
 if [ -d "$moddir" ]; then
-	echo "kernel: $kernelver, module dir: $moddir"
+	echo "kernel: $kernelver, ${root:+root: $root, }module dir: ${moddir#$root}"
 	if [ ! -r "$sysmap" ]; then
 		echo "ERROR: System.map file not found."
+		mkinitrd_usage
 		exit 4
 	fi
 else
-	echo "kernel: $kernelver, no modules found."
+	echo "kernel: $kernelver, ${root:+root: $root, }no modules found."
 	moddir=
 fi
 
+if [ $UID -ne 0 ]; then
+	echo "ERROR: only root can run $0."
+	mkinitrd_usage
+	exit 5
+fi
+
+for tool in mktemp cpio gzip gunzip; do
+	if [ -z "$( type -p $tool )" ]; then
+		echo "ERROR: $tool is no available"
+		exit 6
+	fi
+done
+
 echo "done."