qemu-user-static
qemu-user-static copied to clipboard
Possibility of ultra light syscall virtualization
/kind question
I just want to start off by saying feel free to just close this out as I understand this is way outside of this project's scope.
The basic question is if it is possible to make an ultra-light qemu bin for aarch64 that can be registered and the only piece of emulation it performs is lying about it's arch by sending armv7l when sys_uname() is called?
As armhf infra becomes harder and harder to source especially in a hosted setting which is downright impossible, we are finding ourselves in a situation where we would like to continue writing our code to build and run natively on 32 bit arm but it is becoming difficult to maintain build hosts. The situation is that while many aarch64 platforms have compatibility mode and you can install/run armhf docker on them to build images the actual build steps in the container will make syscalls to the host kernel for platform when compiling/installing packages/calculating dependencies and get back arm64v8. Now obviously it is possible to just go full out emu with a performance hit and most stuff will build fine, but there is always corner cases that have oddities using qemu where native builds are needed. Many of these can be worked around by cross compiling but in alot of those cases you then break the ability to build on native armhf without maintaining and testing two different dockerfiles. It just feels like you have these systems now supported by every major cloud provider with aarch64 kernels that can natively run armhf bins no problem with compatibility mode but a pesky syscall is getting in the way of native build performance. It seems like the docker team does not have an interest in addressing this https://github.com/docker/buildx/issues/198 I was just reaching out to see if it was even something that was possible.