Trying to understand initramfs

Linux, initramfs, kernel No Comments »

I just want to have a faster booting process to test and learn more about Linux on my HTC Wizard.

I decided to start from scratch rather than enjoying the GPE. I am going to start with a bare minimum system - with just a busybox.

Instead of having two separate images, zImage and initrd, I believe having a single zImage is not only cool, but also convenient. 

I created the initramfs folder and bin,sbin,dev,etc,sys,proc, newroot folders under initramfs

I downloaded busybox 1.12.1 

Compiled busybox using the cross compiler and installed it using CONFIG_PREFIX=path/to/initramfs

Created the following generic terminals

mknod tty c 5 0

mknod console c 5 1

mknod null c 1 3

chmod 666 tty console null

mknod ram0 b 1 0

chmod 600 ram0

Created a initramfs.cpio.gz using the following command:

find . | cpio –quiet -o -H newc | gzip > ../initramfs.cpio.gz

Then I configured the option CONFIG_INITRAMFS_SOURCE=/path/to/initramfs.cpio.gz

Recompiled the kernel

The zImage is around 2.13MB.

I reconfigured the kernel and set the path to the source of initramfs.cpio.gz

HTC Wizard won’t load kernel. I get the following error

VFS: Cannot open root device "ram0" or unknown-block(1,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

I have read almost all posts related to this error and unable to get out of this. If you ahve any suggestions, let me know

I may need to clean the distribution and start all over again rather than recooking the same thing

Share/Save/Bookmark

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in