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
|
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 }}
|
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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:
|
||||||
|
|
22
readme.md
22
readme.md
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}
|
||||||
|
|
12
src/proc.sh
12
src/proc.sh
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue