Urgent.News

One page, thousands of outlets. See who else covered it.

Editions

Tech

Running Android VMs on ARM: Rebuilding the Minisforum MS-R1 Kernel for Cuttlefish

Part 1 of 2. This part covers getting a kernel that can actually host virtual machines. Why bother I wanted a box that could run a dozen Android instances at once — real ones, not emulated-on-x86 ones — to benchmark peer-to-peer sync behaviour at scale. Native arm64 Android on native arm64 silicon, no translation layer, enough cores and RAM to make the peer count interesting. The Minisforum MS-R1…

Part 1: Getting a kernel suitable for virtual machines

The author wanted a box capable of running multiple Android instances simultaneously, utilizing native arm64 Android on arm64 silicon without any translation layer. The Minisforum MS-R1 seemed ideal, featuring a 12-core ARMv9 SoC and ample memory. Google's Cuttlefish, an official Android virtual device, supports arm64 Android guests on arm64 hosts with KVM acceleration.

However, the vendor had disabled the entire vhost subsystem, which is necessary for Cuttlefish to function. The shipped kernel, 6.6.10-cix-build-generic, lacked the CONFIG_VHOST_VSOCK symbol, preventing the creation of /dev/vhost-vsock. This crucial issue caused two traps: the first involved virtualization support and the second centered around the choice of a source tree for the kernel.

Part 2: Restoring virtualization support and choosing a source tree

To resolve the virtualization problem, the author needed to enable the vhost subsystem in the kernel. After exploring three options - mainline, cixtech/cix-linux-main, and cixtech/cix_opensource_linux - the author decided to go with cixtech/cix_opensource_linux, branch cix_p1_k6.6_master. This branch provides a full bootloader source tree for the CIX P1 architecture and uses the same 6.6 lineage as the shipped kernel.

The key challenge lay in booting the system, as the MS-R1 does not have a bootloader package or an EFI partition mounted. After some investigation, the author found the GRUB bootloader in the ESP (EFI System Partition) at /mnt/esp/EFI/BOOT/BOOTAA64.EFI. With the bootloader in place, the author could successfully boot the kernel and start running virtual machines using Cuttlefish on the Minisforum MS-R1.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Recursion vs Iteration: Choosing Your Path Like Neo in The Matrix

The Quest Begins (The "Why") I was knee‑deep in a coding interview when the interviewer tossed me a seemingly innocent problem: “Given a binary tree, return the sum of all its nodes.” My first…

  • Binary trees are recursive data structures mirroring the problem definition.
  • Recursion offers a one-to-one mapping between problem description and code, reducing bookkeeping.
  • Iterative approach required manual stack management, making code longer and less intuitive.

More from Monday 17 August →