Hacker News new | ask | show | jobs
by simnalamburt 1748 days ago
Hi, podman-apple-silicon developer here! I want to share some FAQs about this project. :)

Q: Does this run amd64 docker images or aarch64 docker images?

A: aarch64 images currently, but I'm going to patch podman to make it possible to run both amd64 image and aarch64 image. All I have to do for this is to make QEMU call and Linux image configurable, so it won't be very hard. However, if you are running amd64 images, you will have to bear the performance overhead due to CPU emulation.

Q: Is this toy or are you actually going to maintain this?

A: I'm DevOps engineer and I made podman-apple-silicon to actually use this in my day job.

Q: Are you going to merge this to the upstream?

A: I'll keep trying, but it won't be easy unless QEMU merges Alex Graf's Hypervisor.framework patch.

I may forgot to check HackerNews, so please feel free to ask me anything about podman-apple-silicon at https://twitter.com/simnalamburt

2 comments

> I'm going to patch podman to make it possible to run both amd64 image and aarch64 image

From what I understand, if you had working QEMU-static and binfmt, wouldn't cross-architecture containers just work? I've used that a lot in chroots, and I'm confused as to why that wouldn't just transparently work in this case.

Are you talking about just making that process easier? Does podman enforce extra checks that prevent you from using binfmt?

If you just switch the binary you’re 90% finished but there are some chores to make it perfect

1. The arguments given to the qemu should be changed by the CPU arch. For example, AArch64 uses ‘-accel=hvf’ while amd64 in Apple Silicon must use ‘-accel=tcg’. AArch64 requires ‘-cpu’ option whild amd64 does not. etc. And currently, the arguments of QEMU is half-way hardcoded to the podman source code.

2. You should change the linux image when you change the CPU arch. Currently, podman always downloads the Linux image whose CPU arch is same with host’s CPU arch. This is where configuration should be added.

3. aarch64 uses UEFI while amd64 don’t need to (I don’t know why)

> 3. aarch64 uses UEFI while amd64 don’t need to (I don’t know why)

Sounds like amd64 is falling back to BIOS, while aarch64 never really had any other standard than UEFI. You should be able to run UEFI for amd64 too if you force the machine type to pc-q35-6.1 (or whatever QEMU version you're using).

Q: What sort of contributions/help are you looking for?
A: Testing, dogfeeding, bug reports! I can handle code-related jobs but I alone cannot handle testing all variable usecases! ;) Thanks!