Compare commits

..
26 Commits
Author SHA1 Message Date
Kroese da4555925b Merge pull request #330 from amintong/master
dnat rule add dst restrictions
2023-10-08 15:08:25 +02:00
tong min 8c6f7e49ef network in NAT mode, processing packets only with the destination (dst) set to the container IP can prevent packets coming out of the QEMU virtual machine through eth0 from being incorrectly DNAT 2023-10-08 19:48:00 +08:00
Kroese 06829aac67 refactor: Filesystem detection
refactor: Filesystem detection
2023-10-07 12:09:11 +02:00
Kroese e5b7ade0d0 refactor: Filesystem detection 2023-10-07 12:06:22 +02:00
Kroese c1de32eff6 feat: Check filesystem during installation
feat: Check filesystem during installation
2023-10-05 16:53:56 +02:00
Kroese c2dc0cd3b6 feat: Check filesystem during installation 2023-10-05 16:49:00 +02:00
Kroese e2a4ab7515 feat: Check filesystem during installation 2023-10-05 16:45:12 +02:00
Kroese d94a9d0966 fix: Extract files inside container
fix: Extract files inside container
2023-10-05 15:55:49 +02:00
Kroese 6d9c281add build: Use DockerHub mirror 2023-10-05 15:51:42 +02:00
Kroese da51c1df1f fix: Extract files inside container 2023-10-05 15:47:17 +02:00
Kroese 97918abdb0 build: Remove btrfs-progs 2023-10-05 15:35:24 +02:00
Kroese 6a8093a3f4 fix: Do not format image as btrfs 2023-10-05 15:31:42 +02:00
Kroese 0bd0806ceb Merge pull request #321 from kroese/renovate/docker-setup-buildx-action-3.x
chore(deps): update docker/setup-buildx-action action to v3
2023-09-12 10:41:06 +02:00
Kroese 386c2ccc45 Merge pull request #320 from kroese/renovate/docker-login-action-3.x
chore(deps): update docker/login-action action to v3
2023-09-12 10:40:51 +02:00
renovate[bot] ff6a3b8776 chore(deps): update docker/setup-buildx-action action to v3 2023-09-12 08:10:13 +00:00
renovate[bot] f290fb7031 chore(deps): update docker/login-action action to v3 2023-09-12 08:10:09 +00:00
Kroese b4e19ccc23 Update readme.md
Update readme.md
2023-09-05 03:45:48 +02:00
Kroese e3c514f8dc Update readme.md 2023-09-05 03:45:32 +02:00
Kroese 101b509f81 Merge pull request #316 from kroese/renovate/actions-checkout-4.x
chore(deps): update actions/checkout action to v4
2023-09-04 16:07:12 +02:00
renovate[bot] 6a5301b3f2 chore(deps): update actions/checkout action to v4 2023-09-04 14:04:19 +00:00
Kroese cad5e5d5c2 Readme
Readme
2023-07-27 01:41:09 +02:00
Kroese 024170d190 docs: Readme 2023-07-27 01:40:31 +02:00
Kroese 0ce14f6c2d fix: Disable pidwait
fix: Disable pidwait
2023-07-18 20:17:19 +02:00
Kroese 272e491281 fix: Disable pidwait 2023-07-18 20:16:47 +02:00
Kroese 0518e1100b Add ARGUMENTS variable
Add ARGUMENTS variable
2023-07-18 19:47:56 +02:00
Kroese 8aa797b557 feat: Add ARGUMENTS variable 2023-07-18 19:44:09 +02:00
9 changed files with 38 additions and 23 deletions

No files matched your search

+4 -4
View File
@@ -28,10 +28,10 @@ jobs:
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
-
@@ -54,13 +54,13 @@ jobs:
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
-
name: Login into Docker Hub
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
+1 -1
View File
@@ -7,7 +7,7 @@ jobs:
name: shellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
env:
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
dockerHubDescription:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
-
name: Docker Hub Description
uses: peter-evans/dockerhub-description@v3
+4 -5
View File
@@ -1,4 +1,4 @@
FROM ghcr.io/qemu-tools/qemu-host as builder
FROM qemux/qemu-host as builder
# FROM golang as builder
# WORKDIR /
@@ -21,14 +21,13 @@ RUN apt-get update && apt-get -y upgrade && \
unzip \
socat \
procps \
dnsmasq \
xz-utils \
iptables \
iproute2 \
net-tools \
btrfs-progs \
netcat-openbsd \
dnsmasq \
net-tools \
ca-certificates \
netcat-openbsd \
qemu-system-x86 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+2 -2
View File
@@ -178,7 +178,7 @@ docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-ti
Yes, this project contains only open-source code and does not distribute any copyrighted material. Neither does it try to circumvent any copyright protection measures. So under all applicable laws, this project would be considered legal.
However, by installing Synology's Virtual DSM, you must accept their end-user license agreement, which does not permit installation on non-Synology hardware. So only run this project on an official Synology NAS via the Container Manager package, as any other use will be a violation of their terms and conditions.
However, by installing Synology's Virtual DSM, you must accept their end-user license agreement, which does not permit installation on non-Synology hardware. So only run this project on an official Synology NAS, as any other use will be a violation of their terms and conditions.
## Disclaimer
@@ -191,4 +191,4 @@ Only run this container on Synology hardware, any other use is not permitted by
[Build]: https://github.com/kroese/virtual-dsm/actions/workflows/build.yml/badge.svg
[Size]: https://img.shields.io/docker/image-size/kroese/virtual-dsm/latest?color=066da5&label=size
[Pulls]: https://img.shields.io/docker/pulls/kroese/virtual-dsm.svg?style=flat&label=pulls&logo=docker
[Version]: https://img.shields.io/docker/v/kroese/virtual-dsm?arch=amd64&sort=date&color=066da5
[Version]: https://img.shields.io/docker/v/kroese/virtual-dsm/latest?arch=amd64&sort=semver&color=066da5
+1 -1
View File
@@ -125,7 +125,7 @@ if [ ! -f "${DATA}" ]; then
fi
# Format as BTRFS filesystem
mkfs.btrfs -q -L data -d single -m dup "${DATA}" > /dev/null
# mkfs.btrfs -q -L data -d single -m dup "${DATA}" > /dev/null
fi
+15 -3
View File
@@ -31,13 +31,20 @@ rm -f "$STORAGE"/"$BASE".agent
rm -f "$STORAGE"/"$BASE".boot.img
rm -f "$STORAGE"/"$BASE".system.img
TMP="$STORAGE/tmp"
RDC="$STORAGE/dsm.rd"
TMP="/tmp/dsm"
FS=$(stat -f -c %T "$STORAGE")
[[ "$FS" == "ext"* ]] && TMP="$STORAGE/tmp"
rm -rf "$TMP" && mkdir -p "$TMP"
# Check free diskspace
MIN_SPACE=5842450944
SPACE=$(df --output=avail -B 1 "$TMP" | tail -n 1)
(( MIN_SPACE > SPACE )) && error "Not enough free space for installation." && exit 95
[[ "${DEBUG}" == [Yy1]* ]] && set -x
RDC="$STORAGE/dsm.rd"
if [ ! -f "${RDC}" ]; then
info "Install: Downloading installer..."
@@ -250,6 +257,11 @@ mke2fs -q -t ext4 -b 4096 -d "$MOUNT/" -L "$LABEL" -F -E "offset=$OFFSET" "$SYST
rm -rf "$MOUNT"
echo "$BASE" > "$STORAGE"/dsm.ver
# Check free diskspace
SPACE=$(df --output=avail -B 1 "$STORAGE" | tail -n 1)
(( MIN_SPACE > SPACE )) && error "Not enough free space in storage folder." && exit 94
mv -f "$PAT" "$STORAGE"/"$BASE".pat
mv -f "$BOOT" "$STORAGE"/"$BASE".boot.img
mv -f "$SYSTEM" "$STORAGE"/"$BASE".system.img
+5 -2
View File
@@ -146,10 +146,13 @@ configureNAT () {
ip link set dev "${VM_NET_TAP}" master dockerbridge
# Add internet connection to the VM
IP=$(ip address show dev "${VM_NET_DEV}" | grep inet | awk '/inet / { print $2 }' | cut -f1 -d/)
iptables -t nat -A POSTROUTING -o "${VM_NET_DEV}" -j MASQUERADE
iptables -t nat -A PREROUTING -i "${VM_NET_DEV}" -p tcp -j DNAT --to $VM_NET_IP
iptables -t nat -A PREROUTING -i "${VM_NET_DEV}" -p udp -j DNAT --to $VM_NET_IP
iptables -t nat -A PREROUTING -i "${VM_NET_DEV}" -d "${IP}" -p tcp -j DNAT --to $VM_NET_IP
iptables -t nat -A PREROUTING -i "${VM_NET_DEV}" -d "${IP}" -p udp -j DNAT --to $VM_NET_IP
if (( KERNEL > 4 )); then
# Hack for guest VMs complaining about "bad udp checksums in 5 packets"
+5 -4
View File
@@ -6,6 +6,7 @@ set -Eeuo pipefail
: ${URL:=''} # URL of the PAT file
: ${DEBUG:='N'} # Enable debug mode
: ${ALLOCATE:='Y'} # Preallocate diskspace
: ${ARGUMENTS:=''} # Extra QEMU parameters
: ${CPU_CORES:='1'} # Amount of CPU cores
: ${DISK_SIZE:='16G'} # Initial data disk size
: ${RAM_SIZE:='512M'} # Maximum RAM amount
@@ -80,7 +81,7 @@ EXTRA_OPTS="-device virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x4"
EXTRA_OPTS="$EXTRA_OPTS -object rng-random,id=objrng0,filename=/dev/urandom"
EXTRA_OPTS="$EXTRA_OPTS -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pcie.0,addr=0x1c"
ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${MAC_OPTS} ${MON_OPTS} ${SERIAL_OPTS} ${NET_OPTS} ${DISK_OPTS} ${EXTRA_OPTS}"
ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${MAC_OPTS} ${MON_OPTS} ${SERIAL_OPTS} ${NET_OPTS} ${DISK_OPTS} ${EXTRA_OPTS} ${ARGUMENTS}"
ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ')
trap - ERR
@@ -93,8 +94,8 @@ set -m
)
set +m
if (( KERNEL > 5 )) || ( (( KERNEL == 5 )) && (( MINOR > 2 )) ); then
pidwait -F "${_QEMU_PID}" & wait $!
fi
#if (( KERNEL > 5 )) || ( (( KERNEL == 5 )) && (( MINOR > 2 )) ); then
# pidwait -F "${_QEMU_PID}" & wait $!
#else
tail --pid "$(cat "${_QEMU_PID}")" --follow /dev/null & wait $!