diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8801293d..538ec34f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -96,3 +96,10 @@ 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 }}
diff --git a/Dockerfile b/Dockerfile
index 04e8f783..7a786c27 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -20,7 +20,7 @@ RUN apt-get update \
qemu-utils \
ca-certificates \
netcat-openbsd \
- qemu-system-arm \
+ qemu-system-x86 \
&& apt-get clean \
&& novnc="1.4.0" \
&& mkdir -p /usr/share/novnc \
diff --git a/docker-compose.yml b/docker-compose.yml
index e04c1948..63b57ee6 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -7,7 +7,7 @@ services:
RAM_SIZE: "1G"
CPU_CORES: "1"
DISK_SIZE: "16G"
- BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
+ BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.1-x86_64.iso"
devices:
- /dev/kvm
device_cgroup_rules:
diff --git a/readme.md b/readme.md
index 1ba5bec3..d6fab59f 100644
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
QEMU
-
+
@@ -11,7 +11,7 @@
-QEMU in a docker container for running ARM-based virtual machines.
+QEMU in a docker container for running x86 and x64 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-arm
+ image: qemux/qemu-docker
environment:
- BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
+ BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-minirootfs-3.19.1-x86_64.tar.gz"
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-arm/
-[hub_url]: https://hub.docker.com/r/qemux/qemu-arm/
-[tag_url]: https://hub.docker.com/r/qemux/qemu-arm/tags
+[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]: 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
+[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
diff --git a/src/display.sh b/src/display.sh
index a21fc8e8..62721031 100644
--- a/src/display.sh
+++ b/src/display.sh
@@ -22,4 +22,32 @@ 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
diff --git a/src/entry.sh b/src/entry.sh
index e438fdd6..eb3be8b2 100755
--- a/src/entry.sh
+++ b/src/entry.sh
@@ -2,7 +2,7 @@
set -Eeuo pipefail
APP="QEMU"
-SUPPORT="https://github.com/qemus/qemu-arm"
+SUPPORT="https://github.com/qemus/qemu-docker"
cd /run
@@ -20,4 +20,4 @@ trap - ERR
info "Booting image using $VERS..."
[[ "$DEBUG" == [Yy1]* ]] && set -x
-exec qemu-system-aarch64 ${ARGS:+ $ARGS}
+exec qemu-system-x86_64 ${ARGS:+ $ARGS}
diff --git a/src/proc.sh b/src/proc.sh
index 93b2907d..648224d5 100644
--- a/src/proc.sh
+++ b/src/proc.sh
@@ -7,7 +7,7 @@ set -Eeuo pipefail
: "${CPU_FLAGS:=""}"
: "${CPU_MODEL:="host"}"
-[[ "$ARCH" != "arm"* ]] && KVM="N"
+[ "$ARCH" != "amd64" ] && KVM="N"
if [[ "$KVM" != [Nn]* ]]; then
@@ -18,6 +18,10 @@ 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
@@ -44,14 +48,14 @@ if [[ "$KVM" != [Nn]* ]]; then
else
KVM_OPTS=""
- CPU_FEATURES=""
+ CPU_FEATURES="+ssse3,+sse4.1,+sse4.2"
if [[ "${CPU_MODEL,,}" == "host"* ]]; then
- if [[ "$ARCH" == "arm"* ]]; then
+ if [[ "$ARCH" == "amd64" ]]; then
CPU_MODEL="max"
else
- CPU_MODEL="cortex-a76"
+ CPU_MODEL="qemu64"
fi
fi
diff --git a/src/reset.sh b/src/reset.sh
index 6d7cc459..0690a8f2 100644
--- a/src/reset.sh
+++ b/src/reset.sh
@@ -18,7 +18,7 @@ echo
: "${BOOT:=""}" # URL of the ISO file
: "${DEBUG:="N"}" # Disable debugging
-: "${MACHINE:="virt"}" # Machine selection
+: "${MACHINE:="q35"}" # 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-aarch64 --version | head -n 1 | cut -d '(' -f 1)
+VERS=$(qemu-system-x86_64 --version | head -n 1 | cut -d '(' -f 1)
# Check system