Notes on KVM on ARM Chromebook (works great, even WiFi!)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



First of all, it greatly works, with Chromebook wireless support :)
Here is the guide:
http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/
posted by Virtual Open Systems. I've followed it and it indeed brought
me to an operable KVM.
However, i've decided to to make a deep analysis on it and check
whether it possible to avoid using the company repositories and use
upstream ones instead. Got success here too.

The bootloader

You need to use any patched U-boot w simplefb which allows entering
hypervisor mode. Google's nv_uboot-snow-simplefb doesn't allow KVM to
be initialized.
nv_u-boot-snow provided by VOS is good enough, though i've found few
shortcomings of it. It doesn't:
- boot combined "FDT + kernel" images
- do persistent saveenv. After reboot all your env changes are lost

The kernel

KVM is supported by recent Linux kernel (3.9+), not the old Chrome OS
3.4 one. But to make vanilla kernel somewhat usable on Chromebook, you
need at least Wi-Fi patch, otherwise wireless will not work. RTC patch
is desirable for proper time working.
These are still not in mainline (please propose them for inclusion,
anyone!). If you don't use VOS tree, you need to cherry-pick
4d0ca38eaf and 11d75fb158 from
git://github.com/virtualopensystems/linux-kvm-arm -b chromebook-3.13
for Wi-Fi and RTC accordingly. For working Wi-Fi you also must pass
'clk_ignore_unused' parameter to the kernel.
Now your options are:
- Use uImage provided by VOS. Not systemd compliant
- Build from their kernel tree enabling "Control Group support" (and
other options you may need) in config, in order to make it work on
modern distros with systemd init system
- Use official vanilla kernel tree
For two last variants it's recommended to: 1) enable CPU Frequency
scaling option and desired governors, 2) enable sound card support,
i've not checked which driver is needed
For latest variant you need:
cp arch/arm/configs/exynos_defconfig .config
- Control Group as well, if you're systemd user
- Marvell WiFi-Ex SDIO driver option (you need to enable cfg80211
dependency prior)
- Optionally uncheck "Enable loadable module support" for an easy
deploy same as in VOS config
- Check in KVM support. You need ARM_LPAE choosen for it.

Qemu

If following VOS configure options when building vanilla Qemu, note
that audio-card-list argument gone removed. Run args are changed as
well: virtio-<type> became virtio-<type>-device and explicit
'transport' one isn't available anymore. Next, if you try VOS guest
kernel image in this recent Qemu, it'll boot but not able to find the
virtio root device.

If building an old Qemu from VOS by
git://github.com/virtualopensystems/qemu.git -b kvm-arm-virtio-fb-hack
on modern Linux, first rm libfdt_env.h then apply this patch
http://git.qemu.org/?p=qemu.git;a=patch;h=8bacde8 If build fails, just
remove interfering -Wall/-Werror,... from configure and
config-host.mak

To make guest image, in your mainline kernel tree do:
cp arch/arm/configs/vexpress_defconfig  .config
You may consider disable of modular kernel, like suggested for host
kernel. Now enable KVM options, required Virtio options are already
enabled in this config.
Next, run Qemu like VOS tells, but instead of glueing dtb and zImage,
pass dtb to Qemu separately via '-dtb vexpress-v2p-ca15-tc1.dtb'
option. Now kernel will boot and see the root :-)

Conclusions

So as i've shown, most of third-party source trees may be skipped, and
original trees used instead. And this way everything still works and
provides the very last revisions ;)

> On Wed, Jan 29, 2014 at 3:21 PM, Held Bier <lausgans@xxxxxxxxx> wrote:
>>
>> 2014-01-21 Daniel Raho <s.raho@xxxxxxxxxxxxxxxxxxxxxx>:
>> > Hello,
>> >
>> > You might be interested to know that Virtual Open Systems has updated
>> > its KVM on Samsung's ARM Chromebook guide. The new guide is available
>> > at http://virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/
>> >
>> > Accessing the full content of this guide and downloading related file
>> > resources require the user to be registered and logged in.
>> >
>> > In this updated version of the Chromebook guide we have renewed the
>> > Chromebook's kernel sources to upstream Linux 3.13 and included
>> > various fixes such as real time clock support and WiFi. Finally, guest
>> > networking is now usable without the need of a USB ethernet adapter.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux