Compare commits

..

24 Commits
v4.04 ... v4.10

Author SHA1 Message Date
Kroese
f0e5a61e73 Delete network on shutdown
Delete network on shutdown
2023-07-04 18:56:18 +02:00
Kroese
b07577b60d style: Remove spaces 2023-07-04 18:46:16 +02:00
Kroese
4571fe9c4f feat: Close network on shutdown 2023-07-04 18:36:38 +02:00
Kroese
9f6fbc3f7c fix: Use pidwait only on recent kernels 2023-07-04 18:22:50 +02:00
Kroese
bbc033f032 feat: Close network on shutdown 2023-07-04 18:21:37 +02:00
Kroese
160e5a07be feat: Close network on shutdown 2023-07-04 18:20:03 +02:00
Kroese
0cca2a7079 fix: Wait for address 2023-07-04 12:52:49 +02:00
Kroese
64257d1a6f Fix issue #281 and #283
Fix issue #281 and #283
2023-07-03 12:02:33 +02:00
Kroese
d6dde093b2 docs: Resize info 2023-07-03 11:59:40 +02:00
Kroese
d1957f5eb7 fix: Fix issue #281 2023-07-03 11:38:11 +02:00
Kroese
f3f9a9f480 fix: Fix issue #281 2023-07-03 11:26:10 +02:00
Kroese
15d67203c9 fix: Fix issue #283 2023-07-03 11:11:47 +02:00
Kroese
c33c63114e Merge pull request #278 from lauwie007/master
Update to DSM 7.2 build 64570-1
2023-06-20 21:40:44 +02:00
lauwie007
80169e6b50 Update to DSM 7.2 build 64570-1
New dsm release (previous version returned  an error for me)
2023-06-20 21:36:08 +02:00
Kroese
61f733fe66 Line breaks
Line breaks
2023-06-09 09:58:31 +02:00
Kroese
03da1f38f4 fix: Line breaks 2023-06-09 09:57:55 +02:00
Kroese
8543ea5dad Update to DSM 7.2 build 64570
Update to DSM 7.2 build 64570
2023-06-09 09:48:21 +02:00
Kroese
36ebb950eb Update to DSM 7.2 build 64570 2023-06-09 09:47:44 +02:00
Kroese
76ad3ff502 Add host MAC address
Add host MAC address
2023-05-29 14:03:07 +02:00
Kroese
4673feb282 feat: Add host MAC address 2023-05-29 13:53:02 +02:00
Kroese
df6436bf6a Use dots as seperator
Use dots as seperator
2023-05-29 05:03:56 +02:00
Kroese
d904ebfc85 fix: Use dots as seperator 2023-05-29 04:54:21 +02:00
Kroese
b78342328f Add host model environment variable
Add host model environment variable
2023-05-29 02:57:42 +02:00
Kroese
36c89f0556 feat: Add host model 2023-05-29 02:56:47 +02:00
8 changed files with 63 additions and 13 deletions

View File

@@ -143,9 +143,11 @@ else
MSG="http://${IP}:5000" MSG="http://${IP}:5000"
fi fi
echo ""
info "--------------------------------------------------------" info "--------------------------------------------------------"
info " You can now login to DSM at ${MSG}" info " You can now login to DSM at ${MSG}"
info "--------------------------------------------------------" info "--------------------------------------------------------"
echo ""
# Wait for NMI interrupt as a shutdown signal # Wait for NMI interrupt as a shutdown signal

View File

@@ -61,6 +61,8 @@ docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-ti
DISK_SIZE: "256G" DISK_SIZE: "256G"
``` ```
This can also be used to resize the existing disk to a larger capacity without data loss.
* ### How do I change the location of the virtual disk? * ### How do I change the location of the virtual disk?
To change the virtual disk's location from the default Docker volume, include the following bind mount in your compose file: To change the virtual disk's location from the default Docker volume, include the following bind mount in your compose file:

View File

@@ -39,7 +39,9 @@ if [ -f "${DATA}" ]; then
if [[ "${ALLOCATE}" == [Nn]* ]]; then if [[ "${ALLOCATE}" == [Nn]* ]]; then
# Resize file by changing its length # Resize file by changing its length
truncate -s "${DATA_SIZE}" "${DATA}"; if ! truncate -s "${DATA_SIZE}" "${DATA}"; then
error "Could not resize the file for the virtual disk." && exit 85
fi
else else
@@ -55,7 +57,9 @@ if [ -f "${DATA}" ]; then
# Resize file by allocating more space # Resize file by allocating more space
if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then
error "Could not allocate a file for the virtual disk." && exit 85 if ! truncate -s "${DATA_SIZE}" "${DATA}"; then
error "Could not resize the file for the virtual disk." && exit 85
fi
fi fi
if [[ "${ALLOCATE}" == [Zz]* ]]; then if [[ "${ALLOCATE}" == [Zz]* ]]; then
@@ -84,7 +88,10 @@ if [ ! -f "${DATA}" ]; then
if [[ "${ALLOCATE}" == [Nn]* ]]; then if [[ "${ALLOCATE}" == [Nn]* ]]; then
# Create an empty file # Create an empty file
truncate -s "${DATA_SIZE}" "${DATA}" if ! truncate -s "${DATA_SIZE}" "${DATA}"; then
rm -f "${DATA}"
error "Could not create a file for the virtual disk." && exit 87
fi
else else
@@ -98,8 +105,10 @@ if [ ! -f "${DATA}" ]; then
# Create an empty file # Create an empty file
if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then if ! fallocate -l "${DATA_SIZE}" "${DATA}"; then
if ! truncate -s "${DATA_SIZE}" "${DATA}"; then
rm -f "${DATA}" rm -f "${DATA}"
error "Could not allocate a file for the virtual disk." && exit 87 error "Could not create a file for the virtual disk." && exit 87
fi
fi fi
if [[ "${ALLOCATE}" == [Zz]* ]]; then if [[ "${ALLOCATE}" == [Zz]* ]]; then

View File

@@ -10,7 +10,7 @@ DL="https://global.synologydownload.com/download/DSM"
if [ -z "$URL" ]; then if [ -z "$URL" ]; then
if [ "$ARCH" == "amd64" ]; then if [ "$ARCH" == "amd64" ]; then
URL="$DL/release/7.2/64561/DSM_VirtualDSM_64561.pat" URL="$DL/release/7.2/64570-1/DSM_VirtualDSM_64570.pat"
else else
URL="$DL/release/7.0.1/42218/DSM_VirtualDSM_42218.pat" URL="$DL/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"
fi fi
@@ -179,7 +179,9 @@ SPACE=$(df --output=avail -B 1 "$TMP" | tail -n 1)
(( SYSTEM_SIZE > SPACE )) && error "Not enough free space to create a 4 GB system disk." && exit 87 (( SYSTEM_SIZE > SPACE )) && error "Not enough free space to create a 4 GB system disk." && exit 87
if ! fallocate -l "${SYSTEM_SIZE}" "${SYSTEM}"; then if ! fallocate -l "${SYSTEM_SIZE}" "${SYSTEM}"; then
if ! truncate -s "${SYSTEM_SIZE}" "${SYSTEM}"; then
rm -f "${SYSTEM}" && error "Could not allocate a file for the system disk." && exit 88 rm -f "${SYSTEM}" && error "Could not allocate a file for the system disk." && exit 88
fi
fi fi
if [[ "${ALLOCATE}" == [Zz]* ]]; then if [[ "${ALLOCATE}" == [Zz]* ]]; then

View File

@@ -31,7 +31,10 @@ configureDHCP() {
error "and that the NET_ADMIN capability has been added to the container config: --cap-add NET_ADMIN" && exit 16 error "and that the NET_ADMIN capability has been added to the container config: --cap-add NET_ADMIN" && exit 16
fi fi
ip link set "${VM_NET_TAP}" up while ! ip link set "${VM_NET_TAP}" up; do
info "Waiting for address to become available..."
sleep 2
done
TAP_NR=$(</sys/class/net/"${VM_NET_TAP}"/ifindex) TAP_NR=$(</sys/class/net/"${VM_NET_TAP}"/ifindex)
TAP_PATH="/dev/tap${TAP_NR}" TAP_PATH="/dev/tap${TAP_NR}"
@@ -127,11 +130,20 @@ configureNAT () {
fi fi
ip address add ${VM_NET_IP%.*}.1/24 broadcast ${VM_NET_IP%.*}.255 dev dockerbridge ip address add ${VM_NET_IP%.*}.1/24 broadcast ${VM_NET_IP%.*}.255 dev dockerbridge
ip link set dockerbridge up
while ! ip link set dockerbridge up; do
info "Waiting for address to become available..."
sleep 2
done
# QEMU Works with taps, set tap to the bridge created # QEMU Works with taps, set tap to the bridge created
ip tuntap add dev "${VM_NET_TAP}" mode tap ip tuntap add dev "${VM_NET_TAP}" mode tap
ip link set "${VM_NET_TAP}" up promisc on
while ! ip link set "${VM_NET_TAP}" up promisc on; do
info "Waiting for tap to become available..."
sleep 2
done
ip link set dev "${VM_NET_TAP}" master dockerbridge ip link set dev "${VM_NET_TAP}" master dockerbridge
# Add internet connection to the VM # Add internet connection to the VM
@@ -165,6 +177,24 @@ configureNAT () {
return 0 return 0
} }
closeNetwork () {
if [[ "${DHCP}" == [Yy1]* ]]; then
ip link set "${VM_NET_TAP}" down || true
ip link delete "${VM_NET_TAP}" || true
else
ip link set "${VM_NET_TAP}" down promisc off || true
ip link delete "${VM_NET_TAP}" || true
ip link set dockerbridge down || true
ip link delete dockerbridge || true
fi
}
# ###################################### # ######################################
# Configure Network # Configure Network
# ###################################### # ######################################

View File

@@ -81,6 +81,8 @@ _graceful_shutdown() {
echo && echo " Quitting..." echo && echo " Quitting..."
echo 'quit' | nc -q 1 -w 1 localhost "${QEMU_MONPORT}" >/dev/null 2>&1 || true echo 'quit' | nc -q 1 -w 1 localhost "${QEMU_MONPORT}" >/dev/null 2>&1 || true
closeNetwork
return return
} }

View File

@@ -21,6 +21,7 @@ trap 'error "Status $? while: ${BASH_COMMAND} (line $LINENO/$BASH_LINENO)"' ERR
STORAGE="/storage" STORAGE="/storage"
KERNEL=$(uname -r | cut -b 1) KERNEL=$(uname -r | cut -b 1)
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-x86_64 --version | head -n 1 | cut -d '(' -f 1)
@@ -92,7 +93,7 @@ set -m
) )
set +m set +m
if (( KERNEL > 4 )); then if (( KERNEL > 5 )) || ( (( KERNEL == 5 )) && (( MINOR > 10 )) ); then
pidwait -F "${_QEMU_PID}" & wait $! pidwait -F "${_QEMU_PID}" & wait $!
else else
tail --pid "$(cat "${_QEMU_PID}")" --follow /dev/null & wait $! tail --pid "$(cat "${_QEMU_PID}")" --follow /dev/null & wait $!

View File

@@ -9,6 +9,7 @@ set -Eeuo pipefail
: ${HOST_DEBUG:=''} : ${HOST_DEBUG:=''}
: ${HOST_SERIAL:=''} : ${HOST_SERIAL:=''}
: ${GUEST_SERIAL:=''} : ${GUEST_SERIAL:=''}
: ${HOST_MODEL:=''}
: ${HOST_VERSION:=''} : ${HOST_VERSION:=''}
: ${HOST_TIMESTAMP:=''} : ${HOST_TIMESTAMP:=''}
@@ -30,8 +31,9 @@ HOST_ARGS=()
HOST_ARGS+=("-cpu=${CPU_CORES}") HOST_ARGS+=("-cpu=${CPU_CORES}")
HOST_ARGS+=("-cpu_arch=${HOST_CPU}") HOST_ARGS+=("-cpu_arch=${HOST_CPU}")
[ -n "$HOST_MAC" ] && HOST_ARGS+=("-mac=${HOST_MAC//:/-}") [ -n "$HOST_MAC" ] && HOST_ARGS+=("-mac=${HOST_MAC}")
[ -n "$HOST_BUILD" ] && HOST_ARGS+=("-build=${HOST_BUILD}") [ -n "$HOST_BUILD" ] && HOST_ARGS+=("-build=${HOST_BUILD}")
[ -n "$HOST_MODEL" ] && HOST_ARGS+=("-model=${HOST_MODEL}")
[ -n "$HOST_SERIAL" ] && HOST_ARGS+=("-hostsn=${HOST_SERIAL}") [ -n "$HOST_SERIAL" ] && HOST_ARGS+=("-hostsn=${HOST_SERIAL}")
[ -n "$GUEST_SERIAL" ] && HOST_ARGS+=("-guestsn=${GUEST_SERIAL}") [ -n "$GUEST_SERIAL" ] && HOST_ARGS+=("-guestsn=${GUEST_SERIAL}")
[ -n "$HOST_VERSION" ] && HOST_ARGS+=("-version=${HOST_VERSION}") [ -n "$HOST_VERSION" ] && HOST_ARGS+=("-version=${HOST_VERSION}")