Rich Jones previoulsy wrote here on how he got KVM working on Cubietruck — it was Fedora-19 timeframe. It wasn’t quite straight forwad then: you had to build a custom Kernel, custom U-Boot (Universal-Boot), etc.
Recently I got a Cubietruck for testing. First thing I wanted to try was to boot a Fedora-21 KVM guest. It worked just fine — ensure to supply -cpu host
parameter to QEMU invocation (Rich actually mentions this at the end of his post linked above). Why? CubieTruck has a Cortex-A7 processor, for which QEMU doesn’t have specific support, so you’d need need to use the same CPU as the host to boot a KVM guest. Peter Maydell, one of the QEMU upstream maintainers, explains a little more here on the why (a Kernel limitation).
Below is what I ended up doing to successfully boot a Fedora 21 guest on Cubietruck.
- I downloaded the Fedora 21-Beta ARM image and wrote it to a microSD card. (I used this procedure.)
- The above Fedora ARM image didn’t have KVM module. Josh Boyer on IRC said I might need a (L)PAE ARM Kernel. Installing it (3.17.4-302.fc21.armv7hl+lpae) did it — this is built with KVM module enabled.
- Resized the root filesystem of Fedora 21 on the microSD card. (Procedure I used.)
- Then, I tried a quick test to boot a KVM guest with
libguestfs-test-tool
. But the guest boot failed with:
“kvm_init_vcpu failed: Invalid argument”. So, I filed a libguestfs bug to track this. After a bit of trial and error on IRC, I made a small edit to libguestfs source so that the KVM appliance is created with-cpu host
. Rich suggested I sumbit this as a patch — which resulted in this libguestfs commit (resolving the bug I filed). - With this in place, a KVM guest boots successfully. (Complete output of boot via libguestfs appliance is here.) Also, I tested importing a Cirros-0.3.3 disk image into libvirt and run it succesfully.
[Trivia: Somehow the USB to TTL CP2102 serial converter cable I bought didn’t show boot (nor any other) messages when I accessed it via UART (with ‘ screen /dev/ttyUSB0 115200
‘). Fortunately, the regular cable that was shipped with the Cubietruck worked just fine. Still, I’d like to find what’s up with the CP2012 cable, since it was deteced as a device in my systemd logs. ]
Pingback: Links 11/12/2014: systemd 218, Empire Total War | Techrights
FWIW the serial cable might not have worked because the tx/rx pins were swapped. You need to map tx from the USB end to rx on the board and vice versa. The top comment in the amazon review linked from Rich’s post mentions it which is the only reason why I likely got it working.
Hmm, I actually triple-ensured (still, I’m likely to make mistakes, speaking from past) to test that the TX/RX pins are mapped correctly with the ‘USB-to-TTL-CP2102-Module-Serial-Converter’ I linked to in the blog post. If you noticed, the other ‘working’ cable that was shipped with Cubietruck has the same configuration of TX/RX pins to map to the board — so, it’s unlikely (but possible) I must have missed that, as I remember even writing down on paper to get the mapping right. . .
But, now I neither have the Cubietruck nor the CP2012 to test again.