diff -ur klibc-1.5.9/usr/kinit/run-init/runinitlib.c klibc-1.5.9.new/usr/kinit/run-init/runinitlib.c
--- klibc-1.5.9/usr/kinit/run-init/runinitlib.c	2008-03-28 21:25:36.000000000 +0100
+++ klibc-1.5.9.new/usr/kinit/run-init/runinitlib.c	2008-04-16 16:45:46.000000000 +0200
@@ -68,6 +68,16 @@
 # define MS_MOVE	8192
 #endif
 
+const char * program = "";
+
+static int report(const char * func, const char *error, const char *what)
+{
+    if(errno)
+    return fprintf(stderr, "%s: %s: %s: %s: %s\n", program, func, error, what, strerror(errno));
+    else
+    return fprintf(stderr, "%s: %s: %s: \"%s\".\n", program, func, error, what);
+}
+
 static int nuke(const char *what);
 
 static int nuke_dirent(int len, const char *dir, const char *name, dev_t me)
@@ -80,11 +90,16 @@
 	xlen = snprintf(path, bytes, "%s/%s", dir, name);
 	assert(xlen < bytes);
 
-	if (lstat(path, &st))
-		return ENOENT;	/* Return 0 since already gone? */
-
-	if (st.st_dev != me)
+	if (lstat(path, &st)){
+            report(__FUNCTION__, "lstat", path);
+		return 0;	/* Return 0 since already gone? */
+        }
+
+	if (st.st_dev != me){
+            errno = 0;
+            report(__FUNCTION__, "leaving alone mount", path);
 		return 0;	/* DO NOT recurse down mount points!!!!! */
+        }
 
 	return nuke(path);
 }
@@ -96,18 +111,27 @@
 	DIR *dir;
 	struct dirent *d;
 	int err = 0;
+        int found_err = 0;
 	struct stat st;
 
-	if (lstat(what, &st))
-		return errno;
+        if (lstat(what, &st)){
+            report(__FUNCTION__, "lstat", what);
+            return errno;
+        }
+
+        if (!S_ISDIR(st.st_mode)){
+            errno = ENOTDIR;
+            report(__FUNCTION__, "lstat", what);
+            return errno;
+        }
 
-	if (!S_ISDIR(st.st_mode))
-		return ENOTDIR;
 
 	if (!(dir = opendir(what))) {
 		/* EACCES means we can't read it.  Might be empty and removable;
 		   if not, the rmdir() in nuke() will trigger an error. */
-		return (errno == EACCES) ? 0 : errno;
+            report(__FUNCTION__, "opendir", what);
+            errno = ( (errno == EACCES) ? 0 : errno );
+            return errno;
 	}
 
 	while ((d = readdir(dir))) {
@@ -118,15 +142,12 @@
 			continue;
 
 		err = nuke_dirent(len, what, d->d_name, st.st_dev);
-		if (err) {
-			closedir(dir);
-			return err;
-		}
+		if (err) found_err = err;
 	}
 
 	closedir(dir);
 
-	return 0;
+        return found_err;
 }
 
 static int nuke(const char *what)
@@ -138,9 +159,13 @@
 	if (rv < 0) {
 		if (errno == EISDIR) {
 			/* It's a directory. */
-			err = nuke_dir(what);
-			if (!err)
+			errno = ( err = nuke_dir(what) );
+			if (!err){
 				err = rmdir(what) ? errno : err;
+                                if(err)
+                                    report(__FUNCTION__, "rmdir", what);
+                        }else
+                            report(__FUNCTION__, "nuke_dir", what);
 		} else {
 			err = errno;
 		}
@@ -190,7 +215,7 @@
 
 	/* Delete rootfs contents */
 	if (nuke_dir("/"))
-		return "nuking initramfs contents";
+		report (__FUNCTION__, "Error nuking initramfs contents","/");
 
 	/* Overmount the root */
 	if (mount(".", "/", NULL, MS_MOVE, NULL))
