feat: Initial arm64 support (#420)

This commit is contained in:
Kroese 2024-02-02 11:52:57 +01:00 committed by GitHub
parent 8834b0c801
commit 487eefbeb9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 21 additions and 60 deletions

View file

@ -96,10 +96,3 @@ jobs:
uses: action-pack/bump@v2 uses: action-pack/bump@v2
with: with:
token: ${{ secrets.REPO_ACCESS_TOKEN }} token: ${{ secrets.REPO_ACCESS_TOKEN }}
-
name: Push to Gitlab mirror
uses: action-pack/gitlab-sync@v3
with:
url: ${{ secrets.GITLAB_URL }}
token: ${{ secrets.GITLAB_TOKEN }}
username: ${{ secrets.GITLAB_USERNAME }}

View file

@ -20,7 +20,7 @@ RUN apt-get update \
qemu-utils \ qemu-utils \
ca-certificates \ ca-certificates \
netcat-openbsd \ netcat-openbsd \
qemu-system-x86 \ qemu-system-arm \
&& apt-get clean \ && apt-get clean \
&& novnc="1.4.0" \ && novnc="1.4.0" \
&& mkdir -p /usr/share/novnc \ && mkdir -p /usr/share/novnc \

View file

@ -7,7 +7,7 @@ services:
RAM_SIZE: "1G" RAM_SIZE: "1G"
CPU_CORES: "1" CPU_CORES: "1"
DISK_SIZE: "16G" DISK_SIZE: "16G"
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.0-x86_64.iso" BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
devices: devices:
- /dev/kvm - /dev/kvm
device_cgroup_rules: device_cgroup_rules:

View file

@ -1,6 +1,6 @@
<h1 align="center">QEMU<br /> <h1 align="center">QEMU<br />
<div align="center"> <div align="center">
<img src="https://github.com/qemus/qemu-docker/raw/master/.github/logo.png" title="Logo" style="max-width:100%;" width="128" /> <img src="https://github.com/qemus/qemu-arm/raw/master/.github/logo.png" title="Logo" style="max-width:100%;" width="128" />
</div> </div>
<div align="center"> <div align="center">
@ -11,7 +11,7 @@
</div></h1> </div></h1>
QEMU in a docker container for running x86 and x64 virtual machines. QEMU in a docker container for running ARM-based virtual machines.
It uses high-performance QEMU options (like KVM acceleration, kernel-mode networking, IO threading, etc.) to achieve near-native speed. It uses high-performance QEMU options (like KVM acceleration, kernel-mode networking, IO threading, etc.) to achieve near-native speed.
@ -30,9 +30,9 @@ version: "3"
services: services:
qemu: qemu:
container_name: qemu container_name: qemu
image: qemux/qemu-docker image: qemux/qemu-arm
environment: environment:
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.0-x86_64.iso" BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
devices: devices:
- /dev/kvm - /dev/kvm
cap_add: cap_add:
@ -218,11 +218,11 @@ docker run -it --rm -e "BOOT=http://example.com/image.iso" -p 8006:8006 --device
ARGUMENTS: "-device usb-tablet" ARGUMENTS: "-device usb-tablet"
``` ```
[build_url]: https://github.com/qemus/qemu-docker/ [build_url]: https://github.com/qemus/qemu-arm/
[hub_url]: https://hub.docker.com/r/qemux/qemu-docker/ [hub_url]: https://hub.docker.com/r/qemux/qemu-arm/
[tag_url]: https://hub.docker.com/r/qemux/qemu-docker/tags [tag_url]: https://hub.docker.com/r/qemux/qemu-arm/tags
[Build]: https://github.com/qemus/qemu-docker/actions/workflows/build.yml/badge.svg [Build]: https://github.com/qemus/qemu-arm/actions/workflows/build.yml/badge.svg
[Size]: https://img.shields.io/docker/image-size/qemux/qemu-docker/latest?color=066da5&label=size [Size]: https://img.shields.io/docker/image-size/qemux/qemu-arm/latest?color=066da5&label=size
[Pulls]: https://img.shields.io/docker/pulls/qemux/qemu-docker.svg?style=flat&label=pulls&logo=docker [Pulls]: https://img.shields.io/docker/pulls/qemux/qemu-arm.svg?style=flat&label=pulls&logo=docker
[Version]: https://img.shields.io/docker/v/qemux/qemu-docker/latest?arch=amd64&sort=semver&color=066da5 [Version]: https://img.shields.io/docker/v/qemux/qemu-arm/latest?arch=arm64&sort=semver&color=066da5

View file

@ -22,32 +22,4 @@ case "${DISPLAY,,}" in
;; ;;
esac esac
if [[ "$GPU" != [Yy1]* ]] || [[ "$ARCH" != "amd64" ]]; then
return 0
fi
[[ "${VGA,,}" == "virtio" ]] && VGA="virtio-gl"
DISPLAY_OPTS="-display egl-headless,rendernode=/dev/dri/renderD128"
DISPLAY_OPTS="$DISPLAY_OPTS -vga $VGA"
[[ "${DISPLAY,,}" == "vnc" ]] && DISPLAY_OPTS="$DISPLAY_OPTS -vnc :0"
[[ "${DISPLAY,,}" == "web" ]] && DISPLAY_OPTS="$DISPLAY_OPTS -vnc :0,websocket=5700"
[ ! -d /dev/dri ] && mkdir -m 755 /dev/dri
if [ ! -c /dev/dri/card0 ]; then
if mknod /dev/dri/card0 c 226 0; then
chmod 666 /dev/dri/card0
fi
fi
if [ ! -c /dev/dri/renderD128 ]; then
if mknod /dev/dri/renderD128 c 226 128; then
chmod 666 /dev/dri/renderD128
fi
fi
addPackage "xserver-xorg-video-intel" "Intel GPU drivers"
addPackage "qemu-system-modules-opengl" "OpenGL module"
return 0 return 0

View file

@ -2,7 +2,7 @@
set -Eeuo pipefail set -Eeuo pipefail
APP="QEMU" APP="QEMU"
SUPPORT="https://github.com/qemus/qemu-docker" SUPPORT="https://github.com/qemus/qemu-arm"
cd /run cd /run
@ -20,4 +20,4 @@ trap - ERR
info "Booting image using $VERS..." info "Booting image using $VERS..."
[[ "$DEBUG" == [Yy1]* ]] && set -x [[ "$DEBUG" == [Yy1]* ]] && set -x
exec qemu-system-x86_64 ${ARGS:+ $ARGS} exec qemu-system-aarch64 ${ARGS:+ $ARGS}

View file

@ -7,7 +7,7 @@ set -Eeuo pipefail
: "${CPU_FLAGS:=""}" : "${CPU_FLAGS:=""}"
: "${CPU_MODEL:="host"}" : "${CPU_MODEL:="host"}"
[ "$ARCH" != "amd64" ] && KVM="N" [ "$ARCH" != "arm"* ] && KVM="N"
if [[ "$KVM" != [Nn]* ]]; then if [[ "$KVM" != [Nn]* ]]; then
@ -18,10 +18,6 @@ if [[ "$KVM" != [Nn]* ]]; then
else else
if ! sh -c 'echo -n > /dev/kvm' &> /dev/null; then if ! sh -c 'echo -n > /dev/kvm' &> /dev/null; then
KVM_ERR="(no write access)" KVM_ERR="(no write access)"
else
if ! grep -q -e vmx -e svm /proc/cpuinfo; then
KVM_ERR="(vmx/svm disabled)"
fi
fi fi
fi fi
@ -48,14 +44,14 @@ if [[ "$KVM" != [Nn]* ]]; then
else else
KVM_OPTS="" KVM_OPTS=""
CPU_FEATURES="+ssse3,+sse4.1,+sse4.2" CPU_FEATURES=""
if [[ "${CPU_MODEL,,}" == "host"* ]]; then if [[ "${CPU_MODEL,,}" == "host"* ]]; then
if [[ "$ARCH" == "amd64" ]]; then if [[ "$ARCH" == "arm"* ]]; then
CPU_MODEL="max" CPU_MODEL="max"
else else
CPU_MODEL="qemu64" CPU_MODEL="cortex-a76"
fi fi
fi fi

View file

@ -18,7 +18,7 @@ echo
: "${BOOT:=""}" # URL of the ISO file : "${BOOT:=""}" # URL of the ISO file
: "${DEBUG:="N"}" # Disable debugging : "${DEBUG:="N"}" # Disable debugging
: "${MACHINE:="q35"}" # Machine selection : "${MACHINE:="virt"}" # Machine selection
: "${ALLOCATE:=""}" # Preallocate diskspace : "${ALLOCATE:=""}" # Preallocate diskspace
: "${ARGUMENTS:=""}" # Extra QEMU parameters : "${ARGUMENTS:=""}" # Extra QEMU parameters
: "${CPU_CORES:="1"}" # Amount of CPU cores : "${CPU_CORES:="1"}" # Amount of CPU cores
@ -39,7 +39,7 @@ HOST=$(hostname -s)
KERNEL=$(uname -r | cut -b 1) KERNEL=$(uname -r | cut -b 1)
MINOR=$(uname -r | cut -d '.' -f2) MINOR=$(uname -r | cut -d '.' -f2)
ARCH=$(dpkg --print-architecture) ARCH=$(dpkg --print-architecture)
VERS=$(qemu-system-x86_64 --version | head -n 1 | cut -d '(' -f 1) VERS=$(qemu-system-aarch64 --version | head -n 1 | cut -d '(' -f 1)
# Check system # Check system