Index: kernel/generic/include/lib/rd.h
===================================================================
--- kernel/generic/include/lib/rd.h	(revision ff48a15c09c90bcd962af59dd7a0a1bf266de1cc)
+++ kernel/generic/include/lib/rd.h	(revision d68253a4d9f9ef895ded8023f373eff11acfc672)
@@ -67,5 +67,5 @@
 
 /** RAM disk header */
-typedef struct {
+struct rd_header {
 	uint8_t magic[RD_MAGIC_SIZE];
 	uint8_t version;
@@ -73,7 +73,9 @@
 	uint32_t header_size;
 	uint64_t data_size;
-} rd_header;
+} __attribute__ ((packed));
 
-extern int init_rd(rd_header * addr, size_t size);
+typedef struct rd_header rd_header_t;
+
+extern int init_rd(rd_header_t *addr, size_t size);
 
 #endif
Index: kernel/generic/src/lib/rd.c
===================================================================
--- kernel/generic/src/lib/rd.c	(revision ff48a15c09c90bcd962af59dd7a0a1bf266de1cc)
+++ kernel/generic/src/lib/rd.c	(revision d68253a4d9f9ef895ded8023f373eff11acfc672)
@@ -43,5 +43,4 @@
 #include <sysinfo/sysinfo.h>
 #include <ddi/ddi.h>
-#include <print.h>
 #include <align.h>
 
@@ -53,5 +52,5 @@
  * tasks.
  */  
-int init_rd(rd_header * header, size_t size)
+int init_rd(rd_header_t *header, size_t size)
 {
 	/* Identify RAM disk */
@@ -81,8 +80,5 @@
 	if ((hsize % FRAME_SIZE) || (dsize % FRAME_SIZE))
 		return RE_UNSUPPORTED;
-	
-	if (dsize % FRAME_SIZE)
-		return RE_UNSUPPORTED;
-
+		
 	if (hsize > size)
 		return RE_INVALID;
Index: kernel/generic/src/main/kinit.c
===================================================================
--- kernel/generic/src/main/kinit.c	(revision ff48a15c09c90bcd962af59dd7a0a1bf266de1cc)
+++ kernel/generic/src/main/kinit.c	(revision d68253a4d9f9ef895ded8023f373eff11acfc672)
@@ -179,5 +179,5 @@
 				ipc_phone_0 = &utask->answerbox;
 		} else {
-			int rd = init_rd((rd_header *) init.tasks[i].addr,
+			int rd = init_rd((rd_header_t *) init.tasks[i].addr,
 			    init.tasks[i].size);
 			
