feat: Initial arm64 support (#420)
This commit is contained in:
parent
8834b0c801
commit
487eefbeb9
8 changed files with 21 additions and 60 deletions
7
.github/workflows/build.yml
vendored
7
.github/workflows/build.yml
vendored
|
@ -96,10 +96,3 @@ jobs:
|
|||
uses: action-pack/bump@v2
|
||||
with:
|
||||
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 }}
|
||||
|
|
|
@ -20,7 +20,7 @@ RUN apt-get update \
|
|||
qemu-utils \
|
||||
ca-certificates \
|
||||
netcat-openbsd \
|
||||
qemu-system-x86 \
|
||||
qemu-system-arm \
|
||||
&& apt-get clean \
|
||||
&& novnc="1.4.0" \
|
||||
&& mkdir -p /usr/share/novnc \
|
||||
|
|
|
@ -7,7 +7,7 @@ services:
|
|||
RAM_SIZE: "1G"
|
||||
CPU_CORES: "1"
|
||||
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:
|
||||
- /dev/kvm
|
||||
device_cgroup_rules:
|
||||
|
|
22
readme.md
22
readme.md
|
@ -1,6 +1,6 @@
|
|||
<h1 align="center">QEMU<br />
|
||||
<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 align="center">
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
|||
|
||||
</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.
|
||||
|
||||
|
@ -30,9 +30,9 @@ version: "3"
|
|||
services:
|
||||
qemu:
|
||||
container_name: qemu
|
||||
image: qemux/qemu-docker
|
||||
image: qemux/qemu-arm
|
||||
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:
|
||||
- /dev/kvm
|
||||
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"
|
||||
```
|
||||
|
||||
[build_url]: https://github.com/qemus/qemu-docker/
|
||||
[hub_url]: https://hub.docker.com/r/qemux/qemu-docker/
|
||||
[tag_url]: https://hub.docker.com/r/qemux/qemu-docker/tags
|
||||
[build_url]: https://github.com/qemus/qemu-arm/
|
||||
[hub_url]: https://hub.docker.com/r/qemux/qemu-arm/
|
||||
[tag_url]: https://hub.docker.com/r/qemux/qemu-arm/tags
|
||||
|
||||
[Build]: https://github.com/qemus/qemu-docker/actions/workflows/build.yml/badge.svg
|
||||
[Size]: https://img.shields.io/docker/image-size/qemux/qemu-docker/latest?color=066da5&label=size
|
||||
[Pulls]: https://img.shields.io/docker/pulls/qemux/qemu-docker.svg?style=flat&label=pulls&logo=docker
|
||||
[Version]: https://img.shields.io/docker/v/qemux/qemu-docker/latest?arch=amd64&sort=semver&color=066da5
|
||||
[Build]: https://github.com/qemus/qemu-arm/actions/workflows/build.yml/badge.svg
|
||||
[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-arm.svg?style=flat&label=pulls&logo=docker
|
||||
[Version]: https://img.shields.io/docker/v/qemux/qemu-arm/latest?arch=arm64&sort=semver&color=066da5
|
||||
|
|
|
@ -22,32 +22,4 @@ case "${DISPLAY,,}" in
|
|||
;;
|
||||
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
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
set -Eeuo pipefail
|
||||
|
||||
APP="QEMU"
|
||||
SUPPORT="https://github.com/qemus/qemu-docker"
|
||||
SUPPORT="https://github.com/qemus/qemu-arm"
|
||||
|
||||
cd /run
|
||||
|
||||
|
@ -20,4 +20,4 @@ trap - ERR
|
|||
info "Booting image using $VERS..."
|
||||
|
||||
[[ "$DEBUG" == [Yy1]* ]] && set -x
|
||||
exec qemu-system-x86_64 ${ARGS:+ $ARGS}
|
||||
exec qemu-system-aarch64 ${ARGS:+ $ARGS}
|
||||
|
|
12
src/proc.sh
12
src/proc.sh
|
@ -7,7 +7,7 @@ set -Eeuo pipefail
|
|||
: "${CPU_FLAGS:=""}"
|
||||
: "${CPU_MODEL:="host"}"
|
||||
|
||||
[ "$ARCH" != "amd64" ] && KVM="N"
|
||||
[ "$ARCH" != "arm"* ] && KVM="N"
|
||||
|
||||
if [[ "$KVM" != [Nn]* ]]; then
|
||||
|
||||
|
@ -18,10 +18,6 @@ if [[ "$KVM" != [Nn]* ]]; then
|
|||
else
|
||||
if ! sh -c 'echo -n > /dev/kvm' &> /dev/null; then
|
||||
KVM_ERR="(no write access)"
|
||||
else
|
||||
if ! grep -q -e vmx -e svm /proc/cpuinfo; then
|
||||
KVM_ERR="(vmx/svm disabled)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -48,14 +44,14 @@ if [[ "$KVM" != [Nn]* ]]; then
|
|||
else
|
||||
|
||||
KVM_OPTS=""
|
||||
CPU_FEATURES="+ssse3,+sse4.1,+sse4.2"
|
||||
CPU_FEATURES=""
|
||||
|
||||
if [[ "${CPU_MODEL,,}" == "host"* ]]; then
|
||||
|
||||
if [[ "$ARCH" == "amd64" ]]; then
|
||||
if [[ "$ARCH" == "arm"* ]]; then
|
||||
CPU_MODEL="max"
|
||||
else
|
||||
CPU_MODEL="qemu64"
|
||||
CPU_MODEL="cortex-a76"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
|
|
@ -18,7 +18,7 @@ echo
|
|||
|
||||
: "${BOOT:=""}" # URL of the ISO file
|
||||
: "${DEBUG:="N"}" # Disable debugging
|
||||
: "${MACHINE:="q35"}" # Machine selection
|
||||
: "${MACHINE:="virt"}" # Machine selection
|
||||
: "${ALLOCATE:=""}" # Preallocate diskspace
|
||||
: "${ARGUMENTS:=""}" # Extra QEMU parameters
|
||||
: "${CPU_CORES:="1"}" # Amount of CPU cores
|
||||
|
@ -39,7 +39,7 @@ HOST=$(hostname -s)
|
|||
KERNEL=$(uname -r | cut -b 1)
|
||||
MINOR=$(uname -r | cut -d '.' -f2)
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue