Compare commits

...

10 Commits
25.9.4 ... main

22 changed files with 747 additions and 1876 deletions

View File

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

View File

@ -148,39 +148,9 @@ jobs:
run: | run: |
# 累了, 毁灭吧! # 累了, 毁灭吧!
# yq need sudo !!! . scripts/func.sh "${{ secrets.RRORG }}"
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 }}" REPO="${{ github.server_url }}/${{ github.repository }}"
MODEL="${{ env.model }}"
VERSION="${{ env.version }}"
PRERELEASE="true" PRERELEASE="true"
TAG="" TAG=""
@ -197,63 +167,39 @@ jobs:
exit 1 exit 1
fi fi
unzip rr-${TAG}.img.zip -d "rr" unzip rr-${TAG}.img.zip -d rr rr.img
export TERM=xterm echo "TAG=${TAG}" >> $GITHUB_ENV
sudo ./localbuild.sh create rr/ws rr/rr.img case "${{ env.size }}" in
if [ $? -ne 0 ]; then 2GB)
echo "create failed" echo "2GB"
exit 1 ;;
fi 4GB)
echo "4GB"
resizeImg rr/rr.img +2048M
;;
8GB)
echo "8GB"
resizeImg rr/rr.img +6144M
;;
*)
echo "unknown size"
;;
esac
# sudo cp -rf files/initrd/opt/rr/* rr/ws/initrd/opt/rr/ LOOPX=$(sudo losetup -f)
# sudo sed -i "s/set -e/set -ex/" rr/ws/initrd/opt/rr/init.sh sudo losetup -P "${LOOPX}" rr/rr.img
# sudo sed -i '/^alias/i\set -x' rr/ws/initrd/opt/rr/menu.sh
[ -n "${{ env.language }}" ] && echo "${{ env.language }}.UTF-8" | sudo tee rr/ws/mnt/p1/.locale echo "Building..."
{
sudo ./localbuild.sh init [ -n "${{ env.language }}" ] && echo "echo \"${{ env.language }}.UTF-8\" >/mnt/p1/.locale"
if [ $? -ne 0 ]; then [ -n "${{ env.tips }}" ] && echo "echo -e \"${{ env.tips }}\" >/mnt/p3/AddTips"
echo "init failed" [ -n "${{ env.kernel }}" ] && echo "menu.sh writeConfigKey \"kernel\" \"${{ env.kernel }}\" \"\${USER_CONFIG_FILE}\""
exit 1 echo "menu.sh modelMenu \"${{ env.model }}\""
fi echo "menu.sh productversMenu \"${{ env.version }}\""
[ -n "${{ env.addons }}" ] && {
if [ -n "${{ env.kernel }}" ]; then echo "menu.sh writeConfigKey \"addons\" \"{}\" \"\${USER_CONFIG_FILE}\""
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 }}" IFS=',' read -ra ADDON_ARR <<< "${{ env.addons }}"
for A in "${ADDON_ARR[@]}"; do for A in "${ADDON_ARR[@]}"; do
if echo "${A}" | grep -qE '^[^:]+:[^:]+$'; then if echo "${A}" | grep -qE '^[^:]+:[^:]+$'; then
@ -263,74 +209,41 @@ jobs:
KEY="${A}" KEY="${A}"
VAL="" VAL=""
fi fi
writeConfigKey "addons.\"${KEY}\"" "${VAL}" "${USER_CONFIG_FILE}" echo "menu.sh writeConfigKey \"addons.\\\"${KEY}\\\"\" \"${VAL}\" \"\${USER_CONFIG_FILE}\""
done done
fi }
[ ! "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
if [ ! "custom" = "${{ env.kernel }}" ] && [ -n "${{ env.modules }}" ]; then docker pull wjz304/rr:${TAG}
echo "set modules: ${{ env.modules }}" 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
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 ./localbuild.sh build sudo losetup --detach "${LOOPX}"
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 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 "RR: "
echo " VERSION: $(cat "${RR_VERSION_FILE}" 2>/dev/null | head -1)" echo " VERSION: ${TAG}"
echo " CUSTOM: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" echo " CUSTOM: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
echo 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 "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." echo "Of course, you can also modify the settings yourself."
} >README.txt } >README.txt
@ -338,52 +251,47 @@ jobs:
case "${{ env.format }}" in case "${{ env.format }}" in
ova) ova)
echo "OVA" echo "OVA"
. scripts/func.sh "${{ secrets.RRORG }}"
convertova "rr/rr.img" "rr/rr.ova" convertova "rr/rr.img" "rr/rr.ova"
(cd rr && sha256sum rr.ova >../sha256sum) (cd rr && sha256sum rr.ova >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.ova.zip" -j rr/rr.ova ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.ova.zip" -j rr/rr.ova sha256sum README.txt
;; ;;
vmx) vmx)
echo "VMX" echo "VMX"
. scripts/func.sh "${{ secrets.RRORG }}"
convertvmx "rr/rr.img" "rr.vmx" # rr.vmx is a directory convertvmx "rr/rr.img" "rr.vmx" # rr.vmx is a directory
(cd rr.vmx && sha256sum * >../sha256sum) (cd rr.vmx && sha256sum * >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vmx.zip" -r rr.vmx ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vmx.zip" -r rr.vmx sha256sum README.txt
;; ;;
vmdk) vmdk)
echo "VMDK" echo "VMDK"
qemu-img convert rr/rr.img -O vmdk -o 'adapter_type=lsilogic,subformat=streamOptimized,compat6' rr/rr.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) (cd rr && sha256sum rr.vmdk >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vmdk.zip" -j rr/rr.vmdk ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vmdk.zip" -j rr/rr.vmdk sha256sum README.txt
;; ;;
flat) flat)
echo "FLAT" echo "FLAT"
qemu-img convert rr/rr.img -O vmdk -o 'adapter_type=lsilogic,subformat=monolithicFlat,compat6' rr/rr.vmdk qemu-img convert rr/rr.img -O vmdk -o 'adapter_type=lsilogic,subformat=monolithicFlat,compat6' rr/rr.vmdk
(cd rr && sha256sum rr*.vmdk >../sha256sum) (cd rr && sha256sum rr*.vmdk >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.flat.zip" -j rr/rr*.vmdk ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.flat.zip" -j rr/rr*.vmdk sha256sum README.txt
;; ;;
vhd) vhd)
echo "VHD" echo "VHD"
. scripts/func.sh "${{ secrets.RRORG }}"
qemu-img convert rr/rr.img -O vpc rr/rr.vhd qemu-img convert rr/rr.img -O vpc rr/rr.vhd
createvmc "rr/rr.vhd" "rr/rr.vmc" createvmc "rr/rr.vhd" "rr/rr.vmc"
(cd rr && sha256sum rr.vhd >../sha256sum) (cd rr && sha256sum rr.vhd >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vhd.zip" -j rr/rr.vmc rr/rr.vhd ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vhd.zip" -j rr/rr.vmc rr/rr.vhd sha256sum README.txt
;; ;;
vhdx) vhdx)
echo "VHDX" echo "VHDX"
qemu-img convert rr/rr.img -O vhdx -o subformat=dynamic rr/rr.vhdx qemu-img convert rr/rr.img -O vhdx -o subformat=dynamic rr/rr.vhdx
(cd rr && sha256sum rr.vhdx >../sha256sum) (cd rr && sha256sum rr.vhdx >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.vhdx.zip" -j rr/rr.vhdx ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.vhdx.zip" -j rr/rr.vhdx sha256sum README.txt
;; ;;
*) *)
echo "IMG" echo "IMG"
(cd rr && sha256sum rr.img >../sha256sum) (cd rr && sha256sum rr.img >../sha256sum)
zip -9 "rr-${MODEL}-${TAG}-${{ github.run_id }}.img.zip" -j rr/rr.img ${USER_CONFIG_FILE} sha256sum README.txt zip -9 "rr-${{ env.model }}-${TAG}-${{ github.run_id }}.img.zip" -j rr/rr.img sha256sum README.txt
esac esac
echo "TAG=${TAG}" >> $GITHUB_ENV
- name: Upload to Artifacts - name: Upload to Artifacts
if: env.iscustom == 'true' && success() if: env.iscustom == 'true' && success()
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4

View File

@ -1 +1 @@
25.9.4 25.9.5

View File

@ -779,6 +779,26 @@
"zh_TW": "作者: GXNAS. 強制將 UPS 供電時的待機模式修改為關機. 參數: -f - 關機前觸發關機任務; -e - 待機模式前發關機任務(不修改為關機)." "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": { "vmtools": {
"system": false, "system": false,
"description": { "description": {

Binary file not shown.

Binary file not shown.

View File

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

Binary file not shown.

View File

@ -251,444 +251,25 @@
"sum": "00000000000000000000000000000000" "sum": "00000000000000000000000000000000"
} }
}, },
"DS220+": { "DS220+": {},
"7.2.2-72806-0": { "DS224+": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_DS220%2B_72806.pat", "DS2419+": {},
"sum": "00000000000000000000000000000000" "DS2419+II": {},
}, "DS2422+": {},
"7.0.1-42218-0": { "DS3622xs+": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_DS220%2B_42218.pat", "DS420+": {},
"sum": "00000000000000000000000000000000" "DS423+": {},
}, "DS620slim": {},
"7.2.1-69057-1": { "DS720+": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.2.1/69057-1/DSM_DS220%2B_69057.pat", "DS723+": {},
"sum": "00000000000000000000000000000000" "DS920+": {},
}, "DS923+": {},
"7.2.0-64570-1": { "DVA1622": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_DS220%2B_64570.pat", "DVA3219": {},
"sum": "00000000000000000000000000000000" "DVA3221": {},
}, "FS2500": {},
"7.1.1-42962-1": { "FS3400": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.1.1/42962-1/DSM_DS220%2B_42962.pat", "FS3410": {},
"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": { "FS3600": {
"7.2.2-72806-0": { "7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_FS3600_72806.pat", "url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_FS3600_72806.pat",
@ -1071,14 +652,6 @@
"7.2.0-64570-1": { "7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS820%2B_64570.pat", "url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_RS820%2B_64570.pat",
"sum": "00000000000000000000000000000000" "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+": { "RS820RP+": {
@ -1159,78 +732,11 @@
"7.2.0-64570-1": { "7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_SA3200D_64570.pat", "url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_SA3200D_64570.pat",
"sum": "00000000000000000000000000000000" "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": { "SA3600": {
"7.2.2-72806-0": { "7.2.2-72806-0": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_SA3600_72806.pat", "url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_SA3600_72806.pat",
@ -1543,196 +1049,13 @@
"7.2.0-64570-1": { "7.2.0-64570-1": {
"url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_FS2017_64570.pat", "url": "https://global.synologydownload.com/download/DSM/release/7.2/64570-1/DSM_FS2017_64570.pat",
"sum": "00000000000000000000000000000000" "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+": { "RS18017xs+": {},
"7.2.2-72806-0": { "RS2418+": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.2.2/72806/DSM_RS18017xs%2B_72806.pat", "RS2418RP+": {},
"sum": "00000000000000000000000000000000" "RS2818RP+": {},
}, "RS3617RPxs": {},
"7.0.1-42218-0": { "RS3617xs+": {},
"url": "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_RS18017xs%2B_42218.pat", "RS4017xs+": {}
"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 _bootwait || exit 0
printf "\033[1;33m%s\033[0m\n" "$(TEXT "Reboot to boot directly in DSM")" printf "\033[1;33m%s\033[0m\n" "$(TEXT "Reboot to boot directly in DSM")"
reboot [ ! -f "/.dockerenv" ] && reboot
exit 0 exit 0
else else
rm -f "${USER_RSYSENVFILE}" 2>/dev/null || true rm -f "${USER_RSYSENVFILE}" 2>/dev/null || true
@ -390,9 +390,9 @@ else
printf "." printf "."
sleep 1 sleep 1
done done
if [ ! -f "/.dockerenv" ]; then
[ ! -f /var/run/dhcpcd/pid ] && /etc/init.d/S41dhcpcd restart >/dev/null 2>&1 || true [ ! -f /var/run/dhcpcd/pid ] && /etc/init.d/S41dhcpcd restart >/dev/null 2>&1 || true
fi
printf "$(TEXT "Waiting IP.\n")" printf "$(TEXT "Waiting IP.\n")"
for N in ${ETHX}; do for N in ${ETHX}; do
COUNT=0 COUNT=0
@ -464,6 +464,7 @@ else
fi fi
done done
if [ ! -f "/.dockerenv" ]; then
# Disconnect wireless # Disconnect wireless
lsmod | grep -q iwlwifi && for F in /sys/class/net/wlan*; do lsmod | grep -q iwlwifi && for F in /sys/class/net/wlan*; do
[ ! -e "${F}" ] && continue [ ! -e "${F}" ] && continue
@ -481,5 +482,6 @@ else
# Reboot # Reboot
KERNELWAY="$(readConfigKey "kernelway" "${USER_CONFIG_FILE}")" KERNELWAY="$(readConfigKey "kernelway" "${USER_CONFIG_FILE}")"
[ "${KERNELWAY}" = "kexec" ] && kexec -e || poweroff [ "${KERNELWAY}" = "kexec" ] && kexec -e || poweroff
fi
exit 0 exit 0
fi fi

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

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
25.9.4 25.9.5

View File

@ -1,251 +0,0 @@
#!/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,6 +242,34 @@ function getModules() {
echo "Getting Modules end" 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 # repack initrd
# $1 initrd file # $1 initrd file
# $2 plugin path # $2 plugin path

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

View File

@ -1,117 +0,0 @@
#!/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