Loading src/gpu.sh +2 −23 Original line number Diff line number Diff line Loading @@ -18,28 +18,7 @@ fi chmod 666 /dev/dri/card0 chmod 666 /dev/dri/renderD128 if ! apt-mark showinstall | grep -q "xserver-xorg-video-intel"; then info "Installing Intel GPU drivers..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" apt-get -qq update apt-get -qq --no-install-recommends -y install xserver-xorg-video-intel > /dev/null fi if ! apt-mark showinstall | grep -q "qemu-system-modules-opengl"; then info "Installing OpenGL module..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" apt-get -qq update apt-get -qq --no-install-recommends -y install qemu-system-modules-opengl > /dev/null fi addPackage "xserver-xorg-video-intel" "Intel GPU drivers" addPackage "qemu-system-modules-opengl" "OpenGL module" return 0 src/install.sh +18 −45 Original line number Diff line number Diff line Loading @@ -14,15 +14,13 @@ fi [ -n "$URL" ] && BASE=$(basename "$URL" .pat) if [[ -f "$STORAGE/$BASE.boot.img" ]] && [[ -f "$STORAGE/$BASE.system.img" ]]; then # Previous installation found return 0 return 0 # Previous installation found fi # Display wait message /run/server.sh 5000 install & DL="" COUNTRY="" DL_CHINA="https://cndl.synology.cn/download/DSM" DL_GLOBAL="https://global.synologydownload.com/download/DSM" Loading @@ -30,35 +28,11 @@ DL_GLOBAL="https://global.synologydownload.com/download/DSM" [[ "${URL,,}" == *"global.synology"* ]] && DL="$DL_GLOBAL" if [ -z "$DL" ]; then info "Install: Selecting download mirror..." # Detect country { JSON=$(curl -H "Accept: application/json" -sfk https://ipinfo.io/json); rc=$?; } || : if (( rc == 0 )); then { COUNTRY=$(echo "$JSON" | jq -r '.country' 2> /dev/null); rc=$?; } || : (( rc != 0 )) || [[ "$COUNTRY" == "null" ]] && COUNTRY="" fi if [[ -z "$COUNTRY" ]]; then { JSON=$(curl -H "Accept: application/json" -sfk https://api.ipapi.is); rc=$?; } || : if (( rc == 0 )); then { COUNTRY=$(echo "$JSON" | jq -r '.location.country_code' 2> /dev/null); rc=$?; } || : (( rc != 0 )) || [[ "$COUNTRY" == "null" ]] && COUNTRY="" fi fi # Select download mirror based on country if [ "$COUNTRY" == "CN" ]; then DL="$DL_CHINA" else DL="$DL_GLOBAL" fi [ -z "$COUNTRY" ] && setCountry [[ "${COUNTRY^^}" == "CN" ]] && DL="$DL_CHINA" || DL="$DL_GLOBAL" fi if [ -z "$URL" ]; then # Select default version based on architecture if [ "$ARCH" == "amd64" ]; then URL="$DL/release/7.2.1/69057-1/DSM_VirtualDSM_69057.pat" else Loading @@ -75,13 +49,14 @@ fi BASE=$(basename "$URL" .pat) if [[ "$URL" != "file://${STORAGE}/${BASE}.pat" ]]; then rm -f "$STORAGE"/"$BASE".pat fi rm -f "$STORAGE"/"$BASE".agent rm -f "$STORAGE"/"$BASE".boot.img rm -f "$STORAGE"/"$BASE".system.img info "Install: Checking filesystem..." [[ "${DEBUG}" == [Yy1]* ]] && set -x # Check filesystem Loading Loading @@ -202,9 +177,17 @@ info "Install: Downloading $(basename "$URL")..." PAT="/$BASE.pat" rm -f "$PAT" { wget "$URL" -O "$PAT" -q --no-check-certificate --show-progress "$PROGRESS"; rc=$?; } || : if [[ "$URL" == "file://"* ]]; then cp "${URL:7}" "$PAT" else { wget "$URL" -O "$PAT" -q --no-check-certificate --show-progress "$PROGRESS"; rc=$?; } || : (( rc != 0 )) && error "Failed to download $URL, reason: $rc" && exit 69 fi [ ! -f "$PAT" ] && error "Failed to download $URL" && exit 69 SIZE=$(stat -c%s "$PAT") Loading @@ -220,17 +203,7 @@ if { tar tf "$PAT"; } >/dev/null 2>&1; then else if [ "$ARCH" != "amd64" ]; then info "Install: Installing QEMU..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" apt-get -qq update apt-get -qq --no-install-recommends -y install qemu-user > /dev/null fi [ "$ARCH" != "amd64" ] && addPackage "qemu-user" "QEMU" info "Install: Extracting downloaded image..." Loading src/reset.sh +61 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ trap 'error "Status $? while: ${BASH_COMMAND} (line $LINENO/$BASH_LINENO)"' ERR : ${GPU:='N'} # Enable GPU passthrough : ${DEBUG:='N'} # Enable debugging mode : ${COUNTRY:=''} # Country code for mirror : ${CONSOLE:='N'} # Start in console mode : ${ALLOCATE:='Y'} # Preallocate diskspace : ${ARGUMENTS:=''} # Extra QEMU parameters Loading Loading @@ -42,4 +43,64 @@ rm -f /run/qemu.count rm -rf /tmp/dsm rm -rf "$STORAGE/tmp" # Helper functions getCountry () { local rc local json local result local url=$1 local query=$2 { json=$(curl -H "Accept: application/json" -sfk "$url"); rc=$?; } || : (( rc != 0 )) && return 0 { result=$(echo "$json" | jq -r "$query" 2> /dev/null); rc=$?; } || : (( rc != 0 )) && return 0 [[ ${#result} -ne 2 ]] && return 0 [[ "${result^^}" == "XX" ]] && return 0 COUNTRY="${result^^}" return 0 } setCountry () { [ -z "$COUNTRY" ] && getCountry "https://api.ipapi.is" ".location.country_code" [ -z "$COUNTRY" ] && getCountry "https://ifconfig.co/json" ".country_iso" [ -z "$COUNTRY" ] && getCountry "https://ipinfo.io/json" ".country" [ -z "$COUNTRY" ] && getCountry "https://api.myip.com" ".cc" return 0 } addPackage () { local pkg=$1 local desc=$2 if apt-mark showinstall | grep -q "$pkg"; then return 0 fi info "Installing $desc..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" [ -z "$COUNTRY" ] && setCountry if [[ "${COUNTRY^^}" == "CN" ]]; then sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources fi apt-get -qq update apt-get -qq --no-install-recommends -y install "$pkg" > /dev/null return 0 } return 0 Loading
src/gpu.sh +2 −23 Original line number Diff line number Diff line Loading @@ -18,28 +18,7 @@ fi chmod 666 /dev/dri/card0 chmod 666 /dev/dri/renderD128 if ! apt-mark showinstall | grep -q "xserver-xorg-video-intel"; then info "Installing Intel GPU drivers..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" apt-get -qq update apt-get -qq --no-install-recommends -y install xserver-xorg-video-intel > /dev/null fi if ! apt-mark showinstall | grep -q "qemu-system-modules-opengl"; then info "Installing OpenGL module..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" apt-get -qq update apt-get -qq --no-install-recommends -y install qemu-system-modules-opengl > /dev/null fi addPackage "xserver-xorg-video-intel" "Intel GPU drivers" addPackage "qemu-system-modules-opengl" "OpenGL module" return 0
src/install.sh +18 −45 Original line number Diff line number Diff line Loading @@ -14,15 +14,13 @@ fi [ -n "$URL" ] && BASE=$(basename "$URL" .pat) if [[ -f "$STORAGE/$BASE.boot.img" ]] && [[ -f "$STORAGE/$BASE.system.img" ]]; then # Previous installation found return 0 return 0 # Previous installation found fi # Display wait message /run/server.sh 5000 install & DL="" COUNTRY="" DL_CHINA="https://cndl.synology.cn/download/DSM" DL_GLOBAL="https://global.synologydownload.com/download/DSM" Loading @@ -30,35 +28,11 @@ DL_GLOBAL="https://global.synologydownload.com/download/DSM" [[ "${URL,,}" == *"global.synology"* ]] && DL="$DL_GLOBAL" if [ -z "$DL" ]; then info "Install: Selecting download mirror..." # Detect country { JSON=$(curl -H "Accept: application/json" -sfk https://ipinfo.io/json); rc=$?; } || : if (( rc == 0 )); then { COUNTRY=$(echo "$JSON" | jq -r '.country' 2> /dev/null); rc=$?; } || : (( rc != 0 )) || [[ "$COUNTRY" == "null" ]] && COUNTRY="" fi if [[ -z "$COUNTRY" ]]; then { JSON=$(curl -H "Accept: application/json" -sfk https://api.ipapi.is); rc=$?; } || : if (( rc == 0 )); then { COUNTRY=$(echo "$JSON" | jq -r '.location.country_code' 2> /dev/null); rc=$?; } || : (( rc != 0 )) || [[ "$COUNTRY" == "null" ]] && COUNTRY="" fi fi # Select download mirror based on country if [ "$COUNTRY" == "CN" ]; then DL="$DL_CHINA" else DL="$DL_GLOBAL" fi [ -z "$COUNTRY" ] && setCountry [[ "${COUNTRY^^}" == "CN" ]] && DL="$DL_CHINA" || DL="$DL_GLOBAL" fi if [ -z "$URL" ]; then # Select default version based on architecture if [ "$ARCH" == "amd64" ]; then URL="$DL/release/7.2.1/69057-1/DSM_VirtualDSM_69057.pat" else Loading @@ -75,13 +49,14 @@ fi BASE=$(basename "$URL" .pat) if [[ "$URL" != "file://${STORAGE}/${BASE}.pat" ]]; then rm -f "$STORAGE"/"$BASE".pat fi rm -f "$STORAGE"/"$BASE".agent rm -f "$STORAGE"/"$BASE".boot.img rm -f "$STORAGE"/"$BASE".system.img info "Install: Checking filesystem..." [[ "${DEBUG}" == [Yy1]* ]] && set -x # Check filesystem Loading Loading @@ -202,9 +177,17 @@ info "Install: Downloading $(basename "$URL")..." PAT="/$BASE.pat" rm -f "$PAT" { wget "$URL" -O "$PAT" -q --no-check-certificate --show-progress "$PROGRESS"; rc=$?; } || : if [[ "$URL" == "file://"* ]]; then cp "${URL:7}" "$PAT" else { wget "$URL" -O "$PAT" -q --no-check-certificate --show-progress "$PROGRESS"; rc=$?; } || : (( rc != 0 )) && error "Failed to download $URL, reason: $rc" && exit 69 fi [ ! -f "$PAT" ] && error "Failed to download $URL" && exit 69 SIZE=$(stat -c%s "$PAT") Loading @@ -220,17 +203,7 @@ if { tar tf "$PAT"; } >/dev/null 2>&1; then else if [ "$ARCH" != "amd64" ]; then info "Install: Installing QEMU..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" apt-get -qq update apt-get -qq --no-install-recommends -y install qemu-user > /dev/null fi [ "$ARCH" != "amd64" ] && addPackage "qemu-user" "QEMU" info "Install: Extracting downloaded image..." Loading
src/reset.sh +61 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ trap 'error "Status $? while: ${BASH_COMMAND} (line $LINENO/$BASH_LINENO)"' ERR : ${GPU:='N'} # Enable GPU passthrough : ${DEBUG:='N'} # Enable debugging mode : ${COUNTRY:=''} # Country code for mirror : ${CONSOLE:='N'} # Start in console mode : ${ALLOCATE:='Y'} # Preallocate diskspace : ${ARGUMENTS:=''} # Extra QEMU parameters Loading Loading @@ -42,4 +43,64 @@ rm -f /run/qemu.count rm -rf /tmp/dsm rm -rf "$STORAGE/tmp" # Helper functions getCountry () { local rc local json local result local url=$1 local query=$2 { json=$(curl -H "Accept: application/json" -sfk "$url"); rc=$?; } || : (( rc != 0 )) && return 0 { result=$(echo "$json" | jq -r "$query" 2> /dev/null); rc=$?; } || : (( rc != 0 )) && return 0 [[ ${#result} -ne 2 ]] && return 0 [[ "${result^^}" == "XX" ]] && return 0 COUNTRY="${result^^}" return 0 } setCountry () { [ -z "$COUNTRY" ] && getCountry "https://api.ipapi.is" ".location.country_code" [ -z "$COUNTRY" ] && getCountry "https://ifconfig.co/json" ".country_iso" [ -z "$COUNTRY" ] && getCountry "https://ipinfo.io/json" ".country" [ -z "$COUNTRY" ] && getCountry "https://api.myip.com" ".cc" return 0 } addPackage () { local pkg=$1 local desc=$2 if apt-mark showinstall | grep -q "$pkg"; then return 0 fi info "Installing $desc..." export DEBCONF_NOWARNINGS="yes" export DEBIAN_FRONTEND="noninteractive" [ -z "$COUNTRY" ] && setCountry if [[ "${COUNTRY^^}" == "CN" ]]; then sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources fi apt-get -qq update apt-get -qq --no-install-recommends -y install "$pkg" > /dev/null return 0 } return 0