kube-plex icon indicating copy to clipboard operation
kube-plex copied to clipboard

No ARM support

Open ohthehugemanatee opened this issue 3 years ago • 8 comments

Looks like the image at quay.io/munnerz/kube-plex doesn't have arm support. It would be easy to cross-build and put up our own image on ghcr, and enable compatibility for raspberry pi's, pinebooks, and other arm devices.

ohthehugemanatee avatar Sep 12 '21 14:09 ohthehugemanatee

I'll need to take a look how to coax GitHub Actions to build for RPi's, the docker build file should support it out of the box.

ressu avatar Sep 12 '21 16:09 ressu

Hmm.. I meant to ask you to confirm if the image works before I tag a new release to update the latest tag. You can find the relevant images here https://github.com/ressu/kube-plex/pkgs/container/kube-plex/7574986

ressu avatar Sep 12 '21 17:09 ressu

Thanks, but unfortunately I don't have an arm64 device to test with. TBH they're a bit unusual still (but growing). Raspberry Pi OS is primarily distributed in 32 bits. It's only recently that 64 bit OSes have become available for the pi4, specifically.

You need to add linux/arm/v7 to the list to be compatible with raspberry pi devices on a 32 bit OS. That is something I can test with. :)

ohthehugemanatee avatar Sep 16 '21 14:09 ohthehugemanatee

Oh, I didn't realize that they still default to 32 bit, let me adjust the build rules to see if I can trick it to build a 32 bit version too.

ressu avatar Sep 17 '21 09:09 ressu

FWIW I manually tested the arm64 image with qemu and it works.

Here's my qemu command.

qemu-system-aarch64 \
            -machine type=virt \
            -cpu cortex-a72 \
            -m size=8G \
            -nographic \
            -bios QEMU_EFI.fd \
            -drive if=none,file=ubuntu-21.04-server-cloudimg-arm64.img,id=hd0,format=raw \
            -device virtio-blk-device,drive=hd0 \
            -drive if=none,file=/seed.img,id=seed,format=raw \
            -device virtio-blk-device,drive=seed \
            -netdev user,id=user0,hostfwd=tcp::22-:22 \
            -device virtio-net,netdev=user0"

seed.img is a simple cloud-init. I based the whole approach on https://github.com/ljishen/Cortex-A72-Emulator .

ohthehugemanatee avatar Sep 19 '21 16:09 ohthehugemanatee

Thanks for checking. I should have all the relevant build rules in place to build armv7 images along with everything else, but it seems that GitHub is having issues with the build token permissions so I'll retry builds during next week.

ressu avatar Sep 19 '21 19:09 ressu

There we go, permission issues resolved and build is running for main branch (and tag) as we speak. It should complete in a few minutes. The latest tag will be updated to contain an arm/v7 image once the next release is tagged.

ressu avatar Sep 20 '21 23:09 ressu

Just confirmed that multi-arch build succeeded and https://github.com/ressu/kube-plex/pkgs/container/kube-plex/7948865 has arm/v7 support too. So when ever I tag the next release, arm/v7 will automatically build for the releases. The normal CI builds are only built for amd64, since the other builds take much longer to complete.

ressu avatar Sep 22 '21 18:09 ressu