Index: boot/arch/amd64/Makefile.inc
===================================================================
--- boot/arch/amd64/Makefile.inc	(revision 960f84768e13fb491ebebcac42ca8af66a4cd0d3)
+++ boot/arch/amd64/Makefile.inc	(revision 9fe962d6899951f3ad0ad9b7d1f14025013170a5)
@@ -27,15 +27,18 @@
 #
 
-TASKS = \
+INIT_TASKS = \
 	$(USPACEDIR)/srv/ns/ns \
+	$(USPACEDIR)/app/init/init \
+	$(USPACEDIR)/srv/devmap/devmap \
+	$(USPACEDIR)/srv/rd/rd \
+	$(USPACEDIR)/srv/vfs/vfs \
+	$(USPACEDIR)/srv/fs/tmpfs/tmpfs
+
+RD_TASKS = \
 	$(USPACEDIR)/srv/pci/pci \
 	$(USPACEDIR)/srv/fb/fb \
 	$(USPACEDIR)/srv/kbd/kbd \
-	$(USPACEDIR)/srv/vfs/vfs \
-	$(USPACEDIR)/srv/fs/tmpfs/tmpfs \
+	$(USPACEDIR)/srv/console/console \
 	$(USPACEDIR)/srv/fs/fat/fat \
-	$(USPACEDIR)/srv/devmap/devmap \
-	$(USPACEDIR)/srv/console/console \
-	$(USPACEDIR)/app/init/init \
 	$(USPACEDIR)/app/tetris/tetris \
 	$(USPACEDIR)/app/tester/tester \
@@ -44,15 +47,22 @@
 build: $(BASE)/image.iso
 
-$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(TASKS)
+$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_TASKS)
 	mkdir -p arch/$(ARCH)/iso/boot/grub
 	cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
 	cp arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/iso/boot/grub/
 	cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
-	for task in $(TASKS) ; do \
+	for task in $(INIT_TASKS) ; do \
 		cp $$task arch/$(ARCH)/iso/boot/ ; \
 	done
+	for task in $(RD_TASKS) ; do \
+		cp $$task $(USPACEDIR)/dist/sbin/ ; \
+	done
+	$(BASE)/tools/mktmpfs.py 4096 $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.img
 	mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
 
 clean:
+	-for task in $(RD_TASKS) ; do \
+		rm -f $(USPACEDIR)/dist/sbin/`basename $$task` ; \
+	done
 	-rm -fr arch/$(ARCH)/iso
 	-rm -f $(BASE)/image.iso
Index: boot/arch/amd64/grub/menu.lst
===================================================================
--- boot/arch/amd64/grub/menu.lst	(revision 960f84768e13fb491ebebcac42ca8af66a4cd0d3)
+++ boot/arch/amd64/grub/menu.lst	(revision 9fe962d6899951f3ad0ad9b7d1f14025013170a5)
@@ -3,17 +3,11 @@
 
 title=HelenOS
-root (cd)
-kernel /boot/kernel.bin
-module /boot/ns
-module /boot/init
-module /boot/pci
-module /boot/fb
-module /boot/kbd
-module /boot/console
-module /boot/tetris
-module /boot/tester
-module /boot/klog
-module /boot/tmpfs
-module /boot/fat
-module /boot/vfs
-module /boot/devmap
+	root (cd)
+	kernel /boot/kernel.bin
+	module /boot/ns
+	module /boot/init
+	module /boot/devmap
+	module /boot/rd
+	module /boot/vfs
+	module /boot/tmpfs
+	module /boot/initrd.img
Index: boot/arch/ia32/Makefile.inc
===================================================================
--- boot/arch/ia32/Makefile.inc	(revision 960f84768e13fb491ebebcac42ca8af66a4cd0d3)
+++ boot/arch/ia32/Makefile.inc	(revision 9fe962d6899951f3ad0ad9b7d1f14025013170a5)
@@ -27,15 +27,18 @@
 #
 
-TASKS = \
+INIT_TASKS = \
 	$(USPACEDIR)/srv/ns/ns \
+	$(USPACEDIR)/app/init/init \
+	$(USPACEDIR)/srv/devmap/devmap \
+	$(USPACEDIR)/srv/rd/rd \
+	$(USPACEDIR)/srv/vfs/vfs \
+	$(USPACEDIR)/srv/fs/tmpfs/tmpfs
+
+RD_TASKS = \
 	$(USPACEDIR)/srv/pci/pci \
 	$(USPACEDIR)/srv/fb/fb \
 	$(USPACEDIR)/srv/kbd/kbd \
 	$(USPACEDIR)/srv/console/console \
-	$(USPACEDIR)/srv/vfs/vfs \
-	$(USPACEDIR)/srv/fs/tmpfs/tmpfs \
 	$(USPACEDIR)/srv/fs/fat/fat \
-	$(USPACEDIR)/srv/devmap/devmap \
-	$(USPACEDIR)/app/init/init \
 	$(USPACEDIR)/app/tetris/tetris \
 	$(USPACEDIR)/app/tester/tester \
@@ -44,15 +47,22 @@
 build: $(BASE)/image.iso
 
-$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(TASKS)
+$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_TASKS)
 	mkdir -p arch/$(ARCH)/iso/boot/grub
 	cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
 	cp arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/iso/boot/grub/
 	cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
-	for task in $(TASKS) ; do \
+	for task in $(INIT_TASKS) ; do \
 		cp $$task arch/$(ARCH)/iso/boot/ ; \
 	done
+	for task in $(RD_TASKS) ; do \
+		cp $$task $(USPACEDIR)/dist/sbin/ ; \
+	done
+	$(BASE)/tools/mktmpfs.py 4096 $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.img
 	mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
 
 clean:
+	-for task in $(RD_TASKS) ; do \
+		rm -f $(USPACEDIR)/dist/sbin/`basename $$task` ; \
+	done
 	-rm -fr arch/$(ARCH)/iso
 	-rm -f $(BASE)/image.iso
Index: boot/arch/ia32/grub/menu.lst
===================================================================
--- boot/arch/ia32/grub/menu.lst	(revision 960f84768e13fb491ebebcac42ca8af66a4cd0d3)
+++ boot/arch/ia32/grub/menu.lst	(revision 9fe962d6899951f3ad0ad9b7d1f14025013170a5)
@@ -3,17 +3,11 @@
 
 title=HelenOS
-root (cd)
-kernel /boot/kernel.bin
-module /boot/ns
-module /boot/init
-module /boot/pci
-module /boot/fb
-module /boot/kbd
-module /boot/console
-module /boot/vfs
-module /boot/tmpfs
-module /boot/fat
-module /boot/devmap
-module /boot/tetris
-module /boot/tester
-module /boot/klog
+	root (cd)
+	kernel /boot/kernel.bin
+	module /boot/ns
+	module /boot/init
+	module /boot/devmap
+	module /boot/rd
+	module /boot/vfs
+	module /boot/tmpfs
+	module /boot/initrd.img
Index: boot/arch/ppc32/loader/Makefile
===================================================================
--- boot/arch/ppc32/loader/Makefile	(revision 960f84768e13fb491ebebcac42ca8af66a4cd0d3)
+++ boot/arch/ppc32/loader/Makefile	(revision 9fe962d6899951f3ad0ad9b7d1f14025013170a5)
@@ -76,12 +76,15 @@
 	$(KERNELDIR)/kernel.bin \
 	$(USPACEDIR)/srv/ns/ns \
+	$(USPACEDIR)/app/init/init \
+	$(USPACEDIR)/srv/devmap/devmap \
+	$(USPACEDIR)/srv/rd/rd \
+	$(USPACEDIR)/srv/vfs/vfs \
+	$(USPACEDIR)/srv/fs/tmpfs/tmpfs
+
+RD_TASKS = \
 	$(USPACEDIR)/srv/fb/fb \
 	$(USPACEDIR)/srv/kbd/kbd \
 	$(USPACEDIR)/srv/console/console \
-	$(USPACEDIR)/srv/vfs/vfs \
-	$(USPACEDIR)/srv/fs/tmpfs/tmpfs \
 	$(USPACEDIR)/srv/fs/fat/fat \
-	$(USPACEDIR)/srv/devmap/devmap \
-	$(USPACEDIR)/app/init/init \
 	$(USPACEDIR)/app/tetris/tetris \
 	$(USPACEDIR)/app/tester/tester \
@@ -97,6 +100,6 @@
 -include Makefile.depend
 
-image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) $(OBJECTS)
-	$(LD) -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) -o $@
+image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
+	$(LD) -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) -o $@
 
 depend:
@@ -104,8 +107,15 @@
 
 clean:
-	-rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) image.boot Makefile.depend
+	-for task in $(RD_TASKS) ; do \
+		rm -f $(USPACEDIR)/dist/sbin/`basename $$task` ; \
+	done
+	-rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.boot Makefile.depend
 
-_components.h _components.c _link.ld $(COMPONENT_OBJECTS): $(COMPONENTS) _link.ld.in
-	../../../tools/pack.py $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) 4096 "unsigned int" $(COMPONENTS)
+_components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_TASKS) _link.ld.in
+	for task in $(RD_TASKS) ; do \
+		cp $$task $(USPACEDIR)/dist/sbin/ ; \
+	done
+	../../../../tools/mktmpfs.py 4096 $(USPACEDIR)/dist/ initrd.img
+	../../../tools/pack.py $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) 4096 "unsigned int" $(COMPONENTS) ./initrd.img
 
 %.o: %.S
Index: boot/arch/sparc64/loader/Makefile
===================================================================
--- boot/arch/sparc64/loader/Makefile	(revision 960f84768e13fb491ebebcac42ca8af66a4cd0d3)
+++ boot/arch/sparc64/loader/Makefile	(revision 9fe962d6899951f3ad0ad9b7d1f14025013170a5)
@@ -79,12 +79,15 @@
 	$(KERNELDIR)/kernel.bin \
 	$(USPACEDIR)/srv/ns/ns \
+	$(USPACEDIR)/app/init/init \
+	$(USPACEDIR)/srv/devmap/devmap \
+	$(USPACEDIR)/srv/rd/rd \
+	$(USPACEDIR)/srv/vfs/vfs \
+	$(USPACEDIR)/srv/fs/tmpfs/tmpfs
+
+RD_TASKS = \
 	$(USPACEDIR)/srv/fb/fb \
 	$(USPACEDIR)/srv/kbd/kbd \
 	$(USPACEDIR)/srv/console/console \
-	$(USPACEDIR)/srv/vfs/vfs \
-	$(USPACEDIR)/srv/fs/tmpfs/tmpfs \
 	$(USPACEDIR)/srv/fs/fat/fat \
-	$(USPACEDIR)/srv/devmap/devmap \
-	$(USPACEDIR)/app/init/init \
 	$(USPACEDIR)/app/tetris/tetris \
 	$(USPACEDIR)/app/tester/tester \
@@ -100,6 +103,6 @@
 -include Makefile.depend
 
-image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) $(OBJECTS)
-	$(LD) -Map image.map -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) -o $@
+image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
+	$(LD) -Map image.map -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) -o $@
 
 depend:
@@ -107,8 +110,15 @@
 
 clean:
-	-rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) $(OBJECTS) image.boot image.map image.disasm Makefile.depend
+	-for task in $(RD_TASKS) ; do \
+		rm -f $(USPACEDIR)/dist/sbin/`basename $$task` ; \
+	done
+	-rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.boot image.map image.disasm Makefile.depend
 
-_components.h _components.c _link.ld $(COMPONENT_OBJECTS): $(COMPONENTS) _link.ld.in
-	../../../tools/pack.py $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) 1 "unsigned long" $(COMPONENTS)
+_components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_TASKS) _link.ld.in
+	for task in $(RD_TASKS) ; do \
+		cp $$task $(USPACEDIR)/dist/sbin/ ; \
+	done
+	../../../../tools/mktmpfs.py 16384 $(USPACEDIR)/dist/ initrd.img
+	../../../tools/pack.py $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) 1 "unsigned long" $(COMPONENTS) ./initrd.img
 
 %.o: %.S
