tree: rework

Signed-off-by: AuxXxilium <info@auxxxilium.tech>
This commit is contained in:
AuxXxilium 2024-11-07 20:24:20 +01:00
parent 474b8bbe03
commit d9c71d453a
12 changed files with 362 additions and 182 deletions

View File

@ -5,10 +5,23 @@
# See /LICENSE for more information. # See /LICENSE for more information.
# #
name: Build Arc Image Dev name: Build Arc Image Beta
on: on:
workflow_dispatch: workflow_dispatch:
inputs:
version:
description: "version (1.0.0)"
required: true
type: string
next:
description: "next"
default: true
type: boolean
stable:
description: "stable"
default: true
type: boolean
jobs: jobs:
build: build:
@ -30,15 +43,6 @@ jobs:
df -h df -h
# calculates the version number and push
- name: Calculate Version
run: |
# Calculate Version
VERSION="`date +'%y.%m'`.dev"
echo "Version: ${VERSION}"
echo "VERSION=${VERSION}" >> $GITHUB_ENV
# Get extractor, LKM, Addons, Modules, Theme and Configs # Get extractor, LKM, Addons, Modules, Theme and Configs
- name: Get Buildroot - name: Get Buildroot
run: | run: |
@ -62,15 +66,20 @@ jobs:
# Build incremental # Build incremental
- name: Build Next Image - name: Build Next Image
if: inputs.next == true
run: | run: |
. scripts/func.sh . scripts/func.sh
# Modify Source File # Modify Source File
echo "${VERSION}" >VERSION ARC_BUILD="`date +'%y.%m.%d'`-dev"
echo "${VERSION}" >files/p1/ARC-VERSION ARC_VERSION="${{ inputs.version }}"
ARCBRANCH="dev" ARC_BRANCH="next"
echo "${ARCBRANCH}" >files/p1/ARC-BRANCH echo "${ARC_BUILD}" >files/p1/ARC-BUILD
echo "ARCBRANCH=${ARCBRANCH}" >> $GITHUB_ENV echo "${ARC_VERSION}" >files/p1/ARC-VERSION
echo "${ARC_BRANCH}" >files/p1/ARC-BRANCH
echo "ARC_BUILD=${ARC_BUILD}" >> $GITHUB_ENV
echo "ARC_VERSION=${ARC_VERSION}" >> $GITHUB_ENV
echo "ARC_BRANCH=${ARC_BRANCH}" >> $GITHUB_ENV
echo "Create Arc Image" echo "Create Arc Image"
IMAGE_FILE="arc.img" IMAGE_FILE="arc.img"
@ -114,12 +123,12 @@ jobs:
# Zip image and generate checksum # Zip image and generate checksum
- name: Pack Next Image - name: Pack Next Image
run: | run: |
if [ -n "${{ env.VERSION }}" ]; then if [ -n "${{ env.ARC_VERSION }}" ]; then
zip -9 "arc-${{ env.VERSION }}-next.img.zip" arc.img zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.img.zip" arc.img
zip -9 "arc-${{ env.VERSION }}-next.vmdk-dyn.zip" arc-dyn.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-dyn.zip" arc-dyn.vmdk
zip -9 "arc-${{ env.VERSION }}-next.vmdk-flat.zip" arc.vmdk arc-flat.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-flat.zip" arc.vmdk arc-flat.vmdk
zip -9 "arc-${{ env.VERSION }}-next.vhdx.zip" arc.vhdx zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vhdx.zip" arc.vhdx
(cd files && zip -r ../update-${{ env.VERSION }}-next.zip ./p1 ./p3) (cd files && zip -r ../update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip ./p1 ./p3)
fi fi
# Cleanup # Cleanup
@ -129,12 +138,20 @@ jobs:
# Build incremental # Build incremental
- name: Build Stable Image - name: Build Stable Image
if: inputs.stable == true
run: | run: |
. scripts/func.sh . scripts/func.sh
ARCBRANCH="dev" # Modify Source File
echo "${ARCBRANCH}" >files/p1/ARC-BRANCH ARC_BUILD="`date +'%y.%m.%d'`-dev"
echo "ARCBRANCH=${ARCBRANCH}" >> $GITHUB_ENV ARC_VERSION="${{ inputs.version }}"
ARC_BRANCH="stable"
echo "${ARC_BUILD}" >files/p1/ARC-BUILD
echo "${ARC_VERSION}" >files/p1/ARC-VERSION
echo "${ARC_BRANCH}" >files/p1/ARC-BRANCH
echo "ARC_BUILD=${ARC_BUILD}" >> $GITHUB_ENV
echo "ARC_VERSION=${ARC_VERSION}" >> $GITHUB_ENV
echo "ARC_BRANCH=${ARC_BRANCH}" >> $GITHUB_ENV
echo "Create Arc Image" echo "Create Arc Image"
IMAGE_FILE="arc.img" IMAGE_FILE="arc.img"
@ -178,20 +195,20 @@ jobs:
# Zip image and generate checksum # Zip image and generate checksum
- name: Pack Stable Image - name: Pack Stable Image
run: | run: |
if [ -n "${{ env.VERSION }}" ]; then if [ -n "${{ env.ARC_VERSION }}" ]; then
zip -9 "arc-${{ env.VERSION }}-stable.img.zip" arc.img zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.img.zip" arc.img
zip -9 "arc-${{ env.VERSION }}-stable.vmdk-dyn.zip" arc-dyn.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-dyn.zip" arc-dyn.vmdk
zip -9 "arc-${{ env.VERSION }}-stable.vmdk-flat.zip" arc.vmdk arc-flat.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-flat.zip" arc.vmdk arc-flat.vmdk
zip -9 "arc-${{ env.VERSION }}-stable.vhdx.zip" arc.vhdx zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vhdx.zip" arc.vhdx
(cd files && zip -r ../update-${{ env.VERSION }}-stable.zip ./p1 ./p3) (cd files && zip -r ../update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip ./p1 ./p3)
fi fi
# Publish a release if is a tag # Publish a release if is a tag
- name: Release - name: Release
if: success() && env.VERSION != '' if: success() && env.ARC_VERSION != ''
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
with: with:
tag: ${{ env.VERSION }} tag: ${{ env.ARC_VERSION }}-${{ env.ARC_BUILD }}
prerelease: true prerelease: true
makeLatest: false makeLatest: false
allowUpdates: true allowUpdates: true

View File

@ -11,8 +11,8 @@ on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
version: version:
description: "version" description: "version (1.0.0)"
required: false required: true
type: string type: string
notice: notice:
description: "Notice here" description: "Notice here"
@ -70,24 +70,6 @@ jobs:
df -h df -h
# calculates the version number and push
- name: Calculate Version
run: |
# Calculate Version
VERSION=""
if [ -n "${{ inputs.version }}" ]; then
VERSION="${{ inputs.version }}"
else
VERSION="`date +'%y.%m.%d'`"
fi
echo "Version: ${VERSION}"
echo "VERSION=${VERSION}" >> $GITHUB_ENV
if [ -n "${VERSION}" ]; then
echo "${VERSION}" >VERSION
echo "${VERSION}" >files/p1/ARC-VERSION
fi
# Get extractor, LKM, Addons, Modules, Theme and Configs # Get extractor, LKM, Addons, Modules, Theme and Configs
- name: Get Dependencies for all Image - name: Get Dependencies for all Image
run: | run: |
@ -115,9 +97,16 @@ jobs:
run: | run: |
. scripts/func.sh . scripts/func.sh
ARCBRANCH="next" # Modify Source File
echo "${ARCBRANCH}" >files/p1/ARC-BRANCH ARC_BUILD="`date +'%y.%m.%d'`"
echo "ARCBRANCH=${ARCBRANCH}" >> $GITHUB_ENV ARC_VERSION="${{ inputs.version }}"
ARC_BRANCH="next"
echo "${ARC_BUILD}" >files/p1/ARC-BUILD
echo "${ARC_VERSION}" >files/p1/ARC-VERSION
echo "${ARC_BRANCH}" >files/p1/ARC-BRANCH
echo "ARC_BUILD=${ARC_BUILD}" >> $GITHUB_ENV
echo "ARC_VERSION=${ARC_VERSION}" >> $GITHUB_ENV
echo "ARC_BRANCH=${ARC_BRANCH}" >> $GITHUB_ENV
echo "Create Arc Image" echo "Create Arc Image"
IMAGE_FILE="arc.img" IMAGE_FILE="arc.img"
@ -165,13 +154,13 @@ jobs:
- name: Pack Next Image - name: Pack Next Image
if: inputs.next == true if: inputs.next == true
run: | run: |
if [ -n "${{ env.VERSION }}" ]; then if [ -n "${{ env.ARC_VERSION }}" ]; then
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.img.zip" arc.img zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.img.zip" arc.img
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.vmdk-dyn.zip" arc-dyn.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-dyn.zip" arc-dyn.vmdk
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.vmdk-flat.zip" arc.vmdk arc-flat.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-flat.zip" arc.vmdk arc-flat.vmdk
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.vhdx.zip" arc.vhdx zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vhdx.zip" arc.vhdx
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.ova.zip" arc.ova zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.ova.zip" arc.ova
(cd files && zip -r ../update-${{ env.VERSION }}-${{ env.ARCBRANCH }}.zip ./p1 ./p3) (cd files && zip -r ../update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip ./p1 ./p3)
fi fi
# Cleanup # Cleanup
@ -185,9 +174,16 @@ jobs:
run: | run: |
. scripts/func.sh . scripts/func.sh
ARCBRANCH="stable" # Modify Source File
echo "${ARCBRANCH}" >files/p1/ARC-BRANCH ARC_BUILD="`date +'%y.%m.%d'`"
echo "ARCBRANCH=${ARCBRANCH}" >> $GITHUB_ENV ARC_VERSION="${{ inputs.version }}"
ARC_BRANCH="stable"
echo "${ARC_BUILD}" >files/p1/ARC-BUILD
echo "${ARC_VERSION}" >files/p1/ARC-VERSION
echo "${ARC_BRANCH}" >files/p1/ARC-BRANCH
echo "ARC_BUILD=${ARC_BUILD}" >> $GITHUB_ENV
echo "ARC_VERSION=${ARC_VERSION}" >> $GITHUB_ENV
echo "ARC_BRANCH=${ARC_BRANCH}" >> $GITHUB_ENV
echo "Create Arc Image" echo "Create Arc Image"
IMAGE_FILE="arc.img" IMAGE_FILE="arc.img"
@ -235,21 +231,21 @@ jobs:
- name: Pack Stable Image - name: Pack Stable Image
if: inputs.stable == true if: inputs.stable == true
run: | run: |
if [ -n "${{ env.VERSION }}" ]; then if [ -n "${{ env.ARC_VERSION }}" ]; then
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.img.zip" arc.img zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.img.zip" arc.img
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.vmdk-dyn.zip" arc-dyn.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-dyn.zip" arc-dyn.vmdk
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.vmdk-flat.zip" arc.vmdk arc-flat.vmdk zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vmdk-flat.zip" arc.vmdk arc-flat.vmdk
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.vhdx.zip" arc.vhdx zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vhdx.zip" arc.vhdx
zip -9 "arc-${{ env.VERSION }}-${{ env.ARCBRANCH }}.ova.zip" arc.ova zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.ova.zip" arc.ova
(cd files && zip -r ../update-${{ env.VERSION }}-${{ env.ARCBRANCH }}.zip ./p1 ./p3) (cd files && zip -r ../update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip ./p1 ./p3)
fi fi
# Publish a release if is a tag # Publish a release if is a tag
- name: Release - name: Release
if: success() && env.VERSION != '' if: success() && env.ARC_VERSION != ''
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
with: with:
tag: ${{ env.VERSION }} tag: ${{ env.ARC_VERSION }}-${{ env.ARC_BUILD }}
prerelease: ${{ inputs.prerelease }} prerelease: ${{ inputs.prerelease }}
makeLatest: ${{ inputs.latest }} makeLatest: ${{ inputs.latest }}
allowUpdates: true allowUpdates: true
@ -260,8 +256,8 @@ jobs:
Full Changelog and Arc Patch (Decryption Key) are available in my Discord. Full Changelog and Arc Patch (Decryption Key) are available in my Discord.
### Versions: ### Versions:
- next: Next Image (Full Image, all dependencies are included, DSM files will be loaded from the Internet, more features/hardware support) - stable: Stable Image (Full Image, all dependencies are included, less hardware support)
- stable: Stable Image (Full Image, all dependencies are included, DSM files will be loaded from the Internet, less features/hardware support) - next: Next Image (Full Image, all dependencies are included, more hardware support, new features to test)
### Release ### Release
${{ env.BUILD_TIME }} ${{ env.BUILD_TIME }}

View File

@ -1017,8 +1017,7 @@ function sysinfo() {
done done
done done
# Print Config Informations # Print Config Informations
TEXT+="\n\n\Z4> Arc: ${ARC_VERSION}\Zn" TEXT+="\n\n\Z4> Arc: ${ARC_VERSION} (${ARC_BUILD}) ${ARC_BRANCH}\Zn"
TEXT+="\n Branch: \Zb${ARC_BRANCH}\Zn"
TEXT+="\n Subversion: \ZbAddons ${ADDONSVERSION} | Configs ${CONFIGSVERSION} | LKM ${LKMVERSION} | Modules ${MODULESVERSION} | Patches ${PATCHESVERSION}\Zn" TEXT+="\n Subversion: \ZbAddons ${ADDONSVERSION} | Configs ${CONFIGSVERSION} | LKM ${LKMVERSION} | Modules ${MODULESVERSION} | Patches ${PATCHESVERSION}\Zn"
TEXT+="\n Config | Build: \Zb${CONFDONE} | ${BUILDDONE}\Zn" TEXT+="\n Config | Build: \Zb${CONFDONE} | ${BUILDDONE}\Zn"
TEXT+="\n Config Version: \Zb${CONFIGVER}\Zn" TEXT+="\n Config Version: \Zb${CONFIGVER}\Zn"
@ -1367,7 +1366,7 @@ function staticIPMenu() {
function downgradeMenu() { function downgradeMenu() {
TEXT="" TEXT=""
TEXT+="This feature will allow you to downgrade the installation by removing the VERSION file from the first partition of all disks.\n" TEXT+="This feature will allow you to downgrade the installation by removing the VERSION file from the first partition of all disks.\n"
TEXT+="Therefore, please insert all disks before continuing.\n" TEXT+="Please insert all disks before continuing.\n"
TEXT+="Warning:\nThis operation is irreversible. Please backup important data. Do you want to continue?" TEXT+="Warning:\nThis operation is irreversible. Please backup important data. Do you want to continue?"
dialog --backtitle "$(backtitle)" --title "Allow Downgrade" \ dialog --backtitle "$(backtitle)" --title "Allow Downgrade" \
--yesno "${TEXT}" 0 0 --yesno "${TEXT}" 0 0
@ -1445,7 +1444,8 @@ function resetPassword() {
dialog --backtitle "$(backtitle)" --title "Reset Password" \ dialog --backtitle "$(backtitle)" --title "Reset Password" \
--msgbox "Invalid password" 0 0 --msgbox "Invalid password" 0 0
done done
NEWPASSWD="$(python -c "from passlib.hash import sha512_crypt;pw=\"${VALUE}\";print(sha512_crypt.using(rounds=5000).hash(pw))")" #NEWPASSWD="$(python -c "from passlib.hash import sha512_crypt;pw=\"${VALUE}\";print(sha512_crypt.using(rounds=5000).hash(pw))")"
NEWPASSWD="$(openssl passwd -6 -salt $(openssl rand -hex 8) "${VALUE}")"
( (
mkdir -p "${TMP_PATH}/mdX" mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do for I in ${DSMROOTS}; do
@ -1514,6 +1514,156 @@ EOF
return return
} }
###############################################################################
# Change Arc Loader Password
function loaderPassword() {
dialog --backtitle "$(backtitle)" --title "Loader Password" \
--inputbox "New password: (Empty value 'arc')" 0 70 \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
STRPASSWD="$(cat "${TMP_PATH}/resp")"
NEWPASSWD="$(openssl passwd -6 -salt $(openssl rand -hex 8) "${STRPASSWD:-arc}")"
cp -p /etc/shadow /etc/shadow-
sed -i "s|^root:[^:]*|root:${NEWPASSWD}|" /etc/shadow
RDXZ_PATH="${TMP_PATH}/rdxz_tmp"
rm -rf "${RDXZ_PATH}"
mkdir -p "${RDXZ_PATH}"
[ -f "${ARC_RAMDISK_USER_FILE}" ] && (
cd "${RDXZ_PATH}"
xz -dc <"${ARC_RAMDISK_USER_FILE}" | cpio -idm
) >/dev/null 2>&1 || true
if [ "${STRPASSWD:-arc}" = "arc" ]; then
rm -f ${RDXZ_PATH}/etc/shadow* 2>/dev/null
else
mkdir -p "${RDXZ_PATH}/etc"
cp -p /etc/shadow* ${RDXZ_PATH}/etc && chown root:root ${RDXZ_PATH}/etc/shadow* && chmod 600 ${RDXZ_PATH}/etc/shadow*
fi
if [ -n "$(ls -A "${RDXZ_PATH}" 2>/dev/null)" ] && [ -n "$(ls -A "${RDXZ_PATH}/etc" 2>/dev/null)" ]; then
(
cd "${RDXZ_PATH}"
RDSIZE=$(du -sb ${RDXZ_PATH} 2>/dev/null | awk '{print $1}')
find . 2>/dev/null | cpio -o -H newc -R root:root | pv -n -s ${RDSIZE:-1} | xz -9 --check=crc32 >"${ARC_RAMDISK_USER_FILE}"
) 2>&1 | dialog --backtitle "$(backtitle)" --title "Loader Password" \
--progressbox "Changing Loader password..." 30 100
else
rm -f "${ARC_RAMDISK_USER_FILE}"
fi
rm -rf "${RDXZ_PATH}"
[ "${STRPASSWD:-arc}" = "arc" ] && MSG="Loader Password for root restored." || MSG="Loader Password for root changed."
dialog --backtitle "$(backtitle)" --title "Loader Password" \
--msgbox "${MSG}" 0 0
return
}
###############################################################################
# Change Arc Loader Password
function loaderPorts() {
MSG="Please use a Port between 0-65535: (Leave empty for default value.)"
HTTPPORT=$(grep -i '^HTTP_PORT=' /etc/arc.conf 2>/dev/null | cut -d'=' -f2)
DUFSPORT=$(grep -i '^DUFS_PORT=' /etc/arc.conf 2>/dev/null | cut -d'=' -f2)
TTYDPORT=$(grep -i '^TTYD_PORT=' /etc/arc.conf 2>/dev/null | cut -d'=' -f2)
while true; do
dialog --backtitle "$(backtitle)" --title "Loader Ports" \
--form "${MSG}" 11 70 3 "HTTP" 1 1 "${HTTPPORT}" 1 10 55 0 "DUFS" 2 1 "${DUFSPORT}" 2 10 55 0 "TTYD" 3 1 "${TTYDPORT}" 3 10 55 0 \
2>"${TMP_PATH}/resp"
RET=$?
case ${RET} in
0) # ok-button
function check_port() {
if [ -z "${1}" ]; then
return 0
else
if [[ "${1}" =~ ^[0-9]+$ ]] && [ "${1}" -ge 0 ] && [ "${1}" -le 65535 ]; then
return 0
else
return 1
fi
fi
}
HTTPPORT=$(sed -n '1p' "${TMP_PATH}/resp")
DUFSPORT=$(sed -n '2p' "${TMP_PATH}/resp")
TTYDPORT=$(sed -n '3p' "${TMP_PATH}/resp")
EP=""
for P in "${HTTPPORT}" "${DUFSPORT}" "${TTYDPORT}"; do check_port "${P}" || EP="${EP} ${P}"; done
if [ -n "${EP}" ]; then
dialog --backtitle "$(backtitle)" --title "Loader Ports" \
--yesno "Invalid ${EP} Port, retry?" 0 0
[ $? -eq 0 ] && continue || break
fi
rm -f "/etc/arc.conf"
[ ! "${HTTPPORT:-7080}" = "7080" ] && echo "HTTP_PORT=${HTTPPORT}" >>"/etc/arc.conf" && /etc/init.d/S90thttpd restart >/dev/null 2>&1
[ ! "${DUFSPORT:-7304}" = "7304" ] && echo "DUFS_PORT=${DUFSPORT}" >>"/etc/arc.conf" && /etc/init.d/S99dufs restart >/dev/null 2>&1
[ ! "${TTYDPORT:-7681}" = "7681" ] && echo "TTYD_PORT=${TTYDPORT}" >>"/etc/arc.conf" && /etc/init.d/S99ttyd restart >/dev/null 2>&1
RDXZ_PATH="${TMP_PATH}/rdxz_tmp"
rm -rf "${RDXZ_PATH}"
mkdir -p "${RDXZ_PATH}"
[ -f "${ARC_RAMDISK_USER_FILE}" ] && (
cd "${RDXZ_PATH}"
xz -dc <"${ARC_RAMDISK_USER_FILE}" | cpio -idm
) >/dev/null 2>&1 || true
if [ ! -f "/etc/arc.conf" ]; then
rm -f "${RDXZ_PATH}/etc/arc.conf" 2>/dev/null
else
mkdir -p "${RDXZ_PATH}/etc"
cp -p /etc/arc.conf ${RDXZ_PATH}/etc
fi
if [ -n "$(ls -A "${RDXZ_PATH}" 2>/dev/null)" ] && [ -n "$(ls -A "${RDXZ_PATH}/etc" 2>/dev/null)" ]; then
(
cd "${RDXZ_PATH}"
RDSIZE=$(du -sb ${RDXZ_PATH} 2>/dev/null | awk '{print $1}')
find . 2>/dev/null | cpio -o -H newc -R root:root | pv -n -s ${RDSIZE:-1} | xz -9 --check=crc32 >"${ARC_RAMDISK_USER_FILE}"
) 2>&1 | dialog --backtitle "$(backtitle)" --title "Loader Ports" \
--progressbox "Changing Ports..." 30 100
else
rm -f "${ARC_RAMDISK_USER_FILE}"
fi
rm -rf "${RDXZ_PATH}"
[ ! -f "/etc/arc.conf" ] && MSG="Ports for TTYD/DUFS/HTTP restored." || MSG="Ports for TTYD/DUFS/HTTP changed."
dialog --backtitle "$(backtitle)" --title "Loader Ports" \
--msgbox "${MSG}" 0 0
break
;;
1) # cancel-button
break
;;
255) # ESC
break
;;
esac
done
return
}
###############################################################################
# Disable all scheduled tasks of DSM
function disablescheduledTasks {
DSMROOTS="$(findDSMRoot)"
if [ -z "${DSMROOTS}" ]; then
dialog --backtitle "$(backtitle)" --title "Scheduled Tasks" \
--msgbox "No DSM system partition(md0) found!\nPlease insert all disks before continuing." 0 0
return
fi
(
mkdir -p "${TMP_PATH}/mdX"
for I in ${DSMROOTS}; do
mount -t ext4 "${I}" "${TMP_PATH}/mdX"
[ $? -ne 0 ] && continue
if [ -f "${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db" ]; then
echo "UPDATE task SET enable = 0;" | sqlite3 ${TMP_PATH}/mdX/usr/syno/etc/esynoscheduler/esynoscheduler.db
sync
echo "true" >${TMP_PATH}/isEnable
fi
umount "${TMP_PATH}/mdX"
done
rm -rf "${TMP_PATH}/mdX"
) 2>&1 | dialog --backtitle "$(backtitle)" --title "Scheduled Tasks" \
--progressbox "Modifying..." 20 100
[ "$(cat ${TMP_PATH}/isEnable 2>/dev/null)" = "true" ] && MSG="Disable all scheduled tasks successful." || MSG="Disable all scheduled tasks failed."
dialog --backtitle "$(backtitle)" --title Scheduled Tasks \
--msgbox "${MSG}" 0 0
return
}
############################################################################### ###############################################################################
# modify bootipwaittime # modify bootipwaittime
function bootipwaittime() { function bootipwaittime() {

View File

@ -74,13 +74,13 @@ function backtitle() {
} }
function backtitlep() { function backtitlep() {
[ "${STEP}" == "model" ] && BACKTITLEP="CHOOSE MODEL -> " || BACKTITLEP="Choose Model -> " [ "${STEP}" == "model" ] && BACKTITLEP="CHOOSE MODEL >>> " || BACKTITLEP="Choose Model >>> "
[ "${STEP}" == "version" ] && BACKTITLEP+="CHOOSE VERSION -> " || BACKTITLEP+="Choose Version -> " [ "${STEP}" == "version" ] && BACKTITLEP+="CHOOSE VERSION >>> " || BACKTITLEP+="Choose Version >>> "
[ "${STEP}" == "snmac" ] && BACKTITLEP+="SET SN/MAC -> " || BACKTITLEP+="Set Sn/Mac -> " [ "${STEP}" == "snmac" ] && BACKTITLEP+="SET SN/MAC >>> " || BACKTITLEP+="Set Sn/Mac >>> "
[ "${STEP}" == "network" ] && BACKTITLEP+="SET NETWORK -> " || BACKTITLEP+="Set Network -> " [ "${STEP}" == "network" ] && BACKTITLEP+="SET NETWORK >>> " || BACKTITLEP+="Set Network >>> "
[ "${STEP}" == "storagemap" ] && BACKTITLEP+="SET STORAGEMAP -> " || BACKTITLEP+="Set StorageMap -> " [ "${STEP}" == "storagemap" ] && BACKTITLEP+="SET STORAGEMAP >>> " || BACKTITLEP+="Set StorageMap >>> "
[ "${STEP}" == "addons" ] && BACKTITLEP+="SET ADDONS -> " || BACKTITLEP+="Set Addons -> " [ "${STEP}" == "addons" ] && BACKTITLEP+="SET ADDONS >>> " || BACKTITLEP+="Set Addons >>> "
[ "${STEP}" == "build" ] && BACKTITLEP+="BUILD LOADER -> " || BACKTITLEP+="Build Loader -> " [ "${STEP}" == "build" ] && BACKTITLEP+="BUILD LOADER >>> " || BACKTITLEP+="Build Loader >>> "
[ "${STEP}" == "boot" ] && BACKTITLEP+="BOOT DSM" || BACKTITLEP+="Boot DSM" [ "${STEP}" == "boot" ] && BACKTITLEP+="BOOT DSM" || BACKTITLEP+="Boot DSM"
echo "${BACKTITLEP}" echo "${BACKTITLEP}"
} }
@ -157,19 +157,13 @@ function arcModel() {
[ ${COMPATIBLE} -eq 1 ] && echo -e "${M} \"\t$(printf "\Zb%-15s\Zn \Zb%-5s\Zn \Zb%-12s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "${A}" "${DTS}" "${IGPUS}" "${HBAS}" "${M_2_CACHE}" "${M_2_STORAGE}" "${USBS}" "${BETA}")\" ">>"${TMP_PATH}/menu" [ ${COMPATIBLE} -eq 1 ] && echo -e "${M} \"\t$(printf "\Zb%-15s\Zn \Zb%-5s\Zn \Zb%-12s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "${A}" "${DTS}" "${IGPUS}" "${HBAS}" "${M_2_CACHE}" "${M_2_STORAGE}" "${USBS}" "${BETA}")\" ">>"${TMP_PATH}/menu"
fi fi
done < <(cat "${TMP_PATH}/modellist") done < <(cat "${TMP_PATH}/modellist")
if [ -n "${ARCKEY}" ]; then [ -n "${ARCKEY}" ] && MSG="Supported Models for your Hardware (x = supported / + = need Addons)\n$(printf "\Zb%-16s\Zn \Zb%-15s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-12s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "Model" "Platform" "DT" "Arc" "Intel iGPU" "HBA" "M.2 Cache" "M.2 Volume" "USB Mount" "Source")" || MSG="Supported Models for your Hardware (x = supported / + = need Addons) | Syno Models can have faulty Values.\n$(printf "\Zb%-16s\Zn \Zb%-15s\Zn \Zb%-5s\Zn \Zb%-12s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "Model" "Platform" "DT" "Intel iGPU" "HBA" "M.2 Cache" "M.2 Volume" "USB Mount" "Source")"
dialog --backtitle "$(backtitlep)" --title "Arc Model" --colors \ [ -n "${ARCKEY}" ] && TITLEMSG="Arc Model" || TITLEMSG="Model"
--cancel-label "Show all" --help-button --help-label "Exit" \ dialog --backtitle "$(backtitlep)" --title "${TITLEMSG}" --colors \
--extra-button --extra-label "Info" \ --cancel-label "Show all" --help-button --help-label "Exit" \
--menu "Supported Models for your Hardware (x = supported / + = need Addons)\n$(printf "\Zb%-16s\Zn \Zb%-15s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-12s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "Model" "Platform" "DT" "Arc" "Intel iGPU" "HBA" "M.2 Cache" "M.2 Volume" "USB Mount" "Source")" 0 115 0 \ --extra-button --extra-label "Info" \
--file "${TMP_PATH}/menu" 2>"${TMP_PATH}/resp" --menu "${MSG}" 0 115 0 \
else --file "${TMP_PATH}/menu" 2>"${TMP_PATH}/resp"
dialog --backtitle "$(backtitlep)" --title "Model" --colors \
--cancel-label "Show all" --help-button --help-label "Exit" \
--extra-button --extra-label "Info" \
--menu "Supported Models for your Hardware (x = supported / + = need Addons) | Syno Models can have faulty Values.\n$(printf "\Zb%-16s\Zn \Zb%-15s\Zn \Zb%-5s\Zn \Zb%-12s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "Model" "Platform" "DT" "Intel iGPU" "HBA" "M.2 Cache" "M.2 Volume" "USB Mount" "Source")" 0 115 0 \
--file "${TMP_PATH}/menu" 2>"${TMP_PATH}/resp"
fi
RET=$? RET=$?
case ${RET} in case ${RET} in
0) # ok-button 0) # ok-button
@ -325,11 +319,7 @@ function arcVersion() {
MSG="Do you want to try Automated Mode?\nIf yes, Loader will configure, build and boot DSM." MSG="Do you want to try Automated Mode?\nIf yes, Loader will configure, build and boot DSM."
dialog --backtitle "$(backtitlep)" --colors --title "Automated Mode" \ dialog --backtitle "$(backtitlep)" --colors --title "Automated Mode" \
--yesno "${MSG}" 6 55 --yesno "${MSG}" 6 55
if [ $? -eq 0 ]; then [ $? -eq 0 ] && ARCMODE="automated" || ARCMODE="config"
ARCMODE="automated"
else
ARCMODE="config"
fi
elif [ "${ARCMODE}" == "automated" ] || [ "${ARCRESTORE}" == "true" ]; then elif [ "${ARCMODE}" == "automated" ] || [ "${ARCRESTORE}" == "true" ]; then
VALID="true" VALID="true"
fi fi
@ -419,13 +409,8 @@ function arcPatch() {
ARCCONF="$(readConfigKey "${MODEL}.serial" "${S_FILE}")" ARCCONF="$(readConfigKey "${MODEL}.serial" "${S_FILE}")"
# Check for Custom Build # Check for Custom Build
if [ "${ARCMODE}" == "automated" ]; then if [ "${ARCMODE}" == "automated" ]; then
if [ -n "${ARCCONF}" ]; then [ -n "${ARCCONF}" ] && SN="$(generateSerial "${MODEL}" "true")" || SN="$(generateSerial "${MODEL}" "false")"
SN=$(generateSerial "${MODEL}" "true") [ -n "${ARCCONF}" ] && writeConfigKey "arc.patch" "true" "${USER_CONFIG_FILE}" || writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.patch" "true" "${USER_CONFIG_FILE}"
else
SN=$(generateSerial "${MODEL}" "false")
writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
fi
elif [ "${ARCMODE}" == "config" ]; then elif [ "${ARCMODE}" == "config" ]; then
dialog --clear --backtitle "$(backtitlep)" \ dialog --clear --backtitle "$(backtitlep)" \
--nocancel --title "SN/Mac Options"\ --nocancel --title "SN/Mac Options"\
@ -438,15 +423,8 @@ function arcPatch() {
[ -z "${resp}" ] && return 1 [ -z "${resp}" ] && return 1
if [ ${resp} -eq 1 ]; then if [ ${resp} -eq 1 ]; then
[ -z "${ARCCONF}" ] && decryptMenu || true [ -z "${ARCCONF}" ] && decryptMenu || true
if [ -n "${ARCCONF}" ]; then [ -n "${ARCCONF}" ] && SN="$(generateSerial "${MODEL}" "true")" || SN="$(generateSerial "${MODEL}" "false")"
# Read Arc Patch from File [ -n "${ARCCONF}" ] && writeConfigKey "arc.patch" "true" "${USER_CONFIG_FILE}" || writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
SN="$(generateSerial "${MODEL}" "true")"
writeConfigKey "arc.patch" "true" "${USER_CONFIG_FILE}"
else
# Read Arc Patch from File
SN="$(generateSerial "${MODEL}" "false")"
writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
fi
elif [ ${resp} -eq 2 ]; then elif [ ${resp} -eq 2 ]; then
# Generate random Serial # Generate random Serial
SN="$(generateSerial "${MODEL}" "false")" SN="$(generateSerial "${MODEL}" "false")"
@ -520,11 +498,7 @@ function arcSettings() {
governorSelection governorSelection
[ $? -ne 0 ] && return 1 [ $? -ne 0 ] && return 1
elif [ "${ARCMODE}" == "automated" ] && [ "${MACHINE}" == "Native" ] && readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q "cpufreqscaling"; then elif [ "${ARCMODE}" == "automated" ] && [ "${MACHINE}" == "Native" ] && readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q "cpufreqscaling"; then
if [ "${PLATFORM}" == "epyc7002" ]; then [ "${PLATFORM}" == "epyc7002" ] && writeConfigKey "addons.cpufreqscaling" "schedutil" "${USER_CONFIG_FILE}" || writeConfigKey "addons.cpufreqscaling" "conservative" "${USER_CONFIG_FILE}"
writeConfigKey "addons.cpufreqscaling" "schedutil" "${USER_CONFIG_FILE}"
else
writeConfigKey "addons.cpufreqscaling" "conservative" "${USER_CONFIG_FILE}"
fi
fi fi
if [ "${ARCMODE}" == "config" ]; then if [ "${ARCMODE}" == "config" ]; then
# Check for DT and HBA/Raid Controller # Check for DT and HBA/Raid Controller
@ -842,13 +816,8 @@ elif [ "${ARCMODE}" == "automated" ]; then
make make
fi fi
else else
if [ "${BUILDDONE}" == "true" ]; then [ "${CONFDONE}" == "true" ] && NEXT="2" || NEXT="1"
NEXT="3" [ "${BUILDDONE}" == "true" ] && NEXT="3" || NEXT="1"
elif [ "${CONFDONE}" == "true" ]; then
NEXT="2"
else
NEXT="1"
fi
while true; do while true; do
echo "= \"\Z4========== Main ==========\Zn \" " >"${TMP_PATH}/menu" echo "= \"\Z4========== Main ==========\Zn \" " >"${TMP_PATH}/menu"
if [ -z "${ARCCONF}" ] && [ "${ARCOFFLINE}" != "true" ]; then if [ -z "${ARCCONF}" ] && [ "${ARCOFFLINE}" != "true" ]; then
@ -921,7 +890,8 @@ else
echo "t \"Change User Password \" " >>"${TMP_PATH}/menu" echo "t \"Change User Password \" " >>"${TMP_PATH}/menu"
echo "N \"Add new User\" " >>"${TMP_PATH}/menu" echo "N \"Add new User\" " >>"${TMP_PATH}/menu"
echo "J \"Reset Network Config \" " >>"${TMP_PATH}/menu" echo "J \"Reset Network Config \" " >>"${TMP_PATH}/menu"
echo "M \"Mount DSM Storage Pool (not SHR)\" " >>"${TMP_PATH}/menu" echo "M \"Mount DSM Storage Pool (not SHR) \" " >>"${TMP_PATH}/menu"
echo "T \"Disable all scheduled Tasks \" " >>"${TMP_PATH}/menu"
if [ "${PLATFORM}" == "epyc7002" ]; then if [ "${PLATFORM}" == "epyc7002" ]; then
echo "K \"Kernel: \Z4${KERNEL}\Zn \" " >>"${TMP_PATH}/menu" echo "K \"Kernel: \Z4${KERNEL}\Zn \" " >>"${TMP_PATH}/menu"
fi fi
@ -948,10 +918,12 @@ else
echo "X \"Sata DOM: \Z4${SATADOM}\Zn \" " >>"${TMP_PATH}/menu" echo "X \"Sata DOM: \Z4${SATADOM}\Zn \" " >>"${TMP_PATH}/menu"
echo "u \"LKM Version: \Z4${LKM}\Zn \" " >>"${TMP_PATH}/menu" echo "u \"LKM Version: \Z4${LKM}\Zn \" " >>"${TMP_PATH}/menu"
echo "L \"Grep Logs from dbgutils \" " >>"${TMP_PATH}/menu" echo "L \"Grep Logs from dbgutils \" " >>"${TMP_PATH}/menu"
echo "U \"Change Loader Password \" " >>"${TMP_PATH}/menu"
echo "Z \"Change Loader Ports \" " >>"${TMP_PATH}/menu"
echo "w \"Reset Loader to Defaults \" " >>"${TMP_PATH}/menu" echo "w \"Reset Loader to Defaults \" " >>"${TMP_PATH}/menu"
echo "C \"Clone Loader to another Disk \" " >>"${TMP_PATH}/menu" echo "C \"Clone Loader to another Disk \" " >>"${TMP_PATH}/menu"
echo "n \"Grub Bootloader Config \" " >>"${TMP_PATH}/menu" echo "n \"Grub Bootloader Config \" " >>"${TMP_PATH}/menu"
echo "y \"Choose a Keymap for Loader\" " >>"${TMP_PATH}/menu" echo "y \"Choose a Keymap for Loader \" " >>"${TMP_PATH}/menu"
echo "F \"\Z1Formate Disks \Zn \" " >>"${TMP_PATH}/menu" echo "F \"\Z1Formate Disks \Zn \" " >>"${TMP_PATH}/menu"
fi fi
echo "= \"\Z4========== Misc ==========\Zn \" " >>"${TMP_PATH}/menu" echo "= \"\Z4========== Misc ==========\Zn \" " >>"${TMP_PATH}/menu"
@ -1035,6 +1007,8 @@ else
N) addNewDSMUser; NEXT="N" ;; N) addNewDSMUser; NEXT="N" ;;
J) resetDSMNetwork; NEXT="J" ;; J) resetDSMNetwork; NEXT="J" ;;
M) mountDSM; NEXT="M" ;; M) mountDSM; NEXT="M" ;;
T) disablescheduledTasks; NEXT="T" ;;
Z) loaderPorts; NEXT="Z" ;;
K) [ "${KERNEL}" == "official" ] && KERNEL='custom' || KERNEL='official' K) [ "${KERNEL}" == "official" ] && KERNEL='custom' || KERNEL='official'
writeConfigKey "kernel" "${KERNEL}" "${USER_CONFIG_FILE}" writeConfigKey "kernel" "${KERNEL}" "${USER_CONFIG_FILE}"
dialog --backtitle "$(backtitle)" --title "Kernel" \ dialog --backtitle "$(backtitle)" --title "Kernel" \
@ -1103,6 +1077,7 @@ else
NEXT="u" NEXT="u"
;; ;;
L) greplogs; NEXT="L" ;; L) greplogs; NEXT="L" ;;
U) loaderPassword; NEXT="U" ;;
w) resetLoader; NEXT="w" ;; w) resetLoader; NEXT="w" ;;
C) cloneLoader; NEXT="C" ;; C) cloneLoader; NEXT="C" ;;
n) editGrubCfg; NEXT="n" ;; n) editGrubCfg; NEXT="n" ;;
@ -1131,5 +1106,6 @@ echo -e "IP: \033[1;34m${IPCON}\033[0m"
echo -e "User: \033[1;34mroot\033[0m" echo -e "User: \033[1;34mroot\033[0m"
echo -e "Password: \033[1;34marc\033[0m" echo -e "Password: \033[1;34marc\033[0m"
echo echo
echo -e "Web Terminal:" echo -e "Web Terminal: \033[1;34mhttp://${IPCON}:${TTYDPORT}\033[0m"
echo -e "Address: \033[1;34mhttp://${IPCON}:7681\033[0m" echo -e "Web Filemanager: \033[1;34mhttp://${IPCON}:${DUFSPORT}\033[0m"
echo -e "Web Utilities: \033[1;34mhttp://${IPCON}:${HTTPPORT}\033[0m"

View File

@ -222,14 +222,38 @@ done
CMDLINE_LINE=$(echo "${CMDLINE_LINE}" | sed 's/^ //') # Remove leading space CMDLINE_LINE=$(echo "${CMDLINE_LINE}" | sed 's/^ //') # Remove leading space
echo "${CMDLINE_LINE}" >"${PART1_PATH}/cmdline.yml" echo "${CMDLINE_LINE}" >"${PART1_PATH}/cmdline.yml"
function _bootwait() {
# Exec Bootwait to check SSH/Web connection
BOOTWAIT=5
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB
MSG=""
while test ${BOOTWAIT} -ge 0; do
MSG="\033[1;33mAccess SSH/Web will interrupt boot...\033[0m"
echo -en "\r${MSG}"
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WC
if ! diff WB WC >/dev/null 2>&1; then
echo -en "\r\033[1;33mAccess SSH/Web detected and boot is interrupted.\033[0m\n"
rm -f WB WC
exit 0
fi
sleep 1
BOOTWAIT=$((BOOTWAIT - 1))
done
rm -f WB WC
echo -en "\r$(printf "%$((${#MSG} * 2))s" " ")\n"
return 0
}
# Boot # Boot
DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")" DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
if [ "${DIRECTBOOT}" == "true" ]; then if [ "${DIRECTBOOT}" == "true" ]; then
CMDLINE_DIRECT=$(echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g') # Escape special chars CMDLINE_DIRECT=$(echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g') # Escape special chars
grub-editenv ${USER_GRUBENVFILE} set dsm_cmdline="${CMDLINE_DIRECT}" grub-editenv ${USER_GRUBENVFILE} set dsm_cmdline="${CMDLINE_DIRECT}"
grub-editenv ${USER_GRUBENVFILE} set next_entry="direct" grub-editenv ${USER_GRUBENVFILE} set next_entry="direct"
_bootwait || exit 0
echo -e "\033[1;34mReboot with Directboot\033[0m" echo -e "\033[1;34mReboot with Directboot\033[0m"
exec reboot exec reboot
exit 0
elif [ "${DIRECTBOOT}" == "false" ]; then elif [ "${DIRECTBOOT}" == "false" ]; then
grub-editenv ${USER_GRUBENVFILE} unset dsm_cmdline grub-editenv ${USER_GRUBENVFILE} unset dsm_cmdline
grub-editenv ${USER_GRUBENVFILE} unset next_entry grub-editenv ${USER_GRUBENVFILE} unset next_entry
@ -276,24 +300,7 @@ elif [ "${DIRECTBOOT}" == "false" ]; then
sleep 1 sleep 1
done done
done done
# Exec Bootwait to check SSH/Web connection _bootwait || exit 0
BOOTWAIT=5
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB
MSG=""
while test ${BOOTWAIT} -ge 0; do
MSG="\033[1;33mAccess SSH/Web will interrupt boot...\033[0m"
echo -en "\r${MSG}"
busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WC
if ! diff WB WC >/dev/null 2>&1; then
echo -en "\r\033[1;33mAccess SSH/Web detected and boot is interrupted.\033[0m\n"
rm -f WB WC
exit 0
fi
sleep 1
BOOTWAIT=$((BOOTWAIT - 1))
done
rm -f WB WC
echo -en "\r$(printf "%$((${#MSG} * 2))s" " ")\n"
DSMLOGO="$(readConfigKey "boot.dsmlogo" "${USER_CONFIG_FILE}")" DSMLOGO="$(readConfigKey "boot.dsmlogo" "${USER_CONFIG_FILE}")"
if [ "${DSMLOGO}" == "true" ] && [ -c "/dev/fb0" ]; then if [ "${DSMLOGO}" == "true" ] && [ -c "/dev/fb0" ]; then
@ -311,7 +318,7 @@ elif [ "${DIRECTBOOT}" == "false" ]; then
if [ -n "${IPCON}" ]; then if [ -n "${IPCON}" ]; then
[ -w "/dev/${T}" ] && echo -e "Use \033[1;34mhttp://${IPCON}:5000\033[0m or try \033[1;34mhttp://find.synology.com/ \033[0mto find DSM and proceed.\n\n\033[1;37mThis interface will not be operational. Wait a few minutes.\033[0m\n" >"/dev/${T}" 2>/dev/null || true [ -w "/dev/${T}" ] && echo -e "Use \033[1;34mhttp://${IPCON}:5000\033[0m or try \033[1;34mhttp://find.synology.com/ \033[0mto find DSM and proceed.\n\n\033[1;37mThis interface will not be operational. Wait a few minutes.\033[0m\n" >"/dev/${T}" 2>/dev/null || true
else else
[ -w "/dev/${T}" ] && echo -e "Try \033[1;34mhttp://find.synology.com/ \033[0mto find DSM and proceed.\n\n\033[1;37mThis interface will not be operational. Wait a few minutes.\nNo IP found. \033[0m\n" >"/dev/${T}" 2>/dev/null || true [ -w "/dev/${T}" ] && echo -e "Try \033[1;34mhttp://find.synology.com/ \033[0mto find DSM and proceed.\n\n\033[1;37mThis interface will not be operational. Wait a few minutes.\nNo IP found.\033[0m\n" >"/dev/${T}" 2>/dev/null || true
fi fi
done done

View File

@ -4,12 +4,9 @@ PART2_PATH="/mnt/p2"
PART3_PATH="/mnt/p3" PART3_PATH="/mnt/p3"
TMP_PATH="/tmp" TMP_PATH="/tmp"
if [ -f "${PART1_PATH}/ARC-BRANCH" ]; then [ -f "${PART1_PATH}/ARC-BRANCH" ] && ARC_BRANCH=$(cat "${PART1_PATH}/ARC-BRANCH") || ARC_BRANCH="null"
ARC_BRANCH=$(cat "${PART1_PATH}/ARC-BRANCH" 2>/dev/null) [ -f "${PART1_PATH}/ARC-VERSION" ] && ARC_VERSION=$(cat "${PART1_PATH}/ARC-VERSION") || ARC_VERSION="null"
fi [ -f "${PART1_PATH}/ARC-BUILD" ] && ARC_BUILD=$(cat "${PART1_PATH}/ARC-BUILD") || ARC_BUILD="null"
if [ -f "${PART1_PATH}/ARC-VERSION" ]; then
ARC_VERSION=$(cat "${PART1_PATH}/ARC-VERSION" 2>/dev/null)
fi
ARC_TITLE="Arc ${ARC_VERSION}" ARC_TITLE="Arc ${ARC_VERSION}"
RAMDISK_PATH="${TMP_PATH}/ramdisk" RAMDISK_PATH="${TMP_PATH}/ramdisk"
@ -25,6 +22,7 @@ ORI_ZIMAGE_FILE="${PART2_PATH}/zImage"
ORI_RDGZ_FILE="${PART2_PATH}/rd.gz" ORI_RDGZ_FILE="${PART2_PATH}/rd.gz"
ARC_BZIMAGE_FILE="${PART3_PATH}/bzImage-arc" ARC_BZIMAGE_FILE="${PART3_PATH}/bzImage-arc"
ARC_RAMDISK_FILE="${PART3_PATH}/initrd-arc" ARC_RAMDISK_FILE="${PART3_PATH}/initrd-arc"
ARC_RAMDISK_USER_FILE="${PART3_PATH}/initrd-user"
MOD_ZIMAGE_FILE="${PART3_PATH}/zImage-dsm" MOD_ZIMAGE_FILE="${PART3_PATH}/zImage-dsm"
MOD_RDGZ_FILE="${PART3_PATH}/initrd-dsm" MOD_RDGZ_FILE="${PART3_PATH}/initrd-dsm"
@ -44,4 +42,11 @@ P_FILE="${MODEL_CONFIG_PATH}/platforms.yml"
D_FILE="${MODEL_CONFIG_PATH}/data.yml" D_FILE="${MODEL_CONFIG_PATH}/data.yml"
EXTRACTOR_PATH="${PART3_PATH}/extractor" EXTRACTOR_PATH="${PART3_PATH}/extractor"
EXTRACTOR_BIN="syno_extract_system_patch" EXTRACTOR_BIN="syno_extract_system_patch"
HTTPPORT=$(grep -i '^HTTP_PORT=' /etc/arc.conf 2>/dev/null | cut -d'=' -f2)
[ -z "${HTTPPORT}" ] && HTTPPORT=7080
DUFSPORT=$(grep -i '^DUFS_PORT=' /etc/arc.conf 2>/dev/null | cut -d'=' -f2)
[ -z "${DUFSPORT}" ] && DUFSPORT=7304
TTYDPORT=$(grep -i '^TTYD_PORT=' /etc/arc.conf 2>/dev/null | cut -d'=' -f2)
[ -z "${TTYDPORT}" ] && TTYDPORT=7681

View File

@ -157,7 +157,7 @@ elif [ "${ARCMODE}" == "update" ]; then
elif [ "${BUILDDONE}" == "true" ] && [ "${ARCMODE}" == "dsm" ]; then elif [ "${BUILDDONE}" == "true" ] && [ "${ARCMODE}" == "dsm" ]; then
echo -e "\033[1;34mStarting DSM Mode...\033[0m" echo -e "\033[1;34mStarting DSM Mode...\033[0m"
if [ -f "${ARC_PATH}/boot.sh" ]; then if [ -f "${ARC_PATH}/boot.sh" ]; then
exec boot.sh boot.sh && exit 0
else else
echo -e "\033[1;31mError: Can't find Arc System Files...\033[0m" echo -e "\033[1;31mError: Can't find Arc System Files...\033[0m"
fi fi
@ -189,7 +189,7 @@ for ETH in ${ETHX}; do
echo -e "\r${DRIVER} (${SPEED}): \033[1;37mLINK LOCAL (No DHCP server found.)\033[0m" echo -e "\r${DRIVER} (${SPEED}): \033[1;37mLINK LOCAL (No DHCP server found.)\033[0m"
else else
echo -e "\r${DRIVER} (${SPEED}): \033[1;37m${IP}\033[0m" echo -e "\r${DRIVER} (${SPEED}): \033[1;37m${IP}\033[0m"
[ -z "${IPCON}" ] && IPCON="${IP}" && ONNIC="${ETH}" [ -z "${IPCON}" ] && IPCON="${IP}"
fi fi
break break
fi fi
@ -217,10 +217,10 @@ mkdir -p "${USER_UP_PATH}"
# Load Arc Overlay # Load Arc Overlay
echo -e "\033[1;34mLoading Arc Overlay...\033[0m" echo -e "\033[1;34mLoading Arc Overlay...\033[0m"
echo echo
echo -e "Use \033[1;34mDisplay Output\033[0m or \033[1;34mhttp://${IPCON}:7681\033[0m to configure Loader." echo -e "Use \033[1;34mDisplay Output\033[0m or \033[1;34mhttp://${IPCON}:${TTYDPORT}\033[0m to configure Loader."
# Check memory and load Arc # Check memory and load Arc
RAM=$(free -m | grep -i mem | awk '{print$2}') RAM=$(awk '/MemTotal:/ {printf "%.0f", $2 / 1024}' /proc/meminfo 2>/dev/null)
if [ ${RAM} -le 3500 ]; then if [ ${RAM} -le 3500 ]; then
echo -e "\033[1;31mYou have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of RAM.\033[0m\n\033[1;31mUse arc.sh to proceed. Not recommended!\033[0m" echo -e "\033[1;31mYou have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of RAM.\033[0m\n\033[1;31mUse arc.sh to proceed. Not recommended!\033[0m"
else else

View File

@ -153,6 +153,7 @@ echo "#!/bin/sh" >"${RAMDISK_PATH}/addons/addons.sh"
echo 'echo "addons.sh called with params ${@}"' >>"${RAMDISK_PATH}/addons/addons.sh" echo 'echo "addons.sh called with params ${@}"' >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LOADERLABEL=\"ARC\"" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export LOADERLABEL=\"ARC\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LOADERVERSION=\"${ARC_VERSION}\"" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export LOADERVERSION=\"${ARC_VERSION}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LOADERBUILD=\"${ARC_BUILD}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LOADERBRANCH=\"${ARCBRANCH}\"" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export LOADERBRANCH=\"${ARCBRANCH}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export PLATFORM=\"${PLATFORM}\"" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export PLATFORM=\"${PLATFORM}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export PRODUCTVER=\"${PRODUCTVER}\"" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export PRODUCTVER=\"${PRODUCTVER}\"" >>"${RAMDISK_PATH}/addons/addons.sh"

View File

@ -99,7 +99,11 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading Arc Kernel..." echo "Loading Arc Kernel..."
linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline}
echo "Loading Arc Initramfs..." echo "Loading Arc Initramfs..."
initrd /initrd-arc if [ -e /initrd-user ]; then
initrd /initrd-arc /initrd-user
else
initrd /initrd-arc
fi
echo "Booting..." echo "Booting..."
} }
fi fi
@ -110,7 +114,11 @@ if [ -e /automated ]; then
echo "Loading Arc Kernel..." echo "Loading Arc Kernel..."
linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} automated_arc linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} automated_arc
echo "Loading Arc Initramfs..." echo "Loading Arc Initramfs..."
initrd /initrd-arc if [ -e /initrd-user ]; then
initrd /initrd-arc /initrd-user
else
initrd /initrd-arc
fi
echo "Booting..." echo "Booting..."
} }
fi fi
@ -120,7 +128,11 @@ menuentry 'Arc Config Mode' --id config {
echo "Loading Arc Kernel..." echo "Loading Arc Kernel..."
linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} force_arc linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} force_arc
echo "Loading Arc Initramfs..." echo "Loading Arc Initramfs..."
initrd /initrd-arc if [ -e /initrd-user ]; then
initrd /initrd-arc /initrd-user
else
initrd /initrd-arc
fi
echo "Booting..." echo "Booting..."
} }
@ -130,7 +142,11 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading Arc Kernel..." echo "Loading Arc Kernel..."
linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} update_arc linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} update_arc
echo "Loading Arc Initramfs..." echo "Loading Arc Initramfs..."
initrd /initrd-arc if [ -e /initrd-user ]; then
initrd /initrd-arc /initrd-user
else
initrd /initrd-arc
fi
echo "Booting..." echo "Booting..."
} }
menuentry 'DSM Recovery Mode' --id recovery { menuentry 'DSM Recovery Mode' --id recovery {
@ -138,7 +154,11 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading Arc Kernel..." echo "Loading Arc Kernel..."
linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} recovery linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} recovery
echo "Loading Arc Initramfs..." echo "Loading Arc Initramfs..."
initrd /initrd-arc if [ -e /initrd-user ]; then
initrd /initrd-arc /initrd-user
else
initrd /initrd-arc
fi
echo "Booting..." echo "Booting..."
} }
menuentry 'DSM Reinstall Mode' --id junior { menuentry 'DSM Reinstall Mode' --id junior {
@ -146,7 +166,11 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading Arc Kernel..." echo "Loading Arc Kernel..."
linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} force_junior linux /bzImage-arc ${ARC_CMDLINE} ${arc_cmdline} force_junior
echo "Loading Arc Initramfs..." echo "Loading Arc Initramfs..."
initrd /initrd-arc if [ -e /initrd-user ]; then
initrd /initrd-arc /initrd-user
else
initrd /initrd-arc
fi
echo "Booting..." echo "Booting..."
} }
fi fi

View File

@ -37,10 +37,12 @@ sudo mount ${LOOPX}p3 "/tmp/p3"
[[ ! -f "brx/bzImage-arc" || ! -f "brx/initrd-arc" ]] && return 1 [[ ! -f "brx/bzImage-arc" || ! -f "brx/initrd-arc" ]] && return 1
VERSION=$(date +'%y.%m.dev') ARC_BUILD="`date +'%y.%m.%d'`-dev"
echo "${VERSION}" >files/p1/ARC-VERSION ARC_VERSION="13.11"
echo "${VERSION}" >VERSION ARC_BRANCH="next"
echo "dev" >files/p1/ARC-BRANCH echo "${ARC_BUILD}" >files/p1/ARC-BUILD
echo "${ARC_VERSION}" >files/p1/ARC-VERSION
echo "${ARC_BRANCH}" >files/p1/ARC-BRANCH
echo "Repack initrd" echo "Repack initrd"
cp -f "brx/bzImage-arc" "files/p3/bzImage-arc" cp -f "brx/bzImage-arc" "files/p3/bzImage-arc"

View File

@ -37,10 +37,12 @@ sudo mount ${LOOPX}p3 "/tmp/p3"
[[ ! -f "brs/bzImage-arc" || ! -f "brs/initrd-arc" ]] && return 1 [[ ! -f "brs/bzImage-arc" || ! -f "brs/initrd-arc" ]] && return 1
VERSION=$(date +'%y.%m.dev') ARC_BUILD="`date +'%y.%m.%d'`-dev"
echo "${VERSION}" >files/p1/ARC-VERSION ARC_VERSION="13.11"
echo "${VERSION}" >VERSION ARC_BRANCH="stable"
echo "dev" >files/p1/ARC-BRANCH echo "${ARC_BUILD}" >files/p1/ARC-BUILD
echo "${ARC_VERSION}" >files/p1/ARC-VERSION
echo "${ARC_BRANCH}" >files/p1/ARC-BRANCH
echo "Repack initrd" echo "Repack initrd"
cp -f "brs/bzImage-arc" "files/p3/bzImage-arc" cp -f "brs/bzImage-arc" "files/p3/bzImage-arc"

View File

@ -275,7 +275,7 @@ function repackInitrd() {
cd "${RDXZ_PATH}" cd "${RDXZ_PATH}"
sudo xz -dc <"${INITRD_FILE}" | sudo cpio -idm sudo xz -dc <"${INITRD_FILE}" | sudo cpio -idm
) || true ) || true
sudo cp -Rf "${PLUGIN_PATH}/"* "${RDXZ_PATH}/" sudo cp -rf "${PLUGIN_PATH}/"* "${RDXZ_PATH}/"
[ -f "${OUTPUT_PATH}" ] && rm -rf "${OUTPUT_PATH}" [ -f "${OUTPUT_PATH}" ] && rm -rf "${OUTPUT_PATH}"
( (
cd "${RDXZ_PATH}" cd "${RDXZ_PATH}"