On Tue, Jan 16, 2024 at 1:25 PM Daniel Walsh <dwalsh@redhat.com> wrote:
On 1/16/24 06:49, Matthias Apitz wrote:
> Hello,
>
> For the purpose of the Subject: there is a tutorial at IBM.com:
>
> https://developer.ibm.com/tutorials/running-x86-64-containers-mac-silicon-m1/
>
> I've followed this tutorial, with a small exception, see below.
>
> The first step is to 'init' the machine with:
>
> $ podman machine init --image-path ~/yourFedoraImageFolder/fedora-coreos-39.20231204.3.3-qemu.x86_64.qcow2.xz intel
> Extracting compressed file: intel_fedora-coreos-39.20231204.3.3-qemu.x86_64.qco…
> Image resized.
> Machine init complete
> To start your machine run:
>
>       podman machine start intel
>
> Which worked fine. Now, before starting the machine, the tutorial asks to remove the following
> lines from the config file ~/.config/containers/podman/machine/qemu/intel.json:
>
>    "-machine",
>    "q35,accel=hvf:tcg",
>    "-cpu",
>    "host",
>
> These line are not there 1:1 and I removed these lines:
>
> $ diff .config/containers/podman/machine/qemu/intel.json .config/containers/podman/machine/qemu/intel.json.saved2
> 6a7,12
>>    "-accel",
>>    "hvf",
>>    "-accel",
>>    "tcg",
>>    "-cpu",
>>    "host",
> which seems to me correct to remove the HVF QEMU accelerator which only
> is supported on x86 chips.
>
> Starting the machine now with:
>
> $ podman machine start intel
> Di 16 Jan 2024 12:23:33 CET
> Starting machine "intel"
> Waiting for VM ...
>
> hangs for ever and the QEMU process has 100% CPU utilization:
>
> top
> PID    COMMAND      %CPU  TIME     #TH   #WQ  #PORT MEM    PURG   CMPRS PGRP
> 10802  qemu-system- 99.6  23:09.43 8/1   0    27    163M   0B     0B    10800
>
> Any ideas? Thanks
>
>       matthias
>
>
Sergio any ideas?

It's definitely not enough to change the lines indicated in the guide. You'd need to makes, at least, these changes:

  "CmdLine": [
-  "/opt/homebrew/bin/qemu-system-aarch64",
-  "-accel",
-  "hvf",
+  "/opt/homebrew/bin/qemu-system-x86_64",
   "-accel",
   "tcg",
-  "-cpu",
-  "host",
   "-M",
-  "virt,highmem=on",
-  "-drive",
-  "file=/opt/homebrew/share/qemu/edk2-aarch64-code.fd,if=pflash,format=raw,readonly=on",
-  "-drive",
-  "file=/Users/slp/.local/share/containers/podman/machine/qemu/intel_ovmf_vars.fd,if=pflash,format=raw",
+  "q35",

With this, after a looooooong time (5-10 minutes), I get a running x86_64 linux machine, and I can run x86_64 containers on it.

That said, I'm not a big fan of this way of running x86_64 VMs on aarch64, as this is full system emulation and the performance it's going to be quite poor. Instead, a better option would be using an aarch64 VM with a distro extended have to binfmt_misc and qemu-user-static, so can rely on usermode emulation instead, which would yield significantly better results (specially if we eventually support other userspace emulators, such as fex-emu or box64).

Sergio.