Hi there. I managed to use the patch suggested by Baruch Siach on the arm-linux mailing list to get an early console output: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=93fd03a8c6728b58879f8af20ffd55d9c32a778b Eventually, I tracked down that the initcalls problem was simply that the kernel was configured to update the LEDs on timer interrupt and ended up sitting in a tight loop waiting for a device to respond, which wasn't there. Configuring the kernel without LED timers solved that issue. Then I encountered some "wait for interrupt" instructions, which I am so far handling by simply calling schedule() until there's a a signal to QEMU and QEMU injects an interrupt into the guest. I'm thinking that I'll need to do something more clever here, which will actually cause the process itself to wait for signal, but this is a quick hack for now. Finally, all the initcalls go through (although no with the best performance), and I end up with the "Warning: Unable to open an initial console" error message. The reason is that /dev/console is not there. I looked into the initrd, and sure enough, there are no devices in there. Curiously, using the same kernel with the same disk image on QEMU without KVM gives a console just fine. The kernel gets "console=ttyAMA0" as command line parameter. I can also see that the UART I am trying to track down when the /dev/console should be created, but if someone on this list can clarify these questions, it will probably save me much time: - Is /dev/console supposed to be created in the initrd, by the init process, by the kernel or a combination thereof? - If created by the kernel, who takes care of this? - How is /dev/console linked to /dev/ttyXXXX? Thanks, Christoffer