Applied the same changes made to my other Haiku OS image

This commit is contained in:
Héctor Molinero Fernández 2021-10-31 13:07:59 +01:00
parent 1fd9c253a0
commit 49e2d5e9ef
5 changed files with 36 additions and 50 deletions

View File

@ -59,16 +59,13 @@ RUN export DEBIAN_FRONTEND=noninteractive \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*


# Environment # Environment
ENV QEMU_VM_CPU=2 ENV VM_CPU=2
ENV QEMU_VM_RAM=1024M ENV VM_RAM=1024M
ENV QEMU_VM_DISK_SIZE=16G ENV VM_DISK_SIZE=16G
ENV QEMU_VM_DISK_FORMAT=qcow2 ENV VM_KEYBOARD=en-us
ENV QEMU_VM_KEYBOARD=en-us ENV VM_NET_OPTIONS=hostfwd=tcp::13389-:3389,hostfwd=tcp::15900-:5900
ENV QEMU_VM_NET_DEVICE=e1000 ENV VM_BOOT_ORDER=cd
ENV QEMU_VM_NET_OPTIONS=hostfwd=tcp::13389-:3389,hostfwd=tcp::15900-:5900 ENV VM_KVM=false
ENV QEMU_VM_BOOT_ORDER=cd
ENV QEMU_VM_BOOT_MENU=off
ENV QEMU_VM_KVM=false


# Create some directories for QEMU # Create some directories for QEMU
RUN mkdir -p /var/lib/qemu/iso/ /var/lib/qemu/images/ RUN mkdir -p /var/lib/qemu/iso/ /var/lib/qemu/images/
@ -85,12 +82,7 @@ COPY --from=build --chown=root:root /tmp/reactos.iso /var/lib/qemu/iso/reactos.i
# Copy services # Copy services
COPY --chown=root:root ./scripts/service/ /etc/service/ COPY --chown=root:root ./scripts/service/ /etc/service/


# Copy scripts # Copy bin scripts
COPY --chown=root:root ./scripts/bin/ /usr/local/bin/ COPY --chown=root:root ./scripts/bin/ /usr/local/bin/


# VNC ENTRYPOINT ["/usr/local/bin/container-init"]
EXPOSE 5900/tcp
# noVNC
EXPOSE 6080/tcp

CMD ["/usr/local/bin/container-foreground-cmd"]

View File

@ -6,39 +6,31 @@ A Docker image for the [ReactOS](https://www.reactos.org) operating system.
```sh ```sh
docker run --detach \ docker run --detach \
--name qemu-reactos \ --name qemu-reactos \
--restart on-failure:3 \
--publish 127.0.0.1:6080:6080/tcp \ --publish 127.0.0.1:6080:6080/tcp \
--env QEMU_VM_KVM=true --device /dev/kvm \ --env VM_KVM=true --device /dev/kvm \
docker.io/hectormolinero/qemu-reactos:latest docker.io/hectormolinero/qemu-reactos:latest
``` ```
> The instance will be available through a web browser from: http://localhost:6080/vnc.html
> The instance can be accessed from:
> * 6080/TCP (noVNC): http://127.0.0.1:6080/vnc.html


## Environment variables ## Environment variables
#### `QEMU_VM_CPU` #### `VM_CPU`
Number of cores the VM is permitted to use (`2` by default). Number of cores the VM is permitted to use (`2` by default).


#### `QEMU_VM_RAM` #### `VM_RAM`
Amount of memory the VM is permitted to use (`1024M` by default). Amount of memory the VM is permitted to use (`1024M` by default).


#### `QEMU_VM_DISK_SIZE` #### `VM_DISK_SIZE`
VM disk size (`16G` by default). VM disk size (`16G` by default).


#### `QEMU_VM_DISK_FORMAT` #### `VM_KEYBOARD`
VM disk format (`qcow2` by default).

#### `QEMU_VM_KEYBOARD`
VM keyboard layout (`en-us` by default). VM keyboard layout (`en-us` by default).


#### `QEMU_VM_NET_DEVICE` #### `VM_BOOT_ORDER`
VM network device (`e1000` by default).

#### `QEMU_VM_BOOT_ORDER`
VM boot order (`cd` by default). VM boot order (`cd` by default).


#### `QEMU_VM_BOOT_MENU` #### `VM_KVM`
VM boot menu (`off` by default).

#### `QEMU_VM_KVM`
Start QEMU in KVM mode (`false` by default). Start QEMU in KVM mode (`false` by default).
> The `--device /dev/kvm` option is required to use KVM in the container. > The `--device /dev/kvm` option is required to use KVM in the container.



3
run.sh
View File

@ -39,8 +39,7 @@ printf -- '%s\n' "Creating \"${CONTAINER_NAME:?}\" container..."
--log-opt max-size=32m \ --log-opt max-size=32m \
--publish '127.0.0.1:5900:5900/tcp' \ --publish '127.0.0.1:5900:5900/tcp' \
--publish '127.0.0.1:6080:6080/tcp' \ --publish '127.0.0.1:6080:6080/tcp' \
--publish '127.0.0.1:15900:15900/tcp' \ --env VM_KVM=true --device /dev/kvm \
--env QEMU_VM_KVM=true --device /dev/kvm \
"${IMAGE_NAME:?}" "$@" >/dev/null "${IMAGE_NAME:?}" "$@" >/dev/null


printf -- '%s\n\n' 'Done!' printf -- '%s\n\n' 'Done!'

View File

@ -4,7 +4,7 @@ set -eu


# Create ReactOS disk # Create ReactOS disk
if [ ! -f /var/lib/qemu/images/reactos.img ]; then if [ ! -f /var/lib/qemu/images/reactos.img ]; then
qemu-img create -f "${QEMU_VM_DISK_FORMAT:?}" /var/lib/qemu/images/reactos.img "${QEMU_VM_DISK_SIZE:?}" qemu-img create -f qcow2 /var/lib/qemu/images/reactos.img "${VM_DISK_SIZE:?}"
fi fi


# Start all services # Start all services

View File

@ -2,20 +2,23 @@


set -eu set -eu


QEMU=$(command -v qemu-system-x86_64) set --
QEMU_ARGS="${QEMU_ARGS-} -smp ${QEMU_VM_CPU:?} -m ${QEMU_VM_RAM:?}" set -- "$@" -smp "${VM_CPU:?}" -m "${VM_RAM:?}"
QEMU_ARGS="${QEMU_ARGS-} -vga std -display vnc=:0" set -- "$@" -serial stdio -device VGA -display vnc=:0
QEMU_ARGS="${QEMU_ARGS-} -drive file=/var/lib/qemu/images/reactos.img,index=0,media=disk,format=${QEMU_VM_DISK_FORMAT:?}" set -- "$@" -drive file=/var/lib/qemu/images/reactos.img,index=0,media=disk,format=qcow2
QEMU_ARGS="${QEMU_ARGS-} -drive file=/var/lib/qemu/iso/reactos.iso,index=2,media=cdrom,format=raw" set -- "$@" -drive file=/var/lib/qemu/iso/reactos.iso,index=2,media=cdrom,format=raw
QEMU_ARGS="${QEMU_ARGS-} -boot order=${QEMU_VM_BOOT_ORDER:?},menu=${QEMU_VM_BOOT_MENU:?},splash-time=5000" set -- "$@" -boot order="${VM_BOOT_ORDER:?}",menu=off
QEMU_ARGS="${QEMU_ARGS-} -netdev user,id=n0,${QEMU_VM_NET_OPTIONS:?} -device ${QEMU_VM_NET_DEVICE:?},netdev=n0" set -- "$@" -netdev user,id=n0,"${VM_NET_OPTIONS:?}"
QEMU_ARGS="${QEMU_ARGS-} -usb -device usb-tablet" set -- "$@" -device e1000,netdev=n0
QEMU_ARGS="${QEMU_ARGS-} -k ${QEMU_VM_KEYBOARD:?}" set -- "$@" -usb -device usb-tablet
set -- "$@" -k "${VM_KEYBOARD:?}"


if [ "${QEMU_VM_KVM:?}" = true ] && [ -c /dev/kvm ]; then if [ "${VM_KVM:?}" = true ] && [ -c /dev/kvm ]; then
QEMU_ARGS="${QEMU_ARGS-} -enable-kvm" set -- "$@" -accel kvm
else
set -- "$@" -accel tcg
fi fi


cd /var/lib/qemu/ cd /var/lib/qemu/
exec 2>&1 exec 2>&1
exec "${QEMU:?}" ${QEMU_ARGS:?} exec /usr/bin/qemu-system-x86_64 "$@"