Compare commits

..

No commits in common. "main" and "25.9.4" have entirely different histories.
main ... 25.9.4

22 changed files with 1876 additions and 747 deletions

View File

@ -38,7 +38,7 @@ jobs:
echo "Delaying for 1 minutes..."
sleep 60
- name: Get Data
- name: Get Release RR
run: |
REPO="${{ github.server_url }}/${{ github.repository }}"
PRERELEASE="true"
@ -57,17 +57,18 @@ jobs:
exit 1
fi
unzip rr-${TAG}.img.zip -d rr rr.img
unzip rr-${TAG}.img.zip -d "rr"
. scripts/func.sh "${{ secrets.RRORG }}"
export TERM=xterm
LOOPX=$(sudo losetup -f)
sudo losetup -P "${LOOPX}" "rr/rr.img"
rm -rf "/tmp/mnt/p3"
mkdir -p "/tmp/mnt/p3"
mount "${LOOPX}p3" "/tmp/mnt/p3"
unpackInitrd /tmp/mnt/p3/initrd-rr "rr/initrd"
sudo ./localbuild.sh create rr/ws rr/rr.img
if [ $? -ne 0 ]; then
echo "create failed"
exit 1
fi
- name: Get data
run: |
sudo apt update
sudo apt install -y locales busybox dialog gettext sed gawk jq curl
sudo apt install -y python-is-python3 python3-pip libelf-dev qemu-utils cpio xz-utils lz4 lzma bzip2 gzip zstd
@ -77,14 +78,10 @@ jobs:
sudo mv -f "$(realpath $(which python3))/EXTERNALLY-MANAGED" "$(realpath $(which python3))/EXTERNALLY-MANAGED.bak" 2>/dev/null || true
sudo pip3 install -U -r scripts/requirements.txt
python3 scripts/func.py getmodels -w "rr/initrd" -j "docs/models.json" -x "docs/models.xlsx"
python3 scripts/func.py getpats -w "rr/initrd" -j "docs/pats.json" -x "docs/pats.xlsx"
python3 scripts/func.py getaddons -w "/tmp" -j "docs/addons.json" -x "docs/addons.xlsx"
python3 scripts/func.py getmodules -w "/tmp" -j "docs/modules.json" -x "docs/modules.xlsx"
sudo umount "/tmp/mnt/p3"
sudo losetup -d "${LOOPX}"
rm -rf "/tmp/mnt/p3"
python3 scripts/func.py getmodels -w "rr/ws/initrd" -j "docs/models.json" -x "docs/models.xlsx"
python3 scripts/func.py getpats -w "rr/ws/initrd" -j "docs/pats.json" -x "docs/pats.xlsx"
python3 scripts/func.py getaddons -w "rr/ws" -j "docs/addons.json" -x "docs/addons.xlsx"
python3 scripts/func.py getmodules -w "rr/ws" -j "docs/modules.json" -x "docs/modules.xlsx"
- name: Upload to Artifacts
if: success()

View File

@ -148,9 +148,39 @@ jobs:
run: |
# 累了, 毁灭吧!
. scripts/func.sh "${{ secrets.RRORG }}"
# yq need sudo !!!
function deleteConfigKey() {
sudo yq eval "del(.${1})" --inplace "${2}" 2>/dev/null
}
function writeConfigKey() {
local value="${2}"
[ "${value}" = "{}" ] && sudo yq eval ".${1} = {}" --inplace "${3}" 2>/dev/null || sudo yq eval ".${1} = \"${value}\"" --inplace "${3}" 2>/dev/null
}
function readConfigKey() {
local result
result=$(sudo yq eval ".${1} | explode(.)" "${2}" 2>/dev/null)
[ "${result}" = "null" ] && echo "" || echo "${result}"
}
function mergeConfigModules() {
# Error: bad file '-': cannot index array with '8139cp' (strconv.ParseInt: parsing "8139cp": invalid syntax)
# When the first key is a pure number, yq will not process it as a string by default. The current solution is to insert a placeholder key.
local MS ML XF
MS="RRORG\n${1// /\\n}"
ML="$(echo -en "${MS}" | awk '{print "modules."$1":"}')"
XF=$(mktemp 2>/dev/null)
XF=${XF:-/tmp/tmp.XXXXXXXXXX}
echo -en "${ML}" | sudo yq -p p -o y >"${XF}"
deleteConfigKey "modules.\"RRORG\"" "${XF}"
sudo yq eval-all --inplace '. as $item ireduce ({}; . * $item)' --inplace "${2}" "${XF}" 2>/dev/null
rm -f "${XF}"
}
REPO="${{ github.server_url }}/${{ github.repository }}"
MODEL="${{ env.model }}"
VERSION="${{ env.version }}"
PRERELEASE="true"
TAG=""
@ -167,39 +197,63 @@ jobs:
exit 1
fi
unzip rr-${TAG}.img.zip -d rr rr.img
unzip rr-${TAG}.img.zip -d "rr"
echo "TAG=${TAG}" >> $GITHUB_ENV
export TERM=xterm
case "${{ env.size }}" in
2GB)
echo "2GB"
;;
4GB)
echo "4GB"
resizeImg rr/rr.img +2048M
;;
8GB)
echo "8GB"
resizeImg rr/rr.img +6144M
;;
*)
echo "unknown size"
;;
esac
sudo ./localbuild.sh create rr/ws rr/rr.img
if [ $? -ne 0 ]; then
echo "create failed"
exit 1
fi
LOOPX=$(sudo losetup -f)
sudo losetup -P "${LOOPX}" rr/rr.img
# sudo cp -rf files/initrd/opt/rr/* rr/ws/initrd/opt/rr/
# sudo sed -i "s/set -e/set -ex/" rr/ws/initrd/opt/rr/init.sh
# sudo sed -i '/^alias/i\set -x' rr/ws/initrd/opt/rr/menu.sh
echo "Building..."
{
[ -n "${{ env.language }}" ] && echo "echo \"${{ env.language }}.UTF-8\" >/mnt/p1/.locale"
[ -n "${{ env.tips }}" ] && echo "echo -e \"${{ env.tips }}\" >/mnt/p3/AddTips"
[ -n "${{ env.kernel }}" ] && echo "menu.sh writeConfigKey \"kernel\" \"${{ env.kernel }}\" \"\${USER_CONFIG_FILE}\""
echo "menu.sh modelMenu \"${{ env.model }}\""
echo "menu.sh productversMenu \"${{ env.version }}\""
[ -n "${{ env.addons }}" ] && {
echo "menu.sh writeConfigKey \"addons\" \"{}\" \"\${USER_CONFIG_FILE}\""
[ -n "${{ env.language }}" ] && echo "${{ env.language }}.UTF-8" | sudo tee rr/ws/mnt/p1/.locale
sudo ./localbuild.sh init
if [ $? -ne 0 ]; then
echo "init failed"
exit 1
fi
if [ -n "${{ env.kernel }}" ]; then
echo "set kernel"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
writeConfigKey "kernel" "${{ env.kernel }}" "${USER_CONFIG_FILE}"
fi
sudo ./localbuild.sh config "${MODEL}" "${VERSION}"
if [ $? -ne 0 ]; then
echo "config failed"
exit 1
fi
if [ -n "${{ env.sn }}" ]; then
echo "set sn: ${{ env.sn }}"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
writeConfigKey "sn" "${{ env.sn }}" "${USER_CONFIG_FILE}"
fi
if [ -n "${{ env.macs }}" ]; then
echo "set macs: ${{ env.macs }}"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
MACS=($(echo "${{ env.macs }}" | sed 's/[:-]//g' | sed 's/.*/\U&/' | sed 's/[;,]/ /g'))
writeConfigKey "mac1" "${MACS[0]}" "${USER_CONFIG_FILE}"
writeConfigKey "mac2" "${MACS[1]}" "${USER_CONFIG_FILE}"
fi
if [ -n "${{ env.tips }}" ]; then
echo "set tips: ${{ env.tips }}"
echo -e "${{ env.tips }}" | sudo tee rr/ws/mnt/p3/AddTips
fi
if [ -n "${{ env.addons }}" ]; then
echo "set addons: ${{ env.addons }}"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
writeConfigKey "addons" "{}" "${USER_CONFIG_FILE}"
IFS=',' read -ra ADDON_ARR <<< "${{ env.addons }}"
for A in "${ADDON_ARR[@]}"; do
if echo "${A}" | grep -qE '^[^:]+:[^:]+$'; then
@ -209,41 +263,74 @@ jobs:
KEY="${A}"
VAL=""
fi
echo "menu.sh writeConfigKey \"addons.\\\"${KEY}\\\"\" \"${VAL}\" \"\${USER_CONFIG_FILE}\""
writeConfigKey "addons.\"${KEY}\"" "${VAL}" "${USER_CONFIG_FILE}"
done
}
[ ! "custom" = "${{ env.kernel }}" ] && [ -n "${{ env.modules }}" ] && {
echo "menu.sh writeConfigKey \"modules\" \"{}\" \"\${USER_CONFIG_FILE}\""
echo "menu.sh mergeConfigModules \"$(echo "${{ env.modules }}" | sed 's/,/\\n/g')\" \"\${USER_CONFIG_FILE}\""
}
echo "menu.sh make"
echo "menu.sh cleanCache"
[ -n "${{ env.sn }}" ] && echo "menu.sh writeConfigKey \"sn\" \"${{ env.sn }}\" \"\${USER_CONFIG_FILE}\""
[ -n "${{ env.macs }}" ] && {
MACS=($(echo "${{ env.macs }}" | sed 's/[:-]//g' | sed 's/.*/\U&/' | sed 's/[;,]/ /g'))
[ -n "${MACS[0]}" ] && echo "menu.sh writeConfigKey \"mac1\" \"${MACS[0]}\" \"\${USER_CONFIG_FILE}\""
[ -n "${MACS[1]}" ] && echo "menu.sh writeConfigKey \"mac2\" \"${MACS[1]}\" \"\${USER_CONFIG_FILE}\""
}
[ "true" = "${{ env.template }}" ] && {
echo "menu.sh writeConfigKey \"sn\" \"\" \"\${USER_CONFIG_FILE}\""
echo "menu.sh writeConfigKey \"mac1\" \"\" \"\${USER_CONFIG_FILE}\""
echo "menu.sh writeConfigKey \"mac2\" \"\" \"\${USER_CONFIG_FILE}\""
}
} > build.sh
chmod +x build.sh
fi
docker pull wjz304/rr:${TAG}
docker run --rm --privileged -p 7681:7681 -p 7304:7304 -p 7080:7080 -p 7022:22 -v ${PWD}/build.sh:/opt/rr/build.sh wjz304/rr:${TAG} bash build.sh
if [ ! "custom" = "${{ env.kernel }}" ] && [ -n "${{ env.modules }}" ]; then
echo "set modules: ${{ env.modules }}"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(echo "${{ env.modules }}" | sed 's/,/\n/g')" "${USER_CONFIG_FILE}"
# for M in $(echo "${{ env.modules }}" | sed 's/,/ /g'); do
# writeConfigKey "modules.\"${M}\"" "" "${USER_CONFIG_FILE}"
# done
fi
sudo losetup --detach "${LOOPX}"
sudo ./localbuild.sh build
if [ $? -ne 0 ]; then
echo "build failed"
exit 1
fi
if [ "true" = "${{ env.template }}" ]; then
echo "set template: ${{ env.template }}"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
writeConfigKey "sn" "" "${USER_CONFIG_FILE}"
writeConfigKey "mac1" "" "${USER_CONFIG_FILE}"
writeConfigKey "mac2" "" "${USER_CONFIG_FILE}"
fi
sudo ./localbuild.sh pack rr/rr.img
if [ $? -ne 0 ]; then
echo "pack failed"
exit 1
fi
case "${{ env.size }}" in
2GB)
echo "2GB"
;;
4GB)
echo "4GB"
sudo ./localbuild.sh resize rr/rr.img +2048M
;;
8GB)
echo "8GB"
sudo ./localbuild.sh resize rr/rr.img +6144M
;;
*)
echo "unknown size"
;;
esac
ls rr -al
RR_VERSION_FILE="rr/ws/mnt/p1/RR_VERSION"
USER_CONFIG_FILE="rr/ws/mnt/p1/user-config.yml"
{
echo "RR: "
echo " VERSION: ${TAG}"
echo " VERSION: $(cat "${RR_VERSION_FILE}" 2>/dev/null | head -1)"
echo " CUSTOM: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
echo
echo "DSM:"
echo " MODEL: $(readConfigKey "model" "${USER_CONFIG_FILE}")"
echo " VERSION: $(readConfigKey "productver" "${USER_CONFIG_FILE}")"
echo " KERNEL: $(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
echo " PATURL: $(readConfigKey "paturl" "${USER_CONFIG_FILE}")"
echo " PATSUM: $(readConfigKey "patsum" "${USER_CONFIG_FILE}")"
echo
echo
echo "After the image is written to the disk, it will boot directly into DSM without the need to compile again."
echo "Of course, you can also modify the settings yourself."
} >README.txt
@ -251,47 +338,52 @@ jobs:
case "${{ env.format }}" in
ova)
echo "OVA"
. scripts/func.sh "${{ secrets.RRORG }}"
convertova "rr/rr.img" "rr/rr.ova"
(cd rr && sha256sum rr.ova >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.ova.zip" -j rr/rr.ova sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.ova.zip" -j rr/rr.ova ${USER_CONFIG_FILE} sha256sum README.txt
;;
vmx)
echo "VMX"
. scripts/func.sh "${{ secrets.RRORG }}"
convertvmx "rr/rr.img" "rr.vmx" # rr.vmx is a directory
(cd rr.vmx && sha256sum * >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vmx.zip" -r rr.vmx sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vmx.zip" -r rr.vmx ${USER_CONFIG_FILE} sha256sum README.txt
;;
vmdk)
echo "VMDK"
qemu-img convert rr/rr.img -O vmdk -o 'adapter_type=lsilogic,subformat=streamOptimized,compat6' rr/rr.vmdk
(cd rr && sha256sum rr.vmdk >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vmdk.zip" -j rr/rr.vmdk sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vmdk.zip" -j rr/rr.vmdk ${USER_CONFIG_FILE} sha256sum README.txt
;;
flat)
echo "FLAT"
qemu-img convert rr/rr.img -O vmdk -o 'adapter_type=lsilogic,subformat=monolithicFlat,compat6' rr/rr.vmdk
(cd rr && sha256sum rr*.vmdk >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.flat.zip" -j rr/rr*.vmdk sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.flat.zip" -j rr/rr*.vmdk ${USER_CONFIG_FILE} sha256sum README.txt
;;
vhd)
echo "VHD"
. scripts/func.sh "${{ secrets.RRORG }}"
qemu-img convert rr/rr.img -O vpc rr/rr.vhd
createvmc "rr/rr.vhd" "rr/rr.vmc"
(cd rr && sha256sum rr.vhd >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vhd.zip" -j rr/rr.vmc rr/rr.vhd sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vhd.zip" -j rr/rr.vmc rr/rr.vhd ${USER_CONFIG_FILE} sha256sum README.txt
;;
vhdx)
echo "VHDX"
qemu-img convert rr/rr.img -O vhdx -o subformat=dynamic rr/rr.vhdx
(cd rr && sha256sum rr.vhdx >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vhdx.zip" -j rr/rr.vhdx sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vhdx.zip" -j rr/rr.vhdx ${USER_CONFIG_FILE} sha256sum README.txt
;;
*)
echo "IMG"
(cd rr && sha256sum rr.img >../sha256sum)
zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.img.zip" -j rr/rr.img sha256sum README.txt
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.img.zip" -j rr/rr.img ${USER_CONFIG_FILE} sha256sum README.txt
esac
echo "TAG=${TAG}" >> $GITHUB_ENV
- name: Upload to Artifacts
if: env.iscustom == 'true' && success()
uses: actions/upload-artifact@v4

View File

@ -1 +1 @@
25.9.5
25.9.4

View File

@ -779,26 +779,6 @@
"zh_TW": "作者: GXNAS. 強制將 UPS 供電時的待機模式修改為關機. 參數: -f - 關機前觸發關機任務; -e - 待機模式前發關機任務(不修改為關機)."
}
},
"virtiofs": {
"system": false,
"description": {
"en_US": "Auto mount virtio9p and virtiofs file systems (effective after rebooting the system after creating the storage space for the first time since it is mounted to the first storage space by default).",
"ar_SA": "تلقائيا تركيب أنظمة ملفات virtio9p و virtiofs (تدخل حيز التنفيذ بعد إعادة تشغيل النظام بعد إنشاء مساحة التخزين لأول مرة حيث يتم تركيبها في مساحة التخزين الأولى بشكل افتراضي).",
"de_DE": "Installiert virtio9p und virtiofs automatisch (da sie standardmäßig im ersten Speicherplatz gemountet werden, werden sie wirksam, nachdem das System zum ersten Mal installiert und der Speicherplatz erstellt und neu gestartet wurde).",
"es_ES": "Installs virtio9p and virtiofs automatically (effective after rebooting the system after creating the storage space for the first time since it is mounted to the first storage space by default).",
"fr_FR": "Monte automatiquement les systèmes de fichiers virtio9p et virtiofs (efficace après le redémarrage du système après la création de l'espace de stockage pour la première fois car il est monté sur le premier espace de stockage par défaut).",
"ja_JP": "virtio9pおよびvirtiofsファイルシステムを自動的にマウントしますデフォルトで最初のストレージスペースにマウントされるため、システムを再起動して最初にストレージスペースを作成した後に有効になります。",
"ko_KR": "virtio9p 및 virtiofs 파일 시스템을 자동으로 마운트합니다(기본적으로 첫 번째 스토리지 공간에 마운트되므로 시스템을 재부팅한 후 처음으로 스토리지 공간을 만든 후에 적용됨).",
"ru_RU": "Автоматически монтирует файловые системы virtio9p и virtiofs (вступает в силу после перезагрузки системы после создания хранилища в первый раз, так как по умолчанию оно монтируется в первое хранилище).",
"th_TH": "ติดตั้งระบบไฟล์ virtio9p และ virtiofs โดยอัตโนมัติ (มีผลหลังจากรีบูตระบบหลังจากสร้างพื้นที่จัดเก็บข้อมูลเป็นครั้งแรกเนื่องจากจะถูกเมานต์ไปยังพื้นที่จัดเก็บข้อมูลแรกโดยค่าเริ่มต้น)",
"tr_TR": "virtio9p ve virtiofs dosya sistemlerini otomatik olarak bağlar (varsayılan olarak ilk depolama alanına bağlandığından, depolama alanı ilk kez oluşturulduktan sonra sistemi yeniden başlattıktan sonra geçerlidir).",
"uk_UA": "Автоматично монтує файлові системи virtio9p та virtiofs (вступає в силу після перезавантаження системи після створення сховища у перший раз, оскільки за замовчуванням воно монтується у перший сховище).",
"vi_VN": "Tự động gắn hệ thống tệp virtio9p và virtiofs (có hiệu lực sau khi khởi động lại hệ thống sau khi tạo không gian lưu trữ lần đầu tiên vì nó được gắn vào không gian lưu trữ đầu tiên theo mặc định).",
"zh_CN": "自动挂载 virtio9p 和 virtiofs 文件系统(由于默认挂载到第一个存储空间,所以首次安装系统创建存储空间后重启生效).",
"zh_HK": "自動掛載 virtio9p 和 virtiofs 文件系統(由於默認掛載到第一個存儲空間,所以首次安裝系統創建存儲空間後重启生效).",
"zh_TW": "自動掛載 virtio9p 和 virtiofs 檔案系統(由於預設掛載到第一個儲存空間,所以首次安裝系統建立儲存空間後重新啟動生效)."
}
},
"vmtools": {
"system": false,
"description": {

Binary file not shown.

Binary file not shown.

View File

@ -13672,10 +13672,6 @@
"description": "Fairchild FUSB302 Type-C Chip Driver",
"depends": "tcpm,usb-common"
},
"fuse": {
"description": "Filesystem in Userspace",
"depends": ""
},
"gpio-beeper": {
"description": "Generic GPIO beeper driver",
"depends": ""
@ -14792,10 +14788,6 @@
"description": "Virtio SCSI HBA driver (Compiled by RR for DSM)",
"depends": "virtio,virtio_ring,blk-mq-virtio"
},
"virtiofs": {
"description": "Virtio Filesystem (Compiled by RR for DSM)",
"depends": "fuse,virtio_ring,virtio"
},
"vmw_pvscsi": {
"description": "VMware PVSCSI driver (Compiled by RR for DSM)",
"depends": ""
@ -15334,10 +15326,6 @@
"description": "Fairchild FUSB302 Type-C Chip Driver",
"depends": "tcpm,usb-common"
},
"fuse": {
"description": "Filesystem in Userspace",
"depends": ""
},
"gasket": {
"description": "Google Gasket driver framework",
"depends": "dmabuf"
@ -16478,10 +16466,6 @@
"description": "Virtio SCSI HBA driver (Compiled by RR for DSM)",
"depends": "virtio,virtio_ring,blk-mq-virtio"
},
"virtiofs": {
"description": "Virtio Filesystem (Compiled by RR for DSM)",
"depends": "fuse,virtio_ring,virtio"
},
"vmw_pvscsi": {
"description": "VMware PVSCSI driver (Compiled by RR for DSM)",
"depends": ""
@ -19313,10 +19297,6 @@
"description": "Fairchild FUSB302 Type-C Chip Driver",
"depends": "tcpm,usb-common"
},
"fuse": {
"description": "Filesystem in Userspace",
"depends": ""
},
"gpio-beeper": {
"description": "Generic GPIO beeper driver",
"depends": ""
@ -20365,10 +20345,6 @@
"description": "Virtio SCSI HBA driver (Compiled by RR for DSM)",
"depends": "virtio,virtio_ring,blk-mq-virtio"
},
"virtiofs": {
"description": "Virtio Filesystem (Compiled by RR for DSM)",
"depends": "fuse,virtio_ring,virtio"
},
"vmw_pvscsi": {
"description": "VMware PVSCSI driver (Compiled by RR for DSM)",
"depends": ""
@ -25371,10 +25347,6 @@
"description": "Fairchild FUSB302 Type-C Chip Driver",
"depends": "tcpm"
},
"fuse": {
"description": "Filesystem in Userspace",
"depends": ""
},
"gpio-beeper": {
"description": "Generic GPIO beeper driver",
"depends": ""
@ -26487,10 +26459,6 @@
"description": "Virtio SCSI HBA driver (Compiled by RR for DSM)",
"depends": "virtio,virtio_ring,blk-mq-virtio"
},
"virtiofs": {
"description": "Virtio Filesystem (Compiled by RR for DSM)",
"depends": "fuse,virtio_ring,virtio"
},
"vmw_pvscsi": {
"description": "VMware PVSCSI driver (Compiled by RR for DSM)",
"depends": ""
@ -29301,10 +29269,6 @@
"description": "Fairchild FUSB302 Type-C Chip Driver",
"depends": "tcpm"
},
"fuse": {
"description": "Filesystem in Userspace",
"depends": ""
},
"gpio-beeper": {
"description": "Generic GPIO beeper driver",
"depends": ""
@ -30425,10 +30389,6 @@
"description": "Virtio SCSI HBA driver (Compiled by RR for DSM)",
"depends": "virtio,virtio_ring,blk-mq-virtio"
},
"virtiofs": {
"description": "Virtio Filesystem (Compiled by RR for DSM)",
"depends": "fuse,virtio_ring,virtio"
},
"vmw_pvscsi": {
"description": "VMware PVSCSI driver (Compiled by RR for DSM)",
"depends": ""

Binary file not shown.

View File

@ -251,25 +251,444 @@
"sum": "00000000000000000000000000000000"
}
},
"DS220+": {},
"DS224+": {},
"DS2419+": {},
"DS2419+II": {},
"DS2422+": {},
"DS3622xs+": {},
"DS420+": {},
"DS423+": {},
"DS620slim": {},
"DS720+": {},
"DS723+": {},
"DS920+": {},
"DS923+": {},
"DVA1622": {},
"DVA3219": {},
"DVA3221": {},
"FS2500": {},
"FS3400": {},
"FS3410": {},
"DS220+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS220%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS220%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS220%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS220%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS220%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS220%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS224+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS224%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS224%2B_69057.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS2419+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS2419%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS2419%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS2419%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS2419%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS2419%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS2419%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS2419+II": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS2419%2BII_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS2419%2BII_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS2419%2BII_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS2419%2BII_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS2419%2BII_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS2419%2BII_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS2422+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS2422%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS2422%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS2422%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS2422%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS2422%2B_42661.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS2422%2B_42218.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS3622xs+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS3622xs%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS3622xs%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS3622xs%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS3622xs%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS3622xs%2B_42661.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS420+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS420%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS420%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS420%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS420%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS420%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS420%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS423+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS423%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS423%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS423%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962/DSM_DS423%2B_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS620slim": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS620slim_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS620slim_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057/DSM_DS620slim_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS620slim_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS620slim_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS620slim_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS720+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS720%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS720%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS720%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS720%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS720%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS720%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS723+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS723%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS723%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS723%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962/DSM_DS723%2B_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS920+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS920%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS920%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS920%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS920%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS920%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DS920%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DS923+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS923%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS923%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS923%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962/DSM_DS923%2B_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"DVA1622": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DVA1622_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DVA1622_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DVA1622_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DVA1622_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"DVA3219": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DVA3219_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DVA3219_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DVA3219_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DVA3219_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DVA3219_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DVA3219_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"DVA3221": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DVA3221_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DVA3221_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DVA3221_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DVA3221_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DVA3221_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_DVA3221_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"FS2500": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_FS2500_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_FS2500_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_FS2500_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_FS2500_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_FS2500_42661.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_FS2500_42218.pat",
"sum": "00000000000000000000000000000000"
}
},
"FS3400": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_FS3400_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_FS3400_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_FS3400_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_FS3400_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_FS3400_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_FS3400_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"FS3410": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_FS3410_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_FS3410_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_FS3410_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_FS3410_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"FS3600": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_FS3600_72806.pat",
@ -652,6 +1071,14 @@
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS820%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS820%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS820%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS820RP+": {
@ -732,11 +1159,78 @@
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_SA3200D_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_SA3200D_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_SA3200D_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"SA3400": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_SA3400_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_SA3400_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_SA3400_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_SA3400_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_SA3400_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_SA3400_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"SA3400D": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_SA3400D_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_SA3400D_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_SA3400D_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962/DSM_SA3400D_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"SA3410": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_SA3410_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057/DSM_SA3410_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_SA3410_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962/DSM_SA3410_42962.pat",
"sum": "00000000000000000000000000000000"
}
},
"SA3400": {},
"SA3400D": {},
"SA3410": {},
"SA3600": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_SA3600_72806.pat",
@ -1049,13 +1543,196 @@
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_FS2017_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_FS2017_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_FS2017_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS18017xs+": {},
"RS2418+": {},
"RS2418RP+": {},
"RS2818RP+": {},
"RS3617RPxs": {},
"RS3617xs+": {},
"RS4017xs+": {}
"RS18017xs+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS18017xs%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS18017xs%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS18017xs%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS18017xs%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS18017xs%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS18017xs%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS2418+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS2418%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS2418%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS2418%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS2418%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS2418%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS2418%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS2418RP+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS2418RP%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS2418RP%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS2418RP%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS2418RP%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS2418RP%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS2418RP%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS2818RP+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS2818RP%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS2818RP%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS2818RP%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS2818RP%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS2818RP%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS2818RP%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS3617RPxs": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS3617RPxs_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS3617RPxs_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS3617RPxs_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS3617RPxs_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS3617RPxs_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS3617RPxs_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS3617xs+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS3617xs%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS3617xs%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS3617xs%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS3617xs%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS3617xs%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS3617xs%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
},
"RS4017xs+": {
"7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS4017xs%2B_72806.pat",
"sum": "00000000000000000000000000000000"
},
"7.0.1-42218-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS4017xs%2B_42218.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.1-69057-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_RS4017xs%2B_69057.pat",
"sum": "00000000000000000000000000000000"
},
"7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS4017xs%2B_64570.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.1-42962-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_RS4017xs%2B_42962.pat",
"sum": "00000000000000000000000000000000"
},
"7.1.0-42661-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.1/42661-1/DSM_RS4017xs%2B_42661.pat",
"sum": "00000000000000000000000000000000"
}
}
}

Binary file not shown.

View File

@ -363,7 +363,7 @@ if [ "${DIRECT}" = "true" ] || [ "${MEV:-physical}" = "parallels" ]; then
_bootwait || exit 0
printf "\033[1;33m%s\033[0m\n" "$(TEXT "Reboot to boot directly in DSM")"
[ ! -f "/.dockerenv" ] && reboot
reboot
exit 0
else
rm -f "${USER_RSYSENVFILE}" 2>/dev/null || true
@ -390,9 +390,9 @@ else
printf "."
sleep 1
done
if [ ! -f "/.dockerenv" ]; then
[ ! -f /var/run/dhcpcd/pid ] && /etc/init.d/S41dhcpcd restart >/dev/null 2>&1 || true
fi
printf "$(TEXT "Waiting IP.\n")"
for N in ${ETHX}; do
COUNT=0
@ -464,7 +464,6 @@ else
fi
done
if [ ! -f "/.dockerenv" ]; then
# Disconnect wireless
lsmod | grep -q iwlwifi && for F in /sys/class/net/wlan*; do
[ ! -e "${F}" ] && continue
@ -482,6 +481,5 @@ else
# Reboot
KERNELWAY="$(readConfigKey "kernelway" "${USER_CONFIG_FILE}")"
[ "${KERNELWAY}" = "kexec" ] && kexec -e || poweroff
fi
exit 0
fi

0
files/initrd/opt/rr/extract-vmlinux Executable file → Normal file
View File

0
files/initrd/opt/rr/helper.sh Executable file → Normal file
View File

View File

@ -8,7 +8,7 @@
# shellcheck disable=SC2034
RR_VERSION="25.9.5"
RR_VERSION="25.9.4"
RR_RELEASE=""
RR_TITLE="RR v${RR_VERSION}"

View File

@ -10,20 +10,18 @@
# Unpack modules from a tgz file
# 1 - Platform
# 2 - Kernel Version
# 3 - dummy path
function unpackModules() {
local PLATFORM=${1}
local PKVER=${2}
local UNPATH=${3:-"${TMP_PATH}/modules"}
local KERNEL
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
rm -rf "${UNPATH}"
mkdir -p "${UNPATH}"
rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules"
if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${PKVER}.tgz" -C "${UNPATH}"
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules"
else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${PKVER}.tgz" -C "${UNPATH}"
tar -zxf "${MODULES_PATH}/${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules"
fi
}
@ -31,18 +29,16 @@ function unpackModules() {
# Packag modules to a tgz file
# 1 - Platform
# 2 - Kernel Version
# 3 - dummy path
function packagModules() {
local PLATFORM=${1}
local PKVER=${2}
local UNPATH=${3:-"${TMP_PATH}/modules"}
local KERNEL
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then
tar -zcf "${CKS_PATH}/modules-${PLATFORM}-${PKVER}.tgz" -C "${UNPATH}" .
tar -zcf "${CKS_PATH}/modules-${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules" .
else
tar -zcf "${MODULES_PATH}/${PLATFORM}-${PKVER}.tgz" -C "${UNPATH}" .
tar -zcf "${MODULES_PATH}/${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules" .
fi
}
@ -58,10 +54,9 @@ function getAllModules() {
return 1
fi
UNPATH="${TMP_PATH}/modules"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
unpackModules "${PLATFORM}" "${PKVER}"
for F in ${UNPATH}/*.ko; do
for F in ${TMP_PATH}/modules/*.ko; do
[ ! -e "${F}" ] && continue
local N DESC
N="$(basename "${F}" .ko)"
@ -70,35 +65,7 @@ function getAllModules() {
echo "${N} \"${DESC:-${N}}\""
done
rm -rf "${UNPATH}"
}
function getLoadedModules() {
local PLATFORM=${1}
local PKVER=${2}
if [ -z "${PLATFORM}" ] || [ -z "${PKVER}" ]; then
return 1
fi
UNPATH="${TMP_PATH}/lib/modules/$(uname -r)"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
depmod -a -b "${TMP_PATH}" >/dev/null 2>&1
ALL_KO=$(
find /sys/devices -name modalias -exec cat {} \; | while read -r modalias; do
modprobe -d "${TMP_PATH}" --resolve-alias "${modalias}" 2>/dev/null
done | sort -u
)
rm -rf "${UNPATH}"
ALL_DEPS=""
for M in ${ALL_KO}; do
ALL_DEPS="${ALL_DEPS} $(getdepends "${PLATFORM}" "${PKVER}" "${M}")"
done
echo "${ALL_DEPS}" | tr ' ' '\n' | grep -v '^$' | sort -u
return 0
rm -rf "${TMP_PATH}/modules"
}
###############################################################################
@ -118,11 +85,10 @@ function installModules() {
shift 2
MLIST="${*}"
UNPATH="${TMP_PATH}/modules"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
unpackModules "${PLATFORM}" "${PKVER}"
ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")"
for F in ${UNPATH}/*.ko; do
for F in ${TMP_PATH}/modules/*.ko; do
[ ! -e "${F}" ] && continue
M=$(basename "${F}")
[ "${ODP}" = "true" ] && [ -f "${RAMDISK_PATH}/usr/lib/modules/${M}" ] && continue
@ -132,7 +98,6 @@ function installModules() {
rm -f "${RAMDISK_PATH}/usr/lib/modules/${M}" 2>"${LOG_FILE}"
fi
done
rm -rf "${UNPATH}"
mkdir -p "${RAMDISK_PATH}/usr/lib/firmware"
KERNEL=$(readConfigKey "kernel" "${USER_CONFIG_FILE}")
@ -144,6 +109,8 @@ function installModules() {
if [ $? -ne 0 ]; then
return 1
fi
rm -rf "${TMP_PATH}/modules"
return 0
}
@ -162,12 +129,11 @@ function addToModules() {
return 1
fi
UNPATH="${TMP_PATH}/modules"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
unpackModules "${PLATFORM}" "${PKVER}"
cp -f "${KOFILE}" "${UNPATH}"
cp -f "${KOFILE}" "${TMP_PATH}/modules"
packagModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
packagModules "${PLATFORM}" "${PKVER}"
}
###############################################################################
@ -185,12 +151,11 @@ function delToModules() {
return 1
fi
UNPATH="${TMP_PATH}/modules"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
unpackModules "${PLATFORM}" "${PKVER}"
rm -f "${UNPATH}/${KONAME}"
rm -f "${TMP_PATH}/modules/${KONAME}"
packagModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
packagModules "${PLATFORM}" "${PKVER}"
}
###############################################################################
@ -200,9 +165,9 @@ function delToModules() {
# 3 - ko name
function getdepends() {
function _getdepends() {
if [ -f "${UNPATH}/${1}.ko" ]; then
if [ -f "${TMP_PATH}/modules/${1}.ko" ]; then
local depends
depends="$(modinfo -F depends "${UNPATH}/${1}.ko" 2>/dev/null | sed 's/,/\n/g')"
depends="$(modinfo -F depends "${TMP_PATH}/modules/${1}.ko" 2>/dev/null | sed 's/,/\n/g')"
if [ "$(echo "${depends}" | wc -w)" -gt 0 ]; then
for k in ${depends}; do
echo "${k}"
@ -221,10 +186,9 @@ function getdepends() {
return 1
fi
UNPATH="${TMP_PATH}/modules"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
unpackModules "${PLATFORM}" "${PKVER}"
_getdepends "${KONAME}" | sort -u
echo "${KONAME}"
rm -rf "${UNPATH}"
rm -rf "${TMP_PATH}/modules"
}

View File

@ -94,7 +94,7 @@ fi
initConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
initConfigKey "modblacklist" "evbug,cdc_ether" "${USER_CONFIG_FILE}"
if [ ! -f "/.dockerenv" ]; then
if [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
if arrayExistItem "sortnetif:" "$(readConfigMap "addons" "${USER_CONFIG_FILE}")"; then
_sort_netif "$(readConfigKey "addons.sortnetif" "${USER_CONFIG_FILE}")"
fi
@ -138,7 +138,12 @@ if [ "${BUS}" = "usb" ]; then
elif [ "${BUS}" = "docker" ]; then
TYPE="PC"
elif ! echo "${BUSLIST}" | grep -wq "${BUS}"; then
if [ "LOCALBUILD" = "${LOADER_DISK}" ]; then
echo "LOCALBUILD MODE"
TYPE="PC"
else
die "$(printf "$(TEXT "The loader disk does not support the current %s, only %s DoM is supported.")" "${BUS}" "${BUSLIST// /\/}")"
fi
fi
# Save variables to user config file
@ -200,7 +205,7 @@ while [ ${COUNT} -lt 30 ]; do
sleep 1
done
if [ ! -f "/.dockerenv" ]; then
if [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
[ ! -f /var/run/dhcpcd/pid ] && /etc/init.d/S41dhcpcd restart >/dev/null 2>&1 || true
fi
@ -257,7 +262,7 @@ fi
printf "\n"
DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")"
if [ "${DSMLOGO}" = "true" ] && [ -c "/dev/fb0" ] && [ ! -f "/.dockerenv" ]; then
if [ "${DSMLOGO}" = "true" ] && [ -c "/dev/fb0" ] && [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
IP="$(getIP)"
echo "${IP}" | grep -q "^169\.254\." && IP=""
[ -n "${IP}" ] && URL="http://${IP}:${TTYD:-7681}" || URL="http://rr:${TTYD:-7681}"
@ -268,7 +273,7 @@ if [ "${DSMLOGO}" = "true" ] && [ -c "/dev/fb0" ] && [ ! -f "/.dockerenv" ]; the
[ -f "${TMP_PATH}/qrcode_qhxg.png" ] && echo | fbv -acufi "${TMP_PATH}/qrcode_qhxg.png" >/dev/null 2>&1 || true
fi
WEBHOOKURL="$(readConfigKey "webhookurl" "${USER_CONFIG_FILE}")"
if [ -n "${WEBHOOKURL}" ] && [ ! -f "${TMP_PATH}/WebhookSent" ] && [ ! -f "/.dockerenv" ]; then
if [ -n "${WEBHOOKURL}" ] && [ ! -f "${TMP_PATH}/WebhookSent" ] && [ ! -f "/.dockerenv" ] && [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | head -1 | sed 's/\[.*\] DMI: //i')"
IP="$(getIP)"
echo "${IP}" | grep -q "^169\.254\." && IP=""

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
25.9.5
25.9.4

251
localbuild.sh Executable file
View File

@ -0,0 +1,251 @@
#!/usr/bin/env bash
#
# Copyright (C) 2022 Ing <https://github.com/wjz304>
#
# This is free software, licensed under the MIT License.
# See /LICENSE for more information.
#
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
function help() {
cat <<EOF
Usage: $0 <command> [args]
Commands:
create [workspace] [rr.img] - Create the workspace
init - Initialize the environment
config [model] [version] - Config the DSM system
build - Build the DSM system
pack [rr.img] - Pack to rr.img
help - Show this help
EOF
exit 1
}
function create() {
local WORKSPACE RRIMGPATH LOOPX INITRD_FILE INITRD_FORMAT
WORKSPACE="$(realpath "${1:-workspace}")"
RRIMGPATH="$(realpath "${2:-rr.img}")"
if [ ! -f "${RRIMGPATH}" ]; then
echo "File not found: ${RRIMGPATH}"
exit 1
fi
sudo apt update
sudo apt install -y locales busybox dialog gettext sed gawk jq curl
sudo apt install -y python-is-python3 python3-pip libelf-dev qemu-utils dosfstools cpio xz-utils lz4 lzma bzip2 gzip zstd
# sudo snap install yq
if ! type yq >/dev/null 2>&1 || ! yq --version 2>/dev/null | grep -q "v4."; then
sudo curl -kL https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/bin/yq && sudo chmod a+x /usr/bin/yq
fi
# Backup the original python3 executable.
sudo mv -f "$(realpath "$(which python3)")/EXTERNALLY-MANAGED" "$(realpath "$(which python3)")/EXTERNALLY-MANAGED.bak" 2>/dev/null || true
sudo pip3 install -U click requests requests-toolbelt qrcode[pil] beautifulsoup4
sudo locale-gen ar_SA.UTF-8 de_DE.UTF-8 en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 ru_RU.UTF-8 th_TH.UTF-8 tr_TR.UTF-8 uk_UA.UTF-8 vi_VN.UTF-8 zh_CN.UTF-8 zh_HK.UTF-8 zh_TW.UTF-8
LOOPX=$(sudo losetup -f)
sudo losetup -P "${LOOPX}" "${RRIMGPATH}"
# Check partitions and ignore errors
fsck.vfat -aw "${LOOPX}p1" >/dev/null 2>&1 || true
fsck.ext2 -p "${LOOPX}p2" >/dev/null 2>&1 || true
fsck.ext4 -p "${LOOPX}p3" >/dev/null 2>&1 || true
echo "Mounting image file"
for i in {1..3}; do
rm -rf "/tmp/mnt/p${i}"
mkdir -p "/tmp/mnt/p${i}"
sudo mount "${LOOPX}p${i}" "/tmp/mnt/p${i}" || {
echo "Can't mount ${LOOPX}p${i}."
exit 1
}
done
echo "Create WORKSPACE"
rm -rf "${WORKSPACE}"
mkdir -p "${WORKSPACE}/mnt" "${WORKSPACE}/tmp" "${WORKSPACE}/initrd"
cp -rpf /tmp/mnt/p{1,2,3} "${WORKSPACE}/mnt/"
INITRD_FILE="${WORKSPACE}/mnt/p3/initrd-rr"
INITRD_FORMAT=$(file -b --mime-type "${INITRD_FILE}")
case "${INITRD_FORMAT}" in
*'x-cpio'*) (cd "${WORKSPACE}/initrd" && sudo cpio -idm <"${INITRD_FILE}") >/dev/null 2>&1 ;;
*'x-xz'*) (cd "${WORKSPACE}/initrd" && xz -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'x-lz4'*) (cd "${WORKSPACE}/initrd" && lz4 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'x-lzma'*) (cd "${WORKSPACE}/initrd" && lzma -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'x-bzip2'*) (cd "${WORKSPACE}/initrd" && bzip2 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'gzip'*) (cd "${WORKSPACE}/initrd" && gzip -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'zstd'*) (cd "${WORKSPACE}/initrd" && zstd -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*) ;;
esac
sudo sync
for i in {1..3}; do
sudo umount "/tmp/mnt/p${i}"
rm -rf "/tmp/mnt/p${i}"
done
sudo losetup --detach "${LOOPX}"
if [ ! -f "${WORKSPACE}/initrd/opt/rr/init.sh" ] || [ ! -f "${WORKSPACE}/initrd/opt/rr/menu.sh" ]; then
echo "initrd decompression failed."
exit 1
fi
rm -f "$(dirname "${BASH_SOURCE[0]}")/rr.env"
cat <<EOF >"$(dirname "${BASH_SOURCE[0]}")/rr.env"
export LOADER_DISK="LOCALBUILD"
export CHROOT_PATH="${WORKSPACE}"
EOF
echo "OK."
}
function init() {
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
echo "Please run init first"
exit 1
fi
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
pushd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
echo "init"
./init.sh
local RET=$?
popd || exit 1
[ ${RET} -ne 0 ] && echo "Failed." || echo "Success."
exit ${RET}
}
function config() {
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
echo "Please run init first"
exit 1
fi
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
local RET=1
pushd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
while true; do
if [ -z "${1}" ]; then
echo "menu"
./menu.sh || break
RET=0
else
echo "model"
./menu.sh modelMenu "${1:-SA6400}" || break
echo "version"
./menu.sh productversMenu "${2:-7.2}" || break
RET=0
fi
break
done
popd || exit 1
[ ${RET} -ne 0 ] && echo "Failed." || echo "Success."
exit ${RET}
}
function build() {
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
echo "Please run init first"
exit 1
fi
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
local RET=1
pushd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
while true; do
echo "build"
./menu.sh make -1 || break
echo "clean"
./menu.sh cleanCache -1 || break
RET=0
break
done
popd || exit 1
[ ${RET} -ne 0 ] && echo "Failed." || echo "Success."
exit ${RET}
}
function pack() {
if [ ! -f "$(dirname "${BASH_SOURCE[0]}")/rr.env" ]; then
echo "Please run init first"
exit 1
fi
. "$(dirname "${BASH_SOURCE[0]}")/rr.env"
local RRIMGPATH LOOPX
RRIMGPATH="$(realpath "${1:-rr.img}")"
rm -f "${RRIMGPATH}"
gzip -dc "${CHROOT_PATH}/initrd/opt/rr/grub.img.gz" >"${RRIMGPATH}"
fdisk -l "${RRIMGPATH}"
LOOPX=$(sudo losetup -f)
sudo losetup -P "${LOOPX}" "${RRIMGPATH}"
# Check partitions and ignore errors
fsck.vfat -aw "${LOOPX}p1" >/dev/null 2>&1 || true
fsck.ext2 -p "${LOOPX}p2" >/dev/null 2>&1 || true
fsck.ext4 -p "${LOOPX}p3" >/dev/null 2>&1 || true
echo "Mounting image file"
for i in {1..3}; do
rm -rf "/tmp/mnt/p${i}"
mkdir -p "/tmp/mnt/p${i}"
sudo mount "${LOOPX}p${i}" "/tmp/mnt/p${i}" || {
echo "Can't mount ${LOOPX}p${i}."
exit 1
}
done
echo "Pack image file"
for i in {1..3}; do
[ ${i} -eq 1 ] && sudo cp -af "${CHROOT_PATH}/mnt/p${i}/"{.locale,.timezone} "/tmp/mnt/p${i}/" 2>/dev/null
sudo cp -rf "${CHROOT_PATH}/mnt/p${i}/"* "/tmp/mnt/p${i}" || {
echo "Can't cp ${LOOPX}p${i}."
exit 1
}
done
sudo sync
for i in {1..3}; do
sudo umount "/tmp/mnt/p${i}"
rm -rf "/tmp/mnt/p${i}"
done
sudo losetup --detach "${LOOPX}"
echo "OK."
exit 0
}
function resize() {
local INPUT_FILE="${1}"
local CHANGE_SIZE="${2}"
local OUTPUT_FILE="${3:-${INPUT_FILE}}"
[ -z "${INPUT_FILE}" ] || [ ! -f "${INPUT_FILE}" ] && exit 1
[ -z "${CHANGE_SIZE}" ] && exit 1
INPUT_FILE="$(realpath "${INPUT_FILE}")"
OUTPUT_FILE="$(realpath "${OUTPUT_FILE}")"
local SIZE=$(($(du -sm "${INPUT_FILE}" 2>/dev/null | awk '{print $1}')$(echo "${CHANGE_SIZE}" | sed 's/M//g; s/b//g')))
[ "${SIZE:-0}" -lt 0 ] && exit 1
if [ ! "${INPUT_FILE}" = "${OUTPUT_FILE}" ]; then
sudo cp -f "${INPUT_FILE}" "${OUTPUT_FILE}"
fi
sudo truncate -s ${SIZE}M "${OUTPUT_FILE}"
echo -e "d\n\nn\n\n\n\n\nn\nw" | sudo fdisk "${OUTPUT_FILE}" >/dev/null 2>&1
local LOOPX LOOPXPY
LOOPX=$(sudo losetup -f)
sudo losetup -P "${LOOPX}" "${OUTPUT_FILE}"
LOOPXPY="$(find "${LOOPX}p"* -maxdepth 0 2>/dev/null | sort -n | tail -1)"
sudo e2fsck -fp "${LOOPXPY:-${LOOPX}p3}"
sudo resize2fs "${LOOPXPY:-${LOOPX}p3}"
sudo losetup -d "${LOOPX}"
}
"$@"

View File

@ -242,34 +242,6 @@ function getModules() {
echo "Getting Modules end"
}
# unpack initrd
# $1 initrd file
# $2 output path
function unpackInitrd() {
local INITRD_FILE="${1}"
local OUTPUT_PATH="${2}"
[ -z "${INITRD_FILE}" ] || [ ! -f "${INITRD_FILE}" ] && exit 1
INITRD_FILE="$(realpath "${INITRD_FILE}")"
OUTPUT_PATH="$(realpath "${OUTPUT_PATH}")"
mkdir -p "${OUTPUT_PATH}"
local INITRD_FORMAT
INITRD_FORMAT=$(file -b --mime-type "${INITRD_FILE}")
case "${INITRD_FORMAT}" in
*'x-cpio'*) (cd "${OUTPUT_PATH}" && sudo cpio -idm <"${INITRD_FILE}") >/dev/null 2>&1 ;;
*'x-xz'*) (cd "${OUTPUT_PATH}" && xz -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'x-lz4'*) (cd "${OUTPUT_PATH}" && lz4 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'x-lzma'*) (cd "${OUTPUT_PATH}" && lzma -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'x-bzip2'*) (cd "${OUTPUT_PATH}" && bzip2 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'gzip'*) (cd "${OUTPUT_PATH}" && gzip -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*'zstd'*) (cd "${OUTPUT_PATH}" && zstd -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;;
*) ;;
esac
}
# repack initrd
# $1 initrd file
# $2 plugin path

0
scripts/pve.sh Executable file → Normal file
View File

117
sourcebuild.sh Executable file
View File

@ -0,0 +1,117 @@
#!/usr/bin/env bash
#
# Copyright (C) 2022 Ing <https://github.com/wjz304>
#
# This is free software, licensed under the MIT License.
# See /LICENSE for more information.
#
# sudo apt update
# sudo apt install -y locales busybox dialog gettext sed gawk jq curl
# sudo apt install -y python-is-python3 python3-pip libelf-dev qemu-utils dosfstools cpio xz-utils lz4 lzma bzip2 gzip zstd
# # sudo snap install yq
# if ! type yq >/dev/null 2>&1 || ! yq --version 2>/dev/null | grep -q "v4."; then
# sudo curl -kL https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/bin/yq && sudo chmod a+x /usr/bin/yq
# fi
#
# # Backup the original python3 executable.
# sudo mv -f "$(realpath $(which python3))/EXTERNALLY-MANAGED" "$(realpath $(which python3))/EXTERNALLY-MANAGED.bak" 2>/dev/null || true
# sudo pip3 install -U click requests requests-toolbelt qrcode[pil] beautifulsoup4
#
# sudo locale-gen ar_SA.UTF-8 de_DE.UTF-8 en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 ru_RU.UTF-8 th_TH.UTF-8 tr_TR.UTF-8 uk_UA.UTF-8 vi_VN.UTF-8 zh_CN.UTF-8 zh_HK.UTF-8 zh_TW.UTF-8
#
# export TOKEN="${1}"
#
if [ "$(id -u)" -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
. scripts/func.sh "${TOKEN}"
echo "Get extractor"
getCKs "files/mnt/p3/cks" "true"
getLKMs "files/mnt/p3/lkms" "true"
getAddons "files/mnt/p3/addons" "true"
getModules "files/mnt/p3/modules" "true"
getBuildroot "files/mnt/p3" "true"
getExtractor "files/mnt/p3/extractor"
echo "Repack initrd"
convertpo2mo "files/initrd/opt/rr/lang"
repackInitrd "files/mnt/p3/initrd-rr" "files/initrd"
if [ -n "${1}" ]; then
LOADER_DISK="LOCALBUILD"
CHROOT_PATH="$(realpath files)"
export LOADER_DISK="LOCALBUILD"
export CHROOT_PATH="${CHROOT_PATH}"
(
cd "${CHROOT_PATH}/initrd/opt/rr" || exit 1
./init.sh
./menu.sh modelMenu "${1}"
./menu.sh productversMenu "${2:-7.2}"
./menu.sh make -1
./menu.sh cleanCache -1
)
fi
IMAGE_FILE="rr.img"
gzip -dc "files/initrd/opt/rr/grub.img.gz" >"${IMAGE_FILE}"
fdisk -l "${IMAGE_FILE}"
LOOPX=$(sudo losetup -f)
sudo losetup -P "${LOOPX}" "${IMAGE_FILE}"
# Check partitions and ignore errors
fsck.vfat -aw "${LOOPX}p1" >/dev/null 2>&1 || true
fsck.ext2 -p "${LOOPX}p2" >/dev/null 2>&1 || true
fsck.ext4 -p "${LOOPX}p3" >/dev/null 2>&1 || true
for i in {1..3}; do
[ ! -d "files/mnt/p${i}" ] && continue
rm -rf "/tmp/mnt/p${i}"
mkdir -p "/tmp/mnt/p${i}"
echo "Mounting ${LOOPX}p${i}"
sudo mount "${LOOPX}p${i}" "/tmp/mnt/p${i}" || {
echo "Can't mount ${LOOPX}p${i}."
break
}
echo "Copying files to ${LOOPX}p${i}"
[ ${i} -eq 1 ] && sudo cp -af "files/mnt/p${i}/"{.locale,.timezone} "/tmp/mnt/p${i}/" 2>/dev/null || true
sudo cp -rf "files/mnt/p${i}/"* "/tmp/mnt/p${i}" || true
sudo sync
echo "Unmounting ${LOOPX}p${i}"
sudo umount "/tmp/mnt/p${i}" || {
echo "Can't umount ${LOOPX}p${i}."
break
}
rm -rf "/tmp/mnt/p${i}"
done
sudo losetup --detach "${LOOPX}"
resizeImg "${IMAGE_FILE}" "+2560M"
# convertova "${IMAGE_FILE}" "${IMAGE_FILE/.img/.ova}"
# update.zip
sha256sum update-list.yml update-check.sh >sha256sum
zip -9j "update.zip" update-list.yml update-check.sh
while read -r F; do
if [ -d "${F}" ]; then
FTGZ="$(basename "${F}").tgz"
tar -zcf "${FTGZ}" -C "${F}" .
sha256sum "${FTGZ}" >>sha256sum
zip -9j "update.zip" "${FTGZ}"
rm -f "${FTGZ}"
else
(cd "$(dirname "${F}")" && sha256sum "$(basename "${F}")") >>sha256sum
zip -9j "update.zip" "${F}"
fi
done <<<"$(yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml)"
zip -9j "update.zip" sha256sum