genkernel uses -H newc, which is broken in cpio. I have cpio app-arch/cpio-2.9-r2, sys-libs/glibc-2.9_p20081201-r2, and sys-kernel/genkernel-3.4.10.904 (0) What is happening is that some files in the archive seem to be zero bytes in length, and the boot fails loading the initramfs stuff. Here is an example: (chroot) livecd initramfs-busybox-temp # cpio -ivt </tmp/busy.cpio drwxr-xr-x 4 root root 0 Dec 16 22:43 . drwxr-xr-x 2 root root 0 Dec 16 22:43 bin drwxr-xr-x 3 root root 0 Dec 16 22:43 usr drwxr-xr-x 3 root root 0 Dec 16 22:43 usr/share drwxr-xr-x 2 root root 0 Dec 16 22:43 usr/share/udhcpc -rwxr-xr-x 1 root root 790 Dec 16 22:43 usr/share/udhcpc/default.script -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/cat -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/cut -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/echo -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/uname -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/mount -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/sh -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/ash -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/[ -rwxr-xr-x 9 root root 0 Nov 5 08:38 bin/busybox 6 blocks (chroot) livecd initramfs-busybox-temp # find . | cpio -o -F /tmp/busy.cpio 20786 blocks (chroot) livecd initramfs-busybox-temp # cpio -ivt </tmp/busy.cpio drwxr-xr-x 4 root root 0 Dec 16 22:43 . drwxr-xr-x 2 root root 0 Dec 16 22:43 bin -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/busybox -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/[ -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/ash -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/sh -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/mount -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/uname -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/echo -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/cut -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/cat drwxr-xr-x 3 root root 0 Dec 16 22:43 usr drwxr-xr-x 3 root root 0 Dec 16 22:43 usr/share drwxr-xr-x 2 root root 0 Dec 16 22:43 usr/share/udhcpc -rwxr-xr-x 1 root root 790 Dec 16 22:43 usr/share/udhcpc/default.script 20786 blocks (chroot) livecd initramfs-busybox-temp # Reproducible: Always Steps to Reproduce: 1.Have a bunch of files hard linked together 2.Use cpio -Hnewc 3. Actual Results: Files are empty Expected Results: (chroot) livecd newctest # cpio -ivt <../busy.cpio drwxr-xr-x 4 root root 0 Dec 16 22:43 . drwxr-xr-x 2 root root 0 Dec 16 22:43 bin -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/busybox -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/[ -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/ash -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/sh -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/mount -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/uname -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/echo -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/cut -rwxr-xr-x 9 root root 1182336 Nov 5 08:38 bin/cat drwxr-xr-x 3 root root 0 Dec 16 22:43 usr drwxr-xr-x 3 root root 0 Dec 16 22:43 usr/share drwxr-xr-x 2 root root 0 Dec 16 22:43 usr/share/udhcpc -rwxr-xr-x 1 root root 790 Dec 16 22:43 usr/share/udhcpc/default.script I will upload a cpio archive created correctly without -Hnewc, and incorrectly with -Hnewc.
Created attachment 213263 [details] bad cpio file with option -H newc created via: $ find . | cpio -Hnewc -oF busynewc.cpio Has zero length files.
$ find . | cpio -oF busyvanilla.zip Sorry about the file name, but this is actually a vanilla cpio archive with the default header type. This can be used to test cpio -H newc for errors. <http://www.snapdrive.net/files/472996/busyvanilla.zip>
After looking at this, I am not exactly sure what was wrong. I re-emerged genkernel. I did not re-emerge cpio. The initramfs did indeed create a zero length busybox, with all linked together to zero length. However, it is not happening anymore on my system, and the cpio archives I created list out as having zero length, but the files themselves are OK.