gunzip deve essere eseguito solo una volta (consumando tutto l'input), mentre cpio dovrebbe essere eseguito una volta per archivio incorporato, in questo modo:
gunzip -c <input.cgz | while cpio -i; do :; done
/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names
oppure
/usr/lib/dracut/skipcpio $your-img | gunzip -c | cpio -id
(in FreeBSD non c'è l'opzione --no-absolute-file-names per cpio)
Questo piccolo programma skipcpio
se parte del pacchetto dracut. Ma puoi scaricare il codice (skipcpio.c) e compilarlo anche sotto FreeBSD.
Ne hai bisogno quando estrai le immagini initrd create da dracut, almeno sotto le distribuzioni basate su RedHat, come Fedora. Mette un file chiamato "early_cpio" nell'immagine, quindi estrarre il tuo initramfs in un modo normale conosciuto prima non funzionerà.