I am trying to cross-compile and boot a Linux 2.6 kernel for ARM using QEMU. I have basically followed the same instructions that are included in seemingly every single tutorial on the topic.Specifically:Download and compile kernel$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- versatile_defconfig$ #Disabled loadable modules and enabled initramfs$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- allCompile Busybox$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- arm$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- installCreate cpio archive from Busybox _install directory$ cd $BUSYBOX/_install$ find . | cpio -o -Hnewc | gzip > ../initramfs.gzBoot using qemu-system-arm$ qemu-system-arm -M versatilepb -m 200M -kernel $KERNEL/arch/arm/boot/zImage -initrd $BUSYBOX/initramfs.gz -append root=/dev/ram0The result is this:It looks like the kernel does not recognize the file system, but I don't know how to fix that. These are basically the exact steps that every single tutorial follows. There is no such thing as a cpiofs to enable in the kernel source.
What step am I missing to get my 2.6 ARM kernel running in QEMU?
linux;kernel;qemu;initramfs;arch arm
Success!The solution, as suggested, was to embed the initrd image into the kernel by pointing CONFIG_INITRAMFS_SOURCE to my BusyBox's _install directory. Many thanks to jc__ for that tip.Also, for anyone else trying this, it is worthy of note that I needed to create in the Busybox _install directory:dev/consoledev/loop0as mentioned in this:https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt