Sending files from initramfs busybox

I have to say busybox is so cool!

Today I did an installation of Debian Squeeze using daily netinst ISO image in an i686 qemu-kvm virtual machine. I was using ext4 for /boot, and btrfs for /. The installation process was quite normal as expected.

After the installation I rebooted the virtual machine. Grub2 loaded correctly, but I was dropped into busybox ash prompt next to that… Reporting:

FATAL: Error inserting btrfs (/lib/modules/2.6.32-5-686)/kernel/fs/btrfs/btrfs.ko) unknown symbol in module, or unknown parameter (see dmesg)

So I go to #debian and #debian-devel to ask for help, lindi- asked me for dmesg output and told me to “just configure networking in initramfs and use busybox netcat”.

The actual procedure is:
1. Of course save dmesg output to file first:
(busybox) dmesg > dmesg.txt

2. Run ipconfig in busybox to configure the network (I was using qemu-kvm as superuser, so no need to deal with user mode networking problem):
(busybox) ipconfig eth0

3. Run netcat on host machine to listen a port, e.g. 3333:
$ nc -l 3333

4. Send the file:
(busybox) cat dmesg.txt | nc 192.168.100.1 3333

And I finally got the dmesg.txt lying on my host machine. Well, I still haven’t get the virtual machine working till now. :-(

Update 2010-1-4 :
This bug has been reported as Debian Bug #608538.
Quoting Joey Hess:

I hope this can be dealt with, it seems to be the only remaining issue in getting Debian to support btrfs root filesystems.

It appears to be an issue about btrfs module need crc32 module, but crc32 isn’t loaded automatically.

This work by Aron Xu is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported.