Index: kernel/doc/AUTHORS
===================================================================
--- kernel/doc/AUTHORS	(revision 60133d0afd1e7d9529d61aac6419c1afec8cd212)
+++ kernel/doc/AUTHORS	(revision ff3a34b23d37dee4709e858ec1869756a88b4172)
@@ -5,3 +5,4 @@
 Josef Cejka <cejka@helenos.eu>
 Sergey Bondari <bondari@helenos.eu>
+Michal Konopa <mkonopa@seznam.cz>
 
Index: kernel/generic/include/errno.h
===================================================================
--- kernel/generic/include/errno.h	(revision 60133d0afd1e7d9529d61aac6419c1afec8cd212)
+++ kernel/generic/include/errno.h	(revision ff3a34b23d37dee4709e858ec1869756a88b4172)
@@ -38,4 +38,5 @@
 /* 1-255 are kernel error codes, 256-512 are user error codes */
 
+#define EOK			0	/* No error */
 #define ENOENT		-1	/* No such entry */
 #define ENOMEM		-2	/* Not enough memory */
Index: kernel/generic/include/lib/rd.h
===================================================================
--- kernel/generic/include/lib/rd.h	(revision 60133d0afd1e7d9529d61aac6419c1afec8cd212)
+++ kernel/generic/include/lib/rd.h	(revision ff3a34b23d37dee4709e858ec1869756a88b4172)
@@ -41,5 +41,5 @@
  * RAM disk version
  */
-#define	RD_VERSION	0
+#define	RD_VERSION	1
 
 /**
Index: kernel/generic/src/lib/rd.c
===================================================================
--- kernel/generic/src/lib/rd.c	(revision 60133d0afd1e7d9529d61aac6419c1afec8cd212)
+++ kernel/generic/src/lib/rd.c	(revision ff3a34b23d37dee4709e858ec1869756a88b4172)
@@ -43,7 +43,14 @@
 #include <sysinfo/sysinfo.h>
 #include <ddi/ddi.h>
+#include <print.h>
+#include <align.h>
 
 static parea_t rd_parea;		/**< Physical memory area for rd. */
 
+/**
+ * RAM disk initialization routine. At this point, the RAM disk memory is shared
+ * and information about the share is provided as sysinfo values to the userspace
+ * tasks.
+ */  
 int init_rd(rd_header * header, size_t size)
 {
@@ -75,4 +82,7 @@
 		return RE_UNSUPPORTED;
 	
+	if (dsize % FRAME_SIZE)
+		return RE_UNSUPPORTED;
+
 	if (hsize > size)
 		return RE_INVALID;
@@ -81,5 +91,5 @@
 		dsize = size - hsize;
 	
-	rd_parea.pbase = KA2PA((void *) header + hsize);
+	rd_parea.pbase = ALIGN_DOWN((uintptr_t) KA2PA((void *) header + hsize), FRAME_SIZE);
 	rd_parea.vbase = (uintptr_t) ((void *) header + hsize);
 	rd_parea.frames = SIZE2FRAMES(dsize);
@@ -88,4 +98,5 @@
 
 	sysinfo_set_item_val("rd", NULL, true);
+	sysinfo_set_item_val("rd.header_size", NULL, hsize);	
 	sysinfo_set_item_val("rd.size", NULL, dsize);
 	sysinfo_set_item_val("rd.address.physical", NULL, (unative_t)
Index: kernel/generic/src/main/kinit.c
===================================================================
--- kernel/generic/src/main/kinit.c	(revision 60133d0afd1e7d9529d61aac6419c1afec8cd212)
+++ kernel/generic/src/main/kinit.c	(revision ff3a34b23d37dee4709e858ec1869756a88b4172)
@@ -168,4 +168,5 @@
 		task_t *utask = task_run_program((void *) init.tasks[i].addr,
 		    "uspace");
+		
 		if (utask) {
 			/*
@@ -182,5 +183,5 @@
 			
 			if (rd != RE_OK)
-				printf("Init binary %zd not used.\n", i);
+				printf("Init binary %zd not used, error code %d.\n", i, rd);
 		}
 	}
