diff --git a/Dockerfile b/Dockerfile index c903453..50259c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,28 +9,30 @@ FROM debian:bookworm-20230320-slim RUN apt-get update && apt-get -y upgrade && \ apt-get --no-install-recommends -y install \ - iproute2 \ jq \ wget \ unzip \ procps \ - python3 \ - xz-utils \ - ca-certificates \ - netcat-openbsd \ - qemu-system-x86 \ udhcpd \ + python3 \ + iproute2 \ + xz-utils \ + qemu-utils \ + btrfs-progs \ + netcat-openbsd \ + ca-certificates \ + qemu-system-x86 \ && apt-get clean COPY run.sh /run/ -COPY agent/agent.sh /agent/ -COPY agent/service.sh /agent/ COPY server.sh /run/ COPY install.sh /run/ -COPY serial/serial.sh /run/ COPY qemu-ifup /run/ COPY qemu-ifdown /run/ COPY generate-dhcpd-conf /run/ +COPY serial/serial.sh /run/ +COPY agent/agent.sh /agent/ +COPY agent/service.sh /agent/ COPY --from=builder /src/serial/main /run/serial.bin diff --git a/agent/agent.sh b/agent/agent.sh index f501d78..e58ad77 100644 --- a/agent/agent.sh +++ b/agent/agent.sh @@ -2,11 +2,35 @@ set -u echo "Starting agent.." - chmod 666 /dev/ttyS0 echo "Starting agent.." > /dev/ttyS0 -sleep 5 +first_run=false + +for filename in /usr/local/packages/*.spk; do + first_run=true +done + +if [ "$first_run" = true ]; then + + for filename in /usr/local/packages/*.spk; do + /usr/syno/bin/synopkg install $filename > /dev/null + rm $filename + done + + /usr/syno/bin/synopkg start FileStation > /dev/null + /usr/syno/bin/synopkg start SMBService > /dev/null + /usr/syno/bin/synopkg start SynoFinder > /dev/null + /usr/syno/bin/synopkg start DhcpServer > /dev/null + /usr/syno/bin/synopkg start SecureSignIn > /dev/null + /usr/syno/bin/synopkg start Python2 > /dev/null + /usr/syno/bin/synopkg start ScsiTarget > /dev/null + /usr/syno/bin/synopkg start OAuthService > /dev/null + +else + sleep 5 +fi + echo "" > /dev/ttyS0 echo "You can now login to DSM at http://localhost:5000/" > /dev/ttyS0 echo "" > /dev/ttyS0 diff --git a/install.sh b/install.sh index e1d1705..fb8da60 100644 --- a/install.sh +++ b/install.sh @@ -38,11 +38,13 @@ fi HDA="$TMP/hda1" IDB="$TMP/indexdb" +PKG="$TMP/packages" HDP="$TMP/synohdpack_img" [ ! -f "$HDA.tgz" ] && echo "Invalid PAT file: File contains no OS image." && exit 64 [ ! -f "$HDP.txz" ] && echo "Invalid PAT file: HD pack not found." && exit 65 [ ! -f "$IDB.txz" ] && echo "Invalid PAT file: IndexDB file not found." && exit 66 +[ ! -d "$PKG" ] && echo "Invalid PAT file: File contains no packages." && exit 68 BOOT=$(find $TMP -name "*.bin.zip") @@ -80,6 +82,10 @@ tar xpfJ $HDP.txz --absolute-names -C $MOUNT/ tar xpfJ $HDA.txz --absolute-names -C $MOUNT/ tar xpfJ $IDB.txz --absolute-names -C $MOUNT/usr/syno/synoman/indexdb/ +LOC="$MOUNT/usr/local" +mkdir -p $LOC +mv $PKG/ $LOC/ + LOC="$MOUNT/usr/local/bin" mkdir -p $LOC mv /agent/agent.sh $LOC/agent.sh