Unable to connect to VM console on ARM architecture

Working with custom VM require accessing console when incus-agent is not running. For example debugging boot process with incus start <instance> --console command. Console access works mostly well on X86_64 architecture, but does not work at all on ARM hosts.
Trying to get console access on Raspbery Pi 4B with Ubuntu 24.04 fails with the error: Error: Failed to swap console ring buffer with socket: Chardev user does not support chardev hotswap. Actually qemu process return this error. I was trying to google what is causing this error without success. I would appreciate for suggestion how to fix this issue.

1 Like

Having the same issue, rather disappointed that no one else has bumped this thread at all. Seems like an awfully big functionality gap to be unable to attach a console to your instances without using the web-ui, installing sshd, or running a reverse shell like you’re trying to hack your own box.

That’s a QEMU limitation so not a lot we can do about it unfortunately.

You can use --type=vga to get a live view of the console that way or you can use --show-log to get the text console output, but QEMU doesn’t let us swap between the console ringbuffer (--show-log) and a live text console.

1 Like

Thank you Stephane for tie clarification.

  • --show-log option works. I use it to verify the boot process for long time. However, it does not allow to interact with VM.
  • --type=vga requires GUI interface at the client’s host. It does not work in pure text environment.
1 Like

I’m still new-ish to the technicals of virtualization but my understanding is that running Incus on macOS should bypass QEMU entirely using VZ? Does it still rely on QEMU for interactions between host and client?

I’m running Incus server inside of a Colima VM, and am able to attach to the (Co)Lima shell, via colima ssh, but I’m not sure if it’s actually using SSH under the hood or if it’s doing something with more standard client-host interactions. My point being that it’s able to spawn an interactive shell, somehow. Not sure if that’s useful information to you?

Is it possible that my specific issue is different to OP’s? I assumed they were the same due to the identical error.

Colima uses VZ to run an Ubuntu VM which runs Incus.
When you run a VM within that Incus environment, Incus uses QEMU in the Linux VM to run that nested VM.

1 Like

Correct, I was just pointing out the limitations as they are.

Here I can usually run incus from a remote system which does have a working GUI, so I can use --type=vga just fine. When that’s not possible, then using the web UI may be a way around, though typically if you can reach the web UI, you could also use the incus CLI with that server as a remote.

I agree WebUI is a good workaround for most cases.

Of course! Thanks for the clarification.

Another issue is that the boot screen does not process keyboard inputs, so you cannot navigate at the boot menu.

Actually virt-view works on macOS and works with incus console --type=vga, though the initial startup takes some time.

brew tap jeffreywildman/homebrew-virt-manager
brew install virt-viewer

But still unfortunate that the text console does not work.

Yeah, console input is pretty messed up on arm64 for some reason.
I’ve got a couple of items for @amikhalitsyn to look at early next year :slight_smile: