From a85020c3ad494a1fb8fe1653cbfa10d3b0278b83 Mon Sep 17 00:00:00 2001 From: Ing Date: Tue, 9 May 2023 07:53:22 +0800 Subject: [PATCH] add 'external module' and 'restore bootloader disk' --- .../overlayfs/opt/arpl/include/modules.sh | 39 ++ .../arpl/overlayfs/opt/arpl/lang/arpl.pot | 562 ++++++++++-------- .../arpl/overlayfs/opt/arpl/lang/zh_CN.mo | Bin 16497 -> 18205 bytes .../arpl/overlayfs/opt/arpl/lang/zh_CN.po | 520 +++++++++------- files/board/arpl/overlayfs/opt/arpl/menu.sh | 247 +++++--- 5 files changed, 803 insertions(+), 565 deletions(-) diff --git a/files/board/arpl/overlayfs/opt/arpl/include/modules.sh b/files/board/arpl/overlayfs/opt/arpl/include/modules.sh index 09f2dc73..c9db3707 100644 --- a/files/board/arpl/overlayfs/opt/arpl/include/modules.sh +++ b/files/board/arpl/overlayfs/opt/arpl/include/modules.sh @@ -20,3 +20,42 @@ function getAllModules() { done rm -rf "${TMP_PATH}/modules" } + +############################################################################### +# add a ko of modules.tgz +# 1 - Platform +# 2 - Kernel Version +# 3 - ko file +function addToModules() { + PLATFORM=${1} + KVER=${2} + KOFILE=${3} + # Unzip modules for temporary folder + rm -rf "${TMP_PATH}/modules" + mkdir -p "${TMP_PATH}/modules" + gzip -dc "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" | tar xf - -C "${TMP_PATH}/modules" + cp -f ${KOFILE} ${TMP_PATH}/modules + tar -cf "${MODULES_PATH}/${PLATFORM}-${KVER}.tar" -C "${TMP_PATH}/modules" . + gzip -c "${MODULES_PATH}/${PLATFORM}-${KVER}.tar" > "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" + rm -rf "${MODULES_PATH}/${PLATFORM}-${KVER}.tar "${TMP_PATH}/modules" +} + + +############################################################################### +# del a ko of modules.tgz +# 1 - Platform +# 2 - Kernel Version +# 3 - ko name +function delToModules() { + PLATFORM=${1} + KVER=${2} + KONAME=${3} + # Unzip modules for temporary folder + rm -rf "${TMP_PATH}/modules" + mkdir -p "${TMP_PATH}/modules" + gzip -dc "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" | tar xf - -C "${TMP_PATH}/modules" + rm -f ${TMP_PATH}/modules/${KONAME} + tar -cf ${MODULES_PATH}/${PLATFORM}-${KVER}.tar -C ${TMP_PATH}/modules . + gzip -c ${MODULES_PATH}/${PLATFORM}-${KVER}.tar > ${MODULES_PATH}/${PLATFORM}-${KVER}.tgz + rm -rf "${MODULES_PATH}/${PLATFORM}-${KVER}.tar "${TMP_PATH}/modules" +} \ No newline at end of file diff --git a/files/board/arpl/overlayfs/opt/arpl/lang/arpl.pot b/files/board/arpl/overlayfs/opt/arpl/lang/arpl.pot index daaa4c0f..f32a4ed2 100644 --- a/files/board/arpl/overlayfs/opt/arpl/lang/arpl.pot +++ b/files/board/arpl/overlayfs/opt/arpl/lang/arpl.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-07 05:18+0800\n" +"POT-Creation-Date: 2023-05-09 07:43+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,12 +33,12 @@ msgstr "" msgid "DSM zImage changed" msgstr "" -#: boot.sh:27 boot.sh:39 menu.sh:589 menu.sh:615 menu.sh:684 menu.sh:695 -#: menu.sh:724 menu.sh:737 menu.sh:744 +#: boot.sh:27 boot.sh:39 menu.sh:705 menu.sh:731 menu.sh:800 menu.sh:811 +#: menu.sh:840 menu.sh:853 menu.sh:860 msgid "Error" msgstr "" -#: boot.sh:28 menu.sh:738 +#: boot.sh:28 menu.sh:854 msgid "zImage not patched:\\n" msgstr "" @@ -46,7 +46,7 @@ msgstr "" msgid "DSM Ramdisk changed" msgstr "" -#: boot.sh:40 menu.sh:745 +#: boot.sh:40 menu.sh:861 msgid "Ramdisk not patched:\\n" msgstr "" @@ -167,251 +167,335 @@ msgid "" "increase the amount of memory." msgstr "" -#: menu.sh:72 +#: menu.sh:74 msgid "Model" msgstr "" -#: menu.sh:73 +#: menu.sh:75 msgid "Reading models" msgstr "" -#: menu.sh:98 +#: menu.sh:100 msgid "Disable flags restriction" msgstr "" -#: menu.sh:99 +#: menu.sh:101 msgid "Show beta models" msgstr "" -#: menu.sh:100 +#: menu.sh:102 msgid "Choose the model" msgstr "" -#: menu.sh:139 +#: menu.sh:141 msgid "Choose a build number" msgstr "" -#: menu.sh:150 menu.sh:154 +#: menu.sh:152 menu.sh:156 msgid "Build Number" msgstr "" -#: menu.sh:151 +#: menu.sh:153 msgid "" "This version does not support UEFI startup, Please select another version or " "switch the startup mode." msgstr "" -#: menu.sh:155 +#: menu.sh:157 msgid "Reconfiguring Synoinfo, Addons and Modules" msgstr "" -#: menu.sh:189 menu.sh:238 menu.sh:357 menu.sh:470 menu.sh:1018 menu.sh:1164 +#: menu.sh:191 menu.sh:240 menu.sh:359 menu.sh:473 menu.sh:586 menu.sh:1241 msgid "Choose a option" msgstr "" -#: menu.sh:190 +#: menu.sh:192 msgid "Generate a random serial number" msgstr "" -#: menu.sh:191 +#: menu.sh:193 msgid "Enter a serial number" msgstr "" -#: menu.sh:199 +#: menu.sh:201 msgid "Please enter a serial number " msgstr "" -#: menu.sh:208 menu.sh:427 menu.sh:1111 menu.sh:1388 +#: menu.sh:210 menu.sh:543 menu.sh:1188 menu.sh:1465 msgid "Alert" msgstr "" -#: menu.sh:209 +#: menu.sh:211 msgid "Invalid serial, continue?" msgstr "" -#: menu.sh:239 +#: menu.sh:241 msgid "Add an addon" msgstr "" -#: menu.sh:240 +#: menu.sh:242 msgid "Delete addon(s)" msgstr "" -#: menu.sh:241 +#: menu.sh:243 msgid "Show user addons" msgstr "" -#: menu.sh:242 +#: menu.sh:244 msgid "Show all available addons" msgstr "" -#: menu.sh:243 +#: menu.sh:245 msgid "Download a external addon" msgstr "" -#: menu.sh:244 menu.sh:354 menu.sh:466 menu.sh:784 menu.sh:1023 menu.sh:1170 -#: menu.sh:1437 +#: menu.sh:246 menu.sh:365 menu.sh:470 menu.sh:582 menu.sh:900 menu.sh:1247 +#: menu.sh:1515 msgid "Exit" msgstr "" -#: menu.sh:255 +#: menu.sh:257 msgid "No available addons to add" msgstr "" -#: menu.sh:259 +#: menu.sh:261 msgid "Select an addon" msgstr "" -#: menu.sh:264 +#: menu.sh:266 msgid "Params" msgstr "" -#: menu.sh:265 +#: menu.sh:267 msgid "Type a opcional params to addon" msgstr "" -#: menu.sh:274 +#: menu.sh:276 msgid "No user addons to remove" msgstr "" -#: menu.sh:282 +#: menu.sh:284 msgid "Select addon to remove" msgstr "" -#: menu.sh:298 +#: menu.sh:300 msgid "User addons" msgstr "" -#: menu.sh:311 +#: menu.sh:313 msgid "Available addons" msgstr "" -#: menu.sh:315 +#: menu.sh:317 menu.sh:427 msgid "please enter the complete URL to download.\\n" msgstr "" -#: menu.sh:321 menu.sh:571 +#: menu.sh:323 menu.sh:433 menu.sh:687 msgid "Downloading %s" msgstr "" -#: menu.sh:324 menu.sh:581 menu.sh:644 +#: menu.sh:326 menu.sh:436 menu.sh:697 menu.sh:760 msgid "Error downloading" msgstr "" -#: menu.sh:325 +#: menu.sh:327 menu.sh:437 msgid "Check internet, URL or cache disk space" msgstr "" -#: menu.sh:330 +#: menu.sh:332 menu.sh:443 msgid "Success" msgstr "" -#: menu.sh:331 +#: menu.sh:333 msgid "Addon '%s' added to loader" msgstr "" -#: menu.sh:333 +#: menu.sh:335 msgid "Invalid addon" msgstr "" -#: menu.sh:334 +#: menu.sh:336 menu.sh:448 msgid "File format not recognized!" msgstr "" -#: menu.sh:349 -msgid "Add/edit a cmdline item" +#: menu.sh:347 menu.sh:376 menu.sh:387 menu.sh:400 menu.sh:406 menu.sh:1495 +msgid "Modules" msgstr "" -#: menu.sh:350 -msgid "Delete cmdline item(s)" +#: menu.sh:348 +msgid "Reading modules" msgstr "" -#: menu.sh:351 -msgid "Define a custom MAC" +#: menu.sh:360 +msgid "Show selected modules" msgstr "" -#: menu.sh:352 -msgid "Show user cmdline" +#: menu.sh:361 +msgid "Select all modules" msgstr "" -#: menu.sh:353 -msgid "Show model/build cmdline" -msgstr "" - -#: menu.sh:362 menu.sh:368 menu.sh:404 menu.sh:414 menu.sh:423 menu.sh:425 -#: menu.sh:438 -msgid "User cmdline" +#: menu.sh:362 +msgid "Deselect all modules" msgstr "" #: menu.sh:363 -msgid "Type a name of cmdline" +msgid "Choose modules to include" msgstr "" -#: menu.sh:369 -msgid "Type a value of '%s' cmdline" +#: menu.sh:364 menu.sh:424 +msgid "Download a external module" msgstr "" -#: menu.sh:378 -msgid "No user cmdline to remove" +#: menu.sh:373 +msgid "User modules" msgstr "" -#: menu.sh:386 -msgid "Select cmdline to remove" +#: menu.sh:377 +msgid "Selecting all modules" msgstr "" -#: menu.sh:405 -msgid "Type a custom MAC address of %s" +#: menu.sh:388 +msgid "Deselecting all modules" msgstr "" -#: menu.sh:414 -msgid "Invalid MAC" +#: menu.sh:401 +msgid "Select modules to include" +msgstr "" + +#: menu.sh:407 +msgid "Writing to user config" +msgstr "" + +#: menu.sh:419 +msgid "" +"This function is experimental and dangerous. If you don't know much, please " +"exit.\\n" +msgstr "" + +#: menu.sh:420 +msgid "" +"The imported .ko of this function will be implanted into the corresponding " +"arch's modules package, which will affect all models of the arch.\\n" +msgstr "" + +#: menu.sh:421 +msgid "" +"This program will not determine the availability of imported modules or even " +"make type judgments, as please double check if it is correct.\\n" +msgstr "" + +#: menu.sh:422 +msgid "" +"If you want to remove it, please go to the \"Update Menu\" -> \"Update " +"modules\" to forcibly update the modules. All imports will be reset.\\n" msgstr "" #: menu.sh:423 -msgid "Changing MAC" +msgid "Do you want to continue?" msgstr "" -#: menu.sh:425 -msgid "Renewing IP" +#: menu.sh:444 +msgid "Module '%s' added to %s-%s" msgstr "" -#: menu.sh:428 -msgid "Continue to custom MAC?" -msgstr "" - -#: menu.sh:446 -msgid "Model/build cmdline" -msgstr "" - -#: menu.sh:463 -msgid "Add/edit a synoinfo item" -msgstr "" - -#: menu.sh:464 -msgid "Delete synoinfo item(s)" +#: menu.sh:447 +msgid "Invalid module" msgstr "" #: menu.sh:465 +msgid "Add/edit a cmdline item" +msgstr "" + +#: menu.sh:466 +msgid "Delete cmdline item(s)" +msgstr "" + +#: menu.sh:467 +msgid "Define a custom MAC" +msgstr "" + +#: menu.sh:468 +msgid "Show user cmdline" +msgstr "" + +#: menu.sh:469 +msgid "Show model/build cmdline" +msgstr "" + +#: menu.sh:478 menu.sh:484 menu.sh:520 menu.sh:530 menu.sh:539 menu.sh:541 +#: menu.sh:554 +msgid "User cmdline" +msgstr "" + +#: menu.sh:479 +msgid "Type a name of cmdline" +msgstr "" + +#: menu.sh:485 +msgid "Type a value of '%s' cmdline" +msgstr "" + +#: menu.sh:494 +msgid "No user cmdline to remove" +msgstr "" + +#: menu.sh:502 +msgid "Select cmdline to remove" +msgstr "" + +#: menu.sh:521 +msgid "Type a custom MAC address of %s" +msgstr "" + +#: menu.sh:530 +msgid "Invalid MAC" +msgstr "" + +#: menu.sh:539 +msgid "Changing MAC" +msgstr "" + +#: menu.sh:541 +msgid "Renewing IP" +msgstr "" + +#: menu.sh:544 +msgid "Continue to custom MAC?" +msgstr "" + +#: menu.sh:562 +msgid "Model/build cmdline" +msgstr "" + +#: menu.sh:579 +msgid "Add/edit a synoinfo item" +msgstr "" + +#: menu.sh:580 +msgid "Delete synoinfo item(s)" +msgstr "" + +#: menu.sh:581 msgid "Show synoinfo entries" msgstr "" -#: menu.sh:475 menu.sh:481 menu.sh:516 +#: menu.sh:591 menu.sh:597 menu.sh:632 msgid "Synoinfo entries" msgstr "" -#: menu.sh:476 +#: menu.sh:592 msgid "Type a name of synoinfo entry" msgstr "" -#: menu.sh:482 +#: menu.sh:598 msgid "Type a value of '%s' synoinfo entry" msgstr "" -#: menu.sh:492 +#: menu.sh:608 msgid "No synoinfo entries to remove" msgstr "" -#: menu.sh:500 +#: menu.sh:616 msgid "Select synoinfo entry to remove" msgstr "" @@ -423,510 +507,486 @@ msgstr "" msgid "Get Offline hash..." msgstr "" -#: menu.sh:550 +#: menu.sh:666 msgid "%s cached." msgstr "" -#: menu.sh:554 +#: menu.sh:670 msgid "Cleaning cache" msgstr "" -#: menu.sh:566 +#: menu.sh:682 msgid "" "Based on the current network situation, switch to %s mirror to downloading." msgstr "" -#: menu.sh:582 menu.sh:645 +#: menu.sh:698 menu.sh:761 msgid "Check internet or cache disk space" msgstr "" -#: menu.sh:587 +#: menu.sh:703 msgid "Checking hash of %s: " msgstr "" -#: menu.sh:590 +#: menu.sh:706 msgid "Hash of pat not match, try again!" msgstr "" -#: menu.sh:594 menu.sh:688 menu.sh:699 menu.sh:710 +#: menu.sh:710 menu.sh:804 menu.sh:815 menu.sh:826 msgid "OK" msgstr "" -#: menu.sh:598 +#: menu.sh:714 msgid "Disassembling %s: " msgstr "" -#: menu.sh:603 +#: menu.sh:719 msgid "Uncompressed tar" msgstr "" -#: menu.sh:607 +#: menu.sh:723 msgid "Compressed tar" msgstr "" -#: menu.sh:611 +#: menu.sh:727 msgid "Encrypted" msgstr "" -#: menu.sh:616 +#: menu.sh:732 msgid "" "Could not determine if pat file is encrypted or not, maybe corrupted, try " "again!" msgstr "" -#: menu.sh:627 +#: menu.sh:743 msgid "Extractor cached." msgstr "" -#: menu.sh:634 +#: menu.sh:750 msgid "Downloading old pat to extract synology .pat extractor..." msgstr "" -#: menu.sh:656 menu.sh:676 +#: menu.sh:772 menu.sh:792 msgid "Error extracting" msgstr "" -#: menu.sh:670 menu.sh:673 +#: menu.sh:786 menu.sh:789 msgid "Extracting..." msgstr "" -#: menu.sh:680 +#: menu.sh:796 msgid "Checking hash of zImage: " msgstr "" -#: menu.sh:685 +#: menu.sh:801 msgid "Hash of zImage not match, try again!" msgstr "" -#: menu.sh:691 +#: menu.sh:807 msgid "Checking hash of ramdisk: " msgstr "" -#: menu.sh:696 +#: menu.sh:812 msgid "Hash of ramdisk not match, try again!" msgstr "" -#: menu.sh:702 +#: menu.sh:818 msgid "Copying files: " msgstr "" -#: menu.sh:725 +#: menu.sh:841 msgid "Addon %s not found!" msgstr "" -#: menu.sh:749 menu.sh:1455 +#: menu.sh:865 menu.sh:1534 msgid "Cleaning" msgstr "" -#: menu.sh:752 +#: menu.sh:868 msgid "Ready!" msgstr "" -#: menu.sh:765 menu.sh:1008 menu.sh:1034 menu.sh:1045 menu.sh:1058 menu.sh:1064 -msgid "Modules" -msgstr "" - -#: menu.sh:766 +#: menu.sh:881 msgid "Switch LKM version:" msgstr "" -#: menu.sh:769 +#: menu.sh:884 msgid "Switch direct boot:" msgstr "" -#: menu.sh:771 +#: menu.sh:886 msgid "Edit user config file manually" msgstr "" -#: menu.sh:772 +#: menu.sh:887 msgid "Try to recovery a DSM installed system" msgstr "" -#: menu.sh:773 +#: menu.sh:888 msgid "Show SATA(s) # ports and drives" msgstr "" -#: menu.sh:775 +#: menu.sh:890 msgid "show pat download link" msgstr "" -#: menu.sh:777 menu.sh:851 menu.sh:864 +#: menu.sh:892 menu.sh:966 menu.sh:979 msgid "Allow downgrade installation" msgstr "" -#: menu.sh:778 +#: menu.sh:893 msgid "Format disk(s) # Without loader disk" msgstr "" -#: menu.sh:779 menu.sh:893 menu.sh:896 +#: menu.sh:894 menu.sh:1008 menu.sh:1011 msgid "Persistence of arpl modifications" msgstr "" -#: menu.sh:781 +#: menu.sh:896 msgid "Custom dts file # Need rebuild" msgstr "" -#: menu.sh:783 +#: menu.sh:898 msgid "Backup bootloader disk # dd" msgstr "" -#: menu.sh:786 menu.sh:876 +#: menu.sh:899 +msgid "Restore bootloader disk # dd" +msgstr "" + +#: menu.sh:902 menu.sh:991 msgid "Advanced" msgstr "" -#: menu.sh:787 menu.sh:1440 +#: menu.sh:903 menu.sh:1518 msgid "Choose the option" msgstr "" -#: menu.sh:831 +#: menu.sh:946 msgid "\\nTotal of ports: %s\\n" msgstr "" -#: menu.sh:832 +#: menu.sh:947 msgid "" "\\nPorts with color \\Z1red\\Zn as DUMMY, color \\Z2\\Zbgreen\\Zn has drive " "connected." msgstr "" -#: menu.sh:833 +#: menu.sh:948 msgid "\\nRecommended value:" msgstr "" -#: menu.sh:834 +#: menu.sh:949 msgid "\\nDiskIdxMap:" msgstr "" -#: menu.sh:843 +#: menu.sh:958 msgid "*.pat download link" msgstr "" -#: menu.sh:848 +#: menu.sh:963 msgid "" "This feature will allow you to downgrade the installation by removing the " "VERSION file from the first partition of all disks.\\n" msgstr "" -#: menu.sh:849 +#: menu.sh:964 msgid "Therefore, please insert all disks before continuing.\\n" msgstr "" -#: menu.sh:850 menu.sh:881 +#: menu.sh:965 menu.sh:996 msgid "" "Warning:\\nThis operation is irreversible. Please backup important data. Do " "you want to continue?" msgstr "" -#: menu.sh:865 +#: menu.sh:980 msgid "Removing ..." msgstr "" -#: menu.sh:866 +#: menu.sh:981 msgid "Remove VERSION file for all disks completed." msgstr "" -#: menu.sh:875 menu.sh:880 menu.sh:887 +#: menu.sh:990 menu.sh:995 menu.sh:1002 msgid "Format disk" msgstr "" -#: menu.sh:888 +#: menu.sh:1003 msgid "Formatting ..." msgstr "" -#: menu.sh:890 +#: menu.sh:1005 msgid "Formatting is complete." msgstr "" -#: menu.sh:894 menu.sh:945 +#: menu.sh:1009 menu.sh:1060 menu.sh:1077 msgid "" "Warning:\\nDo not terminate midway, otherwise it may cause damage to the " "arpl. Do you want to continue?" msgstr "" -#: menu.sh:897 +#: menu.sh:1012 msgid "Persisting ..." msgstr "" -#: menu.sh:906 +#: menu.sh:1021 msgid "Persisting is complete." msgstr "" -#: menu.sh:911 menu.sh:941 +#: menu.sh:1026 menu.sh:1056 menu.sh:1073 msgid "This feature is only available when accessed via web/ssh." msgstr "" -#: menu.sh:915 +#: menu.sh:1030 msgid "" "Currently, only dts format files are supported. Please prepare and click to " "confirm uploading.\\n(saved in /mnt/p3/users/)" msgstr "" -#: menu.sh:929 menu.sh:934 +#: menu.sh:1044 menu.sh:1049 msgid "Custom dts file" msgstr "" -#: menu.sh:930 +#: menu.sh:1045 msgid "Not a valid dts file, please try again!" msgstr "" -#: menu.sh:935 +#: menu.sh:1050 msgid "A valid dts file, Automatically import at compile time." msgstr "" -#: menu.sh:944 menu.sh:947 +#: menu.sh:1059 menu.sh:1062 msgid "Backup bootloader disk" msgstr "" -#: menu.sh:948 +#: menu.sh:1063 msgid "Backuping..." msgstr "" -#: menu.sh:953 +#: menu.sh:1068 msgid "backup is complete." msgstr "" -#: menu.sh:963 menu.sh:991 menu.sh:998 +#: menu.sh:1076 menu.sh:1093 menu.sh:1096 menu.sh:1104 +msgid "Restore bootloader disk" +msgstr "" + +#: menu.sh:1094 +msgid "Not a valid .zip/.img.gz file, please try again!" +msgstr "" + +#: menu.sh:1097 +msgid "A valid file, Writing..." +msgstr "" + +#: menu.sh:1105 +msgid "Restore bootloader disk with success to %s!\\nReboot?" +msgstr "" + +#: menu.sh:1119 menu.sh:1147 menu.sh:1154 msgid "Try recovery DSM" msgstr "" -#: menu.sh:964 +#: menu.sh:1120 msgid "Trying to recovery a DSM installed system" msgstr "" -#: menu.sh:985 +#: menu.sh:1141 msgid "Found a installation:\\nModel: %s\\nBuildnumber: %s" msgstr "" -#: menu.sh:989 +#: menu.sh:1145 msgid "\\nSerial: %s" msgstr "" -#: menu.sh:999 +#: menu.sh:1155 msgid "Unfortunately I couldn't mount the DSM partition!" msgstr "" -#: menu.sh:1009 -msgid "Reading modules" -msgstr "" - -#: menu.sh:1019 -msgid "Show selected modules" -msgstr "" - -#: menu.sh:1020 -msgid "Select all modules" -msgstr "" - -#: menu.sh:1021 -msgid "Deselect all modules" -msgstr "" - -#: menu.sh:1022 -msgid "Choose modules to include" -msgstr "" - -#: menu.sh:1031 -msgid "User modules" -msgstr "" - -#: menu.sh:1035 -msgid "Selecting all modules" -msgstr "" - -#: menu.sh:1046 -msgid "Deselecting all modules" -msgstr "" - -#: menu.sh:1059 -msgid "Select modules to include" -msgstr "" - -#: menu.sh:1065 -msgid "Writing to user config" -msgstr "" - -#: menu.sh:1086 +#: menu.sh:1163 msgid "Edit with caution" msgstr "" -#: menu.sh:1092 +#: menu.sh:1169 msgid "Invalid YAML format" msgstr "" -#: menu.sh:1112 +#: menu.sh:1189 msgid "Config changed, would you like to rebuild the loader?" msgstr "" -#: menu.sh:1124 menu.sh:1431 +#: menu.sh:1201 menu.sh:1509 msgid "Choose a language" msgstr "" -#: menu.sh:1137 +#: menu.sh:1214 msgid "Choose a layout" msgstr "" -#: menu.sh:1147 +#: menu.sh:1224 msgid "Choice a keymap" msgstr "" -#: menu.sh:1165 menu.sh:1175 menu.sh:1183 menu.sh:1189 menu.sh:1193 -#: menu.sh:1198 menu.sh:1204 menu.sh:1211 menu.sh:1220 menu.sh:1225 -#: menu.sh:1242 +#: menu.sh:1242 menu.sh:1252 menu.sh:1260 menu.sh:1266 menu.sh:1270 +#: menu.sh:1275 menu.sh:1281 menu.sh:1288 menu.sh:1297 menu.sh:1302 +#: menu.sh:1319 msgid "Update arpl" msgstr "" -#: menu.sh:1166 menu.sh:1250 menu.sh:1258 menu.sh:1264 menu.sh:1268 -#: menu.sh:1272 menu.sh:1276 menu.sh:1281 menu.sh:1292 +#: menu.sh:1243 menu.sh:1327 menu.sh:1335 menu.sh:1341 menu.sh:1345 +#: menu.sh:1349 menu.sh:1353 menu.sh:1358 menu.sh:1369 msgid "Update addons" msgstr "" -#: menu.sh:1167 menu.sh:1297 menu.sh:1305 menu.sh:1311 menu.sh:1315 -#: menu.sh:1319 menu.sh:1334 +#: menu.sh:1244 menu.sh:1374 menu.sh:1382 menu.sh:1388 menu.sh:1392 +#: menu.sh:1396 menu.sh:1411 msgid "Update modules" msgstr "" -#: menu.sh:1168 menu.sh:1339 menu.sh:1347 menu.sh:1353 menu.sh:1357 -#: menu.sh:1361 menu.sh:1365 menu.sh:1370 +#: menu.sh:1245 menu.sh:1416 menu.sh:1424 menu.sh:1430 menu.sh:1434 +#: menu.sh:1438 menu.sh:1442 menu.sh:1447 msgid "Update LKMs" msgstr "" -#: menu.sh:1169 +#: menu.sh:1246 msgid "Set proxy server" msgstr "" -#: menu.sh:1176 menu.sh:1251 menu.sh:1298 menu.sh:1340 +#: menu.sh:1253 menu.sh:1328 menu.sh:1375 menu.sh:1417 msgid "Checking last version" msgstr "" -#: menu.sh:1184 menu.sh:1259 menu.sh:1306 menu.sh:1348 +#: menu.sh:1261 menu.sh:1336 menu.sh:1383 menu.sh:1425 msgid "Error checking new version" msgstr "" -#: menu.sh:1190 menu.sh:1265 menu.sh:1312 menu.sh:1354 +#: menu.sh:1267 menu.sh:1342 menu.sh:1389 menu.sh:1431 msgid "No new version. Actual version is %s\\nForce update?" msgstr "" -#: menu.sh:1194 +#: menu.sh:1271 msgid "Downloading last version %s" msgstr "" -#: menu.sh:1199 +#: menu.sh:1276 msgid "Error downloading update file" msgstr "" -#: menu.sh:1205 +#: menu.sh:1282 msgid "Error extracting update file" msgstr "" -#: menu.sh:1212 +#: menu.sh:1289 msgid "Checksum do not match!" msgstr "" -#: menu.sh:1221 +#: menu.sh:1298 msgid "" "The current version does not support upgrading to the latest update.zip. " "Please remake the bootloader disk!" msgstr "" -#: menu.sh:1226 +#: menu.sh:1303 msgid "Installing new files" msgstr "" -#: menu.sh:1243 +#: menu.sh:1320 msgid "Arpl updated with success to %s!\\nReboot?" msgstr "" -#: menu.sh:1269 menu.sh:1316 menu.sh:1358 +#: menu.sh:1346 menu.sh:1393 menu.sh:1435 msgid "Downloading last version" msgstr "" -#: menu.sh:1273 +#: menu.sh:1350 msgid "Error downloading new version" msgstr "" -#: menu.sh:1277 menu.sh:1366 +#: menu.sh:1354 menu.sh:1443 msgid "Extracting last version" msgstr "" -#: menu.sh:1282 +#: menu.sh:1359 msgid "Installing new addons" msgstr "" -#: menu.sh:1293 +#: menu.sh:1370 msgid "Addons updated with success!" msgstr "" -#: menu.sh:1320 menu.sh:1362 +#: menu.sh:1397 menu.sh:1439 msgid "Error downloading last version" msgstr "" -#: menu.sh:1335 +#: menu.sh:1412 msgid "Modules updated with success!" msgstr "" -#: menu.sh:1371 +#: menu.sh:1448 msgid "LKMs updated with success!" msgstr "" -#: menu.sh:1377 +#: menu.sh:1454 msgid "Set Proxy Server" msgstr "" -#: menu.sh:1378 +#: menu.sh:1455 msgid "Please enter a proxy server url" msgstr "" -#: menu.sh:1389 +#: menu.sh:1466 msgid "Invalid proxy server url, continue?" msgstr "" -#: menu.sh:1412 +#: menu.sh:1489 msgid "Choose a model" msgstr "" -#: menu.sh:1414 +#: menu.sh:1491 msgid "Choose a Build Number" msgstr "" -#: menu.sh:1415 +#: menu.sh:1492 msgid "Choose a serial number" msgstr "" -#: menu.sh:1417 +#: menu.sh:1494 msgid "Addons" msgstr "" -#: menu.sh:1418 +#: menu.sh:1496 msgid "Cmdline menu" msgstr "" -#: menu.sh:1419 +#: menu.sh:1497 msgid "Synoinfo menu" msgstr "" -#: menu.sh:1422 +#: menu.sh:1500 msgid "Advanced menu" msgstr "" -#: menu.sh:1425 +#: menu.sh:1503 msgid "Build the loader" msgstr "" -#: menu.sh:1429 +#: menu.sh:1507 msgid "Boot the loader" msgstr "" -#: menu.sh:1432 +#: menu.sh:1510 msgid "Choose a keymap" msgstr "" -#: menu.sh:1434 +#: menu.sh:1512 msgid "Clean disk cache" msgstr "" -#: menu.sh:1436 +#: menu.sh:1514 msgid "Update menu" msgstr "" -#: menu.sh:1462 +#: menu.sh:1541 msgid "Call \\033[1;32mmenu.sh\\033[0m to return to menu" msgstr "" diff --git a/files/board/arpl/overlayfs/opt/arpl/lang/zh_CN.mo b/files/board/arpl/overlayfs/opt/arpl/lang/zh_CN.mo index 0d9e5a7cd6cce1be99c3724cd143b4869dd7eada..27bf1a45ca6a764d8c0f825f7689a08aad40a643 100644 GIT binary patch delta 6534 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 Wr?$1W+C7Vj!+UAQE=*Y1;r{_O1;@4k delta 4881 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 diff --git a/files/board/arpl/overlayfs/opt/arpl/lang/zh_CN.po b/files/board/arpl/overlayfs/opt/arpl/lang/zh_CN.po index 1b041e7f..744952a9 100644 --- a/files/board/arpl/overlayfs/opt/arpl/lang/zh_CN.po +++ b/files/board/arpl/overlayfs/opt/arpl/lang/zh_CN.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: arpl-i18n\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-07 05:06+0800\n" -"PO-Revision-Date: 2023-05-07 05:06+0800\n" +"POT-Creation-Date: 2023-05-09 07:43+0800\n" +"PO-Revision-Date: 2023-05-09 07:43+0800\n" "Last-Translator: ing \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" @@ -32,12 +32,12 @@ msgstr "引导" msgid "DSM zImage changed" msgstr "DSM zImage 已更改" -#: boot.sh:27 boot.sh:39 menu.sh:589 menu.sh:615 menu.sh:684 menu.sh:695 -#: menu.sh:724 menu.sh:737 menu.sh:744 +#: boot.sh:27 boot.sh:39 menu.sh:705 menu.sh:731 menu.sh:800 menu.sh:811 +#: menu.sh:840 menu.sh:853 menu.sh:860 msgid "Error" msgstr "错误" -#: boot.sh:28 menu.sh:738 +#: boot.sh:28 menu.sh:854 msgid "zImage not patched:\\n" msgstr "zImage打补丁失败:\\n" @@ -45,7 +45,7 @@ msgstr "zImage打补丁失败:\\n" msgid "DSM Ramdisk changed" msgstr "DSM Ramdisk 已更改" -#: boot.sh:40 menu.sh:745 +#: boot.sh:40 menu.sh:861 msgid "Ramdisk not patched:\\n" msgstr "Ramdisk打补丁失败:\\n" @@ -166,251 +166,335 @@ msgid "" "increase the amount of memory." msgstr "您的RAM不足4GB, 如果在创建引导时出现错误,请增加内存." -#: menu.sh:72 +#: menu.sh:74 msgid "Model" msgstr "型号" -#: menu.sh:73 +#: menu.sh:75 msgid "Reading models" msgstr "读取型号" -#: menu.sh:98 +#: menu.sh:100 msgid "Disable flags restriction" msgstr "禁用标志限制" -#: menu.sh:99 +#: menu.sh:101 msgid "Show beta models" msgstr "显示测试型号" -#: menu.sh:100 +#: menu.sh:102 msgid "Choose the model" msgstr "选择型号" -#: menu.sh:139 +#: menu.sh:141 msgid "Choose a build number" msgstr "选择版本" -#: menu.sh:150 menu.sh:154 +#: menu.sh:152 menu.sh:156 msgid "Build Number" msgstr "版本" -#: menu.sh:151 +#: menu.sh:153 msgid "" "This version does not support UEFI startup, Please select another version or " "switch the startup mode." msgstr "该版本不支持UEFI启动, 请选择其他版本或者切换启动模式." -#: menu.sh:155 +#: menu.sh:157 msgid "Reconfiguring Synoinfo, Addons and Modules" msgstr "重新配置 Syninfo, 插件和模块" -#: menu.sh:189 menu.sh:238 menu.sh:357 menu.sh:470 menu.sh:1018 menu.sh:1164 +#: menu.sh:191 menu.sh:240 menu.sh:359 menu.sh:473 menu.sh:586 menu.sh:1241 msgid "Choose a option" msgstr "设置" -#: menu.sh:190 +#: menu.sh:192 msgid "Generate a random serial number" msgstr "生成随机SN" -#: menu.sh:191 +#: menu.sh:193 msgid "Enter a serial number" msgstr "输入SN" -#: menu.sh:199 +#: menu.sh:201 msgid "Please enter a serial number " msgstr "请输入SN " -#: menu.sh:208 menu.sh:427 menu.sh:1111 menu.sh:1388 +#: menu.sh:210 menu.sh:543 menu.sh:1188 menu.sh:1465 msgid "Alert" msgstr "警告" -#: menu.sh:209 +#: menu.sh:211 msgid "Invalid serial, continue?" msgstr "SN无效, 是否继续?" -#: menu.sh:239 +#: menu.sh:241 msgid "Add an addon" msgstr "添加插件" -#: menu.sh:240 +#: menu.sh:242 msgid "Delete addon(s)" msgstr "删除插件(s)" -#: menu.sh:241 +#: menu.sh:243 msgid "Show user addons" msgstr "显示用户插件" -#: menu.sh:242 +#: menu.sh:244 msgid "Show all available addons" msgstr "显示所有可用插件" -#: menu.sh:243 +#: menu.sh:245 msgid "Download a external addon" msgstr "下载外部插件" -#: menu.sh:244 menu.sh:354 menu.sh:466 menu.sh:784 menu.sh:1023 menu.sh:1170 -#: menu.sh:1437 +#: menu.sh:246 menu.sh:365 menu.sh:470 menu.sh:582 menu.sh:900 menu.sh:1247 +#: menu.sh:1515 msgid "Exit" msgstr "退出" -#: menu.sh:255 +#: menu.sh:257 msgid "No available addons to add" msgstr "没有可用的插件可添加" -#: menu.sh:259 +#: menu.sh:261 msgid "Select an addon" msgstr "选择插件" -#: menu.sh:264 +#: menu.sh:266 msgid "Params" msgstr "参数" -#: menu.sh:265 +#: menu.sh:267 msgid "Type a opcional params to addon" msgstr "输入插件的加载参数" -#: menu.sh:274 +#: menu.sh:276 msgid "No user addons to remove" msgstr "没有要删除的用户插件" -#: menu.sh:282 +#: menu.sh:284 msgid "Select addon to remove" msgstr "选择要删除的插件" -#: menu.sh:298 +#: menu.sh:300 msgid "User addons" msgstr "用户插件" -#: menu.sh:311 +#: menu.sh:313 msgid "Available addons" msgstr "可用插件" -#: menu.sh:315 +#: menu.sh:317 menu.sh:427 msgid "please enter the complete URL to download.\\n" msgstr "请输入下载URL.\\n" -#: menu.sh:321 menu.sh:571 +#: menu.sh:323 menu.sh:433 menu.sh:687 msgid "Downloading %s" msgstr "下载 %s 中" -#: menu.sh:324 menu.sh:581 menu.sh:644 +#: menu.sh:326 menu.sh:436 menu.sh:697 menu.sh:760 msgid "Error downloading" msgstr "下载失败" -#: menu.sh:325 +#: menu.sh:327 menu.sh:437 msgid "Check internet, URL or cache disk space" msgstr "请检查internet, URL或磁盘空间" -#: menu.sh:330 +#: menu.sh:332 menu.sh:443 msgid "Success" msgstr "下载成功" -#: menu.sh:331 +#: menu.sh:333 msgid "Addon '%s' added to loader" msgstr "插件 '%s' 添加到引导中" -#: menu.sh:333 +#: menu.sh:335 msgid "Invalid addon" msgstr "无效插件" -#: menu.sh:334 +#: menu.sh:336 menu.sh:448 msgid "File format not recognized!" msgstr "文件格式无法识别!" -#: menu.sh:349 +#: menu.sh:347 menu.sh:376 menu.sh:387 menu.sh:400 menu.sh:406 menu.sh:1495 +msgid "Modules" +msgstr "模块" + +#: menu.sh:348 +msgid "Reading modules" +msgstr "读取模块中" + +#: menu.sh:360 +msgid "Show selected modules" +msgstr "显示已加载的模块" + +#: menu.sh:361 +msgid "Select all modules" +msgstr "选择所有模块" + +#: menu.sh:362 +msgid "Deselect all modules" +msgstr "取消所有模块" + +#: menu.sh:363 +msgid "Choose modules to include" +msgstr "选择要加载的模块" + +#: menu.sh:364 menu.sh:424 +msgid "Download a external module" +msgstr "下载一个外部模块" + +#: menu.sh:373 +msgid "User modules" +msgstr "模块" + +#: menu.sh:377 +msgid "Selecting all modules" +msgstr "全选所有模块" + +#: menu.sh:388 +msgid "Deselecting all modules" +msgstr "取消所有模块" + +#: menu.sh:401 +msgid "Select modules to include" +msgstr "选择要加载的插件" + +#: menu.sh:407 +msgid "Writing to user config" +msgstr "写入用户配置" + +#: menu.sh:419 +msgid "" +"This function is experimental and dangerous. If you don't know much, please " +"exit.\\n" +msgstr "该功能是实验性的且危险的, 如果你不了解, 请退出.\\n" + +#: menu.sh:420 +msgid "" +"The imported .ko of this function will be implanted into the corresponding " +"arch's modules package, which will affect all models of the arch.\\n" +msgstr "该功能导入 .ko 将被植入相应的架构的模块包中, 这将影响该架构的所有型号.\\n" + +#: menu.sh:421 +msgid "" +"This program will not determine the availability of imported modules or even " +"make type judgments, as please double check if it is correct.\\n" +msgstr "该程序不会判断导入的驱动模块的可用性, 甚至不会做类型判断, 因从请你再三确认是否正确.\\n" + +#: menu.sh:422 +msgid "" +"If you want to remove it, please go to the \"Update Menu\" -> \"Update " +"modules\" to forcibly update the modules. All imports will be reset.\\n" +msgstr "如果您想删除它, 请转到 \"更新\"->\"更新模块\" 强制更新模块, 所有导入都将被重置.\\n" + +#: menu.sh:423 +msgid "Do you want to continue?" +msgstr "是否继续?" + +#: menu.sh:444 +msgid "Module '%s' added to %s-%s" +msgstr "模块 '%s' 已添加到 %s-%s" + +#: menu.sh:447 +msgid "Invalid module" +msgstr "无效模块" + +#: menu.sh:465 msgid "Add/edit a cmdline item" msgstr "添加/编辑cmdline参数" -#: menu.sh:350 +#: menu.sh:466 msgid "Delete cmdline item(s)" msgstr "删除cmdline参数(s)" -#: menu.sh:351 +#: menu.sh:467 msgid "Define a custom MAC" msgstr "自定义MAC" -#: menu.sh:352 +#: menu.sh:468 msgid "Show user cmdline" msgstr "显示用户cmdline参数" -#: menu.sh:353 +#: menu.sh:469 msgid "Show model/build cmdline" msgstr "显示型号默认cmdline参数" -#: menu.sh:362 menu.sh:368 menu.sh:404 menu.sh:414 menu.sh:423 menu.sh:425 -#: menu.sh:438 +#: menu.sh:478 menu.sh:484 menu.sh:520 menu.sh:530 menu.sh:539 menu.sh:541 +#: menu.sh:554 msgid "User cmdline" msgstr "用户cmdline参数" -#: menu.sh:363 +#: menu.sh:479 msgid "Type a name of cmdline" msgstr "输入参数的名称" -#: menu.sh:369 +#: menu.sh:485 msgid "Type a value of '%s' cmdline" msgstr "输入 '%s' 参数的值" -#: menu.sh:378 +#: menu.sh:494 msgid "No user cmdline to remove" msgstr "没有用户参数被删除" -#: menu.sh:386 +#: menu.sh:502 msgid "Select cmdline to remove" msgstr "选择要删除的参数" -#: menu.sh:405 +#: menu.sh:521 msgid "Type a custom MAC address of %s" msgstr "输入 %s 的自定义MAC地址" -#: menu.sh:414 +#: menu.sh:530 msgid "Invalid MAC" msgstr "无效的MAC" -#: menu.sh:423 +#: menu.sh:539 msgid "Changing MAC" msgstr "修改MAC" -#: menu.sh:425 +#: menu.sh:541 msgid "Renewing IP" msgstr "刷新IP" -#: menu.sh:428 +#: menu.sh:544 msgid "Continue to custom MAC?" msgstr "继续自定义MAC?" -#: menu.sh:446 +#: menu.sh:562 msgid "Model/build cmdline" msgstr "型号默认cmdline参数" -#: menu.sh:463 +#: menu.sh:579 msgid "Add/edit a synoinfo item" msgstr "添加/编辑Synoinfo参数" -#: menu.sh:464 +#: menu.sh:580 msgid "Delete synoinfo item(s)" msgstr "删除Synoinfo参数(s)" -#: menu.sh:465 +#: menu.sh:581 msgid "Show synoinfo entries" msgstr "显示Synoinfo参数" -#: menu.sh:475 menu.sh:481 menu.sh:516 +#: menu.sh:591 menu.sh:597 menu.sh:632 msgid "Synoinfo entries" msgstr "Synoinfo参数" -#: menu.sh:476 +#: menu.sh:592 msgid "Type a name of synoinfo entry" msgstr "输入参数的名称" -#: menu.sh:482 +#: menu.sh:598 msgid "Type a value of '%s' synoinfo entry" msgstr "输入 '%s' 参数的值" -#: menu.sh:492 +#: menu.sh:608 msgid "No synoinfo entries to remove" msgstr "没有Synoinfo参数被删除" -#: menu.sh:500 +#: menu.sh:616 msgid "Select synoinfo entry to remove" msgstr "选择要删除的参数" @@ -422,510 +506,486 @@ msgstr "获取线上 hash..." msgid "Get Offline hash..." msgstr "获取本地 hash..." -#: menu.sh:550 +#: menu.sh:666 msgid "%s cached." msgstr "%s 已缓存." -#: menu.sh:554 +#: menu.sh:670 msgid "Cleaning cache" msgstr "清除缓存" -#: menu.sh:566 +#: menu.sh:682 msgid "" "Based on the current network situation, switch to %s mirror to downloading." msgstr "根据当前的网络状况, 已切换到 %s 镜像服务器进行下载." -#: menu.sh:582 menu.sh:645 +#: menu.sh:698 menu.sh:761 msgid "Check internet or cache disk space" msgstr "请检查internet或磁盘空间" -#: menu.sh:587 +#: menu.sh:703 msgid "Checking hash of %s: " msgstr "检查 %s 的 hash: " -#: menu.sh:590 +#: menu.sh:706 msgid "Hash of pat not match, try again!" msgstr "pat的Hash不匹配, 请重试!" -#: menu.sh:594 menu.sh:688 menu.sh:699 menu.sh:710 +#: menu.sh:710 menu.sh:804 menu.sh:815 menu.sh:826 msgid "OK" msgstr "OK" -#: menu.sh:598 +#: menu.sh:714 msgid "Disassembling %s: " msgstr "解压 %s: " -#: menu.sh:603 +#: menu.sh:719 msgid "Uncompressed tar" msgstr "未压缩tar" -#: menu.sh:607 +#: menu.sh:723 msgid "Compressed tar" msgstr "压缩tar" -#: menu.sh:611 +#: menu.sh:727 msgid "Encrypted" msgstr "已加密" -#: menu.sh:616 +#: menu.sh:732 msgid "" "Could not determine if pat file is encrypted or not, maybe corrupted, try " "again!" msgstr "无法确定pat文件是否加密, 可能已损坏, 请重试!" -#: menu.sh:627 +#: menu.sh:743 msgid "Extractor cached." msgstr "已存在解密程序." -#: menu.sh:634 +#: menu.sh:750 msgid "Downloading old pat to extract synology .pat extractor..." msgstr "下载旧 pat, 提取 .pat 解密程序中..." -#: menu.sh:656 menu.sh:676 +#: menu.sh:772 menu.sh:792 msgid "Error extracting" msgstr "解压失败" -#: menu.sh:670 menu.sh:673 +#: menu.sh:786 menu.sh:789 msgid "Extracting..." msgstr "解压中..." -#: menu.sh:680 +#: menu.sh:796 msgid "Checking hash of zImage: " msgstr "检查 zImage 的 hash: " -#: menu.sh:685 +#: menu.sh:801 msgid "Hash of zImage not match, try again!" msgstr "zImage的Hash不匹配, 请重试!" -#: menu.sh:691 +#: menu.sh:807 msgid "Checking hash of ramdisk: " msgstr "检查 ramdisk 的 hash: " -#: menu.sh:696 +#: menu.sh:812 msgid "Hash of ramdisk not match, try again!" msgstr "ramdisk的Hash不匹配, 请重试!" -#: menu.sh:702 +#: menu.sh:818 msgid "Copying files: " msgstr "拷贝文件: " -#: menu.sh:725 +#: menu.sh:841 msgid "Addon %s not found!" msgstr "插件 %s 未找到!" -#: menu.sh:749 menu.sh:1455 +#: menu.sh:865 menu.sh:1534 msgid "Cleaning" msgstr "清除中" -#: menu.sh:752 +#: menu.sh:868 msgid "Ready!" msgstr "已就绪!" -#: menu.sh:765 menu.sh:1008 menu.sh:1034 menu.sh:1045 menu.sh:1058 menu.sh:1064 -msgid "Modules" -msgstr "模块" - -#: menu.sh:766 +#: menu.sh:881 msgid "Switch LKM version:" msgstr "选择LKM版本:" -#: menu.sh:769 +#: menu.sh:884 msgid "Switch direct boot:" msgstr "切换直接启动:" -#: menu.sh:771 +#: menu.sh:886 msgid "Edit user config file manually" msgstr "编辑用户配置文件" -#: menu.sh:772 +#: menu.sh:887 msgid "Try to recovery a DSM installed system" msgstr "尝试恢复已安装DSM的系统" -#: menu.sh:773 +#: menu.sh:888 msgid "Show SATA(s) # ports and drives" msgstr "显示SATA(s) # 端口和驱动器" -#: menu.sh:775 +#: menu.sh:890 msgid "show pat download link" msgstr "当前pat下载链接" -#: menu.sh:777 menu.sh:851 menu.sh:864 +#: menu.sh:892 menu.sh:966 menu.sh:979 msgid "Allow downgrade installation" msgstr "允许降级安装" -#: menu.sh:778 +#: menu.sh:893 msgid "Format disk(s) # Without loader disk" msgstr "格式化磁盘(s) # 不含启动盘" -#: menu.sh:779 menu.sh:893 menu.sh:896 +#: menu.sh:894 menu.sh:1008 menu.sh:1011 msgid "Persistence of arpl modifications" msgstr "持久化arpl的修改" -#: menu.sh:781 +#: menu.sh:896 msgid "Custom dts file # Need rebuild" msgstr "自定义 dts 文件 # 需要重新编译" -#: menu.sh:783 +#: menu.sh:898 msgid "Backup bootloader disk # dd" -msgstr "备份启动盘" +msgstr "备份启动盘 # dd" -#: menu.sh:786 menu.sh:876 +#: menu.sh:899 +msgid "Restore bootloader disk # dd" +msgstr "恢复启动盘 # dd" + +#: menu.sh:902 menu.sh:991 msgid "Advanced" msgstr "高级" -#: menu.sh:787 menu.sh:1440 +#: menu.sh:903 menu.sh:1518 msgid "Choose the option" msgstr "设置" -#: menu.sh:831 +#: menu.sh:946 msgid "\\nTotal of ports: %s\\n" msgstr "\\n端口总数: %s\\n" -#: menu.sh:832 +#: menu.sh:947 msgid "" "\\nPorts with color \\Z1red\\Zn as DUMMY, color \\Z2\\Zbgreen\\Zn has drive " "connected." msgstr "\\n\\Z1红色\\Zn 为模拟端口, \\Z2\\Zb绿色\\Zn 为已驱动的物理端口." -#: menu.sh:833 +#: menu.sh:948 msgid "\\nRecommended value:" msgstr "\\n建议值:" -#: menu.sh:834 +#: menu.sh:949 msgid "\\nDiskIdxMap:" msgstr "\\nDiskIdxMap:" -#: menu.sh:843 +#: menu.sh:958 msgid "*.pat download link" msgstr "*.pat 下载链接" -#: menu.sh:848 +#: menu.sh:963 msgid "" "This feature will allow you to downgrade the installation by removing the " "VERSION file from the first partition of all disks.\\n" msgstr "此功能通过删除所有磁盘的第一个分区的VERSION文件来允许你降级安装.\\n" -#: menu.sh:849 +#: menu.sh:964 msgid "Therefore, please insert all disks before continuing.\\n" msgstr "因此, 请插入所有磁盘后再进行操作.\\n" -#: menu.sh:850 menu.sh:881 +#: menu.sh:965 menu.sh:996 msgid "" "Warning:\\nThis operation is irreversible. Please backup important data. Do " "you want to continue?" msgstr "警告:\\n该操作不可逆, 请提前备份重要数据. 是否继续?" -#: menu.sh:865 +#: menu.sh:980 msgid "Removing ..." msgstr "删除中..." -#: menu.sh:866 +#: menu.sh:981 msgid "Remove VERSION file for all disks completed." msgstr "已移除所有磁盘的 VERSION 文件." -#: menu.sh:875 menu.sh:880 menu.sh:887 +#: menu.sh:990 menu.sh:995 menu.sh:1002 msgid "Format disk" msgstr "格式化磁盘" -#: menu.sh:888 +#: menu.sh:1003 msgid "Formatting ..." msgstr "格式化中..." -#: menu.sh:890 +#: menu.sh:1005 msgid "Formatting is complete." msgstr "格式化完成." -#: menu.sh:894 menu.sh:945 +#: menu.sh:1009 menu.sh:1060 menu.sh:1077 msgid "" "Warning:\\nDo not terminate midway, otherwise it may cause damage to the " "arpl. Do you want to continue?" msgstr "警告:\\n请不要中途停止, 否则将导致arpl引导损毁, 是否继续?" -#: menu.sh:897 +#: menu.sh:1012 msgid "Persisting ..." msgstr "持久化中..." -#: menu.sh:906 +#: menu.sh:1021 msgid "Persisting is complete." msgstr "持久化完成." -#: menu.sh:911 menu.sh:941 +#: menu.sh:1026 menu.sh:1056 menu.sh:1073 msgid "This feature is only available when accessed via web/ssh." msgstr "此功能仅通过web/ssh访问时可用." -#: menu.sh:915 +#: menu.sh:1030 msgid "" "Currently, only dts format files are supported. Please prepare and click to " "confirm uploading.\\n(saved in /mnt/p3/users/)" msgstr "目前, 只支持dts格式的文件, 请准备并点击确认上传.\\n(保存于 /mnt/p3/users/ 中)" -#: menu.sh:929 menu.sh:934 +#: menu.sh:1044 menu.sh:1049 msgid "Custom dts file" msgstr "自定义 dts 文件" -#: menu.sh:930 +#: menu.sh:1045 msgid "Not a valid dts file, please try again!" msgstr "dts 文件无效, 请重试!" -#: menu.sh:935 +#: menu.sh:1050 msgid "A valid dts file, Automatically import at compile time." msgstr "dts 文件有效, 将在编译时自动导入." -#: menu.sh:944 menu.sh:947 +#: menu.sh:1059 menu.sh:1062 msgid "Backup bootloader disk" msgstr "备份启动盘" -#: menu.sh:948 +#: menu.sh:1063 msgid "Backuping..." msgstr "备份中..." -#: menu.sh:953 +#: menu.sh:1068 msgid "backup is complete." msgstr "备份完成." -#: menu.sh:963 menu.sh:991 menu.sh:998 +#: menu.sh:1076 menu.sh:1093 menu.sh:1096 menu.sh:1104 +msgid "Restore bootloader disk" +msgstr "恢复启动盘" + +#: menu.sh:1094 +msgid "Not a valid .zip/.img.gz file, please try again!" +msgstr "不是有效的.zip/.img.gz文件, 请重试!" + +#: menu.sh:1097 +msgid "A valid file, Writing..." +msgstr "有效的文件, 写入中..." + +#: menu.sh:1105 +msgid "Restore bootloader disk with success to %s!\\nReboot?" +msgstr "成功恢复启动盘到 %s!\\n重启?" + +#: menu.sh:1119 menu.sh:1147 menu.sh:1154 msgid "Try recovery DSM" msgstr "尝试恢复DSM系统" -#: menu.sh:964 +#: menu.sh:1120 msgid "Trying to recovery a DSM installed system" msgstr "尝试恢复已安装的DSM系统中" -#: menu.sh:985 +#: menu.sh:1141 msgid "Found a installation:\\nModel: %s\\nBuildnumber: %s" msgstr "找到已安装:\\n型号: %s\\n版本: %s" -#: menu.sh:989 +#: menu.sh:1145 msgid "\\nSerial: %s" msgstr "\\nSN: %s" -#: menu.sh:999 +#: menu.sh:1155 msgid "Unfortunately I couldn't mount the DSM partition!" msgstr "很遗憾, 我无法挂载DSM分区!" -#: menu.sh:1009 -msgid "Reading modules" -msgstr "读取模块中" - -#: menu.sh:1019 -msgid "Show selected modules" -msgstr "显示已加载的模块" - -#: menu.sh:1020 -msgid "Select all modules" -msgstr "选择所有模块" - -#: menu.sh:1021 -msgid "Deselect all modules" -msgstr "取消所有模块" - -#: menu.sh:1022 -msgid "Choose modules to include" -msgstr "选择要加载的模块" - -#: menu.sh:1031 -msgid "User modules" -msgstr "模块" - -#: menu.sh:1035 -msgid "Selecting all modules" -msgstr "全选所有模块" - -#: menu.sh:1046 -msgid "Deselecting all modules" -msgstr "取消所有模块" - -#: menu.sh:1059 -msgid "Select modules to include" -msgstr "选择要加载的插件" - -#: menu.sh:1065 -msgid "Writing to user config" -msgstr "写入用户配置" - -#: menu.sh:1086 +#: menu.sh:1163 msgid "Edit with caution" msgstr "请谨慎编辑" -#: menu.sh:1092 +#: menu.sh:1169 msgid "Invalid YAML format" msgstr "无效的YAML格式" -#: menu.sh:1112 +#: menu.sh:1189 msgid "Config changed, would you like to rebuild the loader?" msgstr "配置已更改, 是否重新编译引导?" -#: menu.sh:1124 menu.sh:1431 +#: menu.sh:1201 menu.sh:1509 msgid "Choose a language" msgstr "选择语言" -#: menu.sh:1137 +#: menu.sh:1214 msgid "Choose a layout" msgstr "选择布局" -#: menu.sh:1147 +#: menu.sh:1224 msgid "Choice a keymap" msgstr "选择键盘" -#: menu.sh:1165 menu.sh:1175 menu.sh:1183 menu.sh:1189 menu.sh:1193 -#: menu.sh:1198 menu.sh:1204 menu.sh:1211 menu.sh:1220 menu.sh:1225 -#: menu.sh:1242 +#: menu.sh:1242 menu.sh:1252 menu.sh:1260 menu.sh:1266 menu.sh:1270 +#: menu.sh:1275 menu.sh:1281 menu.sh:1288 menu.sh:1297 menu.sh:1302 +#: menu.sh:1319 msgid "Update arpl" msgstr "更新arpl" -#: menu.sh:1166 menu.sh:1250 menu.sh:1258 menu.sh:1264 menu.sh:1268 -#: menu.sh:1272 menu.sh:1276 menu.sh:1281 menu.sh:1292 +#: menu.sh:1243 menu.sh:1327 menu.sh:1335 menu.sh:1341 menu.sh:1345 +#: menu.sh:1349 menu.sh:1353 menu.sh:1358 menu.sh:1369 msgid "Update addons" msgstr "更新插件" -#: menu.sh:1167 menu.sh:1297 menu.sh:1305 menu.sh:1311 menu.sh:1315 -#: menu.sh:1319 menu.sh:1334 +#: menu.sh:1244 menu.sh:1374 menu.sh:1382 menu.sh:1388 menu.sh:1392 +#: menu.sh:1396 menu.sh:1411 msgid "Update modules" msgstr "更新模块" -#: menu.sh:1168 menu.sh:1339 menu.sh:1347 menu.sh:1353 menu.sh:1357 -#: menu.sh:1361 menu.sh:1365 menu.sh:1370 +#: menu.sh:1245 menu.sh:1416 menu.sh:1424 menu.sh:1430 menu.sh:1434 +#: menu.sh:1438 menu.sh:1442 menu.sh:1447 msgid "Update LKMs" msgstr "更新LKMs" -#: menu.sh:1169 +#: menu.sh:1246 msgid "Set proxy server" msgstr "设置代理" -#: menu.sh:1176 menu.sh:1251 menu.sh:1298 menu.sh:1340 +#: menu.sh:1253 menu.sh:1328 menu.sh:1375 menu.sh:1417 msgid "Checking last version" msgstr "检测新版本中" -#: menu.sh:1184 menu.sh:1259 menu.sh:1306 menu.sh:1348 +#: menu.sh:1261 menu.sh:1336 menu.sh:1383 menu.sh:1425 msgid "Error checking new version" msgstr "检测新版本错误" -#: menu.sh:1190 menu.sh:1265 menu.sh:1312 menu.sh:1354 +#: menu.sh:1267 menu.sh:1342 menu.sh:1389 menu.sh:1431 msgid "No new version. Actual version is %s\\nForce update?" msgstr "没有新版本. 实际版本为 %s\\n强制更新?" -#: menu.sh:1194 +#: menu.sh:1271 msgid "Downloading last version %s" msgstr "下载新版本 %s 中" -#: menu.sh:1199 +#: menu.sh:1276 msgid "Error downloading update file" msgstr "下载新版本错误" -#: menu.sh:1205 +#: menu.sh:1282 msgid "Error extracting update file" msgstr "更新文件解压错误" -#: menu.sh:1212 +#: menu.sh:1289 msgid "Checksum do not match!" msgstr "Checksum不匹配!" -#: menu.sh:1221 +#: menu.sh:1298 msgid "" "The current version does not support upgrading to the latest update.zip. " "Please remake the bootloader disk!" msgstr "当前版本不支持最新的update.zip升级, 请重新制作引导盘!" -#: menu.sh:1226 +#: menu.sh:1303 msgid "Installing new files" msgstr "安装更新中" -#: menu.sh:1243 +#: menu.sh:1320 msgid "Arpl updated with success to %s!\\nReboot?" msgstr "Arpl更新成功 %s!\\n重启?" -#: menu.sh:1269 menu.sh:1316 menu.sh:1358 +#: menu.sh:1346 menu.sh:1393 menu.sh:1435 msgid "Downloading last version" msgstr "下载新版本中" -#: menu.sh:1273 +#: menu.sh:1350 msgid "Error downloading new version" msgstr "下载新版本错误" -#: menu.sh:1277 menu.sh:1366 +#: menu.sh:1354 menu.sh:1443 msgid "Extracting last version" msgstr "解压新版本" -#: menu.sh:1282 +#: menu.sh:1359 msgid "Installing new addons" msgstr "安装新插件中" -#: menu.sh:1293 +#: menu.sh:1370 msgid "Addons updated with success!" msgstr "插件更新成功!" -#: menu.sh:1320 menu.sh:1362 +#: menu.sh:1397 menu.sh:1439 msgid "Error downloading last version" msgstr "下载新版本错误" -#: menu.sh:1335 +#: menu.sh:1412 msgid "Modules updated with success!" msgstr "模块更新成功!" -#: menu.sh:1371 +#: menu.sh:1448 msgid "LKMs updated with success!" msgstr "LKMs更新成功!" -#: menu.sh:1377 +#: menu.sh:1454 msgid "Set Proxy Server" msgstr "设置代理" -#: menu.sh:1378 +#: menu.sh:1455 msgid "Please enter a proxy server url" msgstr "请输入代理服务器url" -#: menu.sh:1389 +#: menu.sh:1466 msgid "Invalid proxy server url, continue?" msgstr "无效的代理服务器url,是否继续?" -#: menu.sh:1412 +#: menu.sh:1489 msgid "Choose a model" msgstr "选择型号" -#: menu.sh:1414 +#: menu.sh:1491 msgid "Choose a Build Number" msgstr "选择版本" -#: menu.sh:1415 +#: menu.sh:1492 msgid "Choose a serial number" msgstr "选择SN" -#: menu.sh:1417 +#: menu.sh:1494 msgid "Addons" msgstr "插件" -#: menu.sh:1418 +#: menu.sh:1496 msgid "Cmdline menu" msgstr "设置Cmdline" -#: menu.sh:1419 +#: menu.sh:1497 msgid "Synoinfo menu" msgstr "设置Synoinfo" -#: menu.sh:1422 +#: menu.sh:1500 msgid "Advanced menu" msgstr "高级设置" -#: menu.sh:1425 +#: menu.sh:1503 msgid "Build the loader" msgstr "编译引导" -#: menu.sh:1429 +#: menu.sh:1507 msgid "Boot the loader" msgstr "启动" -#: menu.sh:1432 +#: menu.sh:1510 msgid "Choose a keymap" msgstr "选择键盘" -#: menu.sh:1434 +#: menu.sh:1512 msgid "Clean disk cache" msgstr "清除磁盘缓存" -#: menu.sh:1436 +#: menu.sh:1514 msgid "Update menu" msgstr "更新" -#: menu.sh:1462 +#: menu.sh:1541 msgid "Call \\033[1;32mmenu.sh\\033[0m to return to menu" msgstr "执行 \\033[1;32mmenu.sh\\033[0m 重新进入设置菜单" diff --git a/files/board/arpl/overlayfs/opt/arpl/menu.sh b/files/board/arpl/overlayfs/opt/arpl/menu.sh index 33b99333..ea00ebbd 100755 --- a/files/board/arpl/overlayfs/opt/arpl/menu.sh +++ b/files/board/arpl/overlayfs/opt/arpl/menu.sh @@ -17,6 +17,8 @@ IP=`ip route 2>/dev/null | sed -n 's/.* via .* dev \(.*\) src \(.*\) metric .* # Dirty flag DIRTY=0 +# Debug flag +DEBUG=0 MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`" BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`" @@ -338,6 +340,120 @@ function addonMenu() { esac done } +############################################################################### +function moduleMenu() { + PLATFORM="`readModelKey "${MODEL}" "platform"`" + KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`" + dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" --aspect 18 \ + --infobox "$(TEXT "Reading modules")" 0 0 + ALLMODULES=`getAllModules "${PLATFORM}" "${KVER}"` + unset USERMODULES + declare -A USERMODULES + while IFS=': ' read KEY VALUE; do + [ -n "${KEY}" ] && USERMODULES["${KEY}"]="${VALUE}" + done < <(readConfigMap "modules" "${USER_CONFIG_FILE}") + NEXT="s" + # loop menu + while true; do + dialog --backtitle "`backtitle`" --default-item ${NEXT} \ + --menu "$(TEXT "Choose a option")" 0 0 0 \ + s "$(TEXT "Show selected modules")" \ + a "$(TEXT "Select all modules")" \ + d "$(TEXT "Deselect all modules")" \ + c "$(TEXT "Choose modules to include")" \ + o "$(TEXT "Download a external module")" \ + e "$(TEXT "Exit")" \ + 2>${TMP_PATH}/resp + [ $? -ne 0 ] && break + case "`<${TMP_PATH}/resp`" in + s) ITEMS="" + for KEY in ${!USERMODULES[@]}; do + ITEMS+="${KEY}: ${USERMODULES[$KEY]}\n" + done + dialog --backtitle "`backtitle`" --title "$(TEXT "User modules")" \ + --msgbox "${ITEMS}" 0 0 + ;; + a) dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" \ + --infobox "$(TEXT "Selecting all modules")" 0 0 + unset USERMODULES + declare -A USERMODULES + writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" + while read ID DESC; do + USERMODULES["${ID}"]="" + writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}" + done <<<${ALLMODULES} + ;; + + d) dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" \ + --infobox "$(TEXT "Deselecting all modules")" 0 0 + writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" + unset USERMODULES + declare -A USERMODULES + ;; + + c) + rm -f "${TMP_PATH}/opts" + while read ID DESC; do + arrayExistItem "${ID}" "${!USERMODULES[@]}" && ACT="on" || ACT="off" + echo "${ID} ${DESC} ${ACT}" >> "${TMP_PATH}/opts" + done <<<${ALLMODULES} + dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" --aspect 18 \ + --checklist "$(TEXT "Select modules to include")" 0 0 0 \ + --file "${TMP_PATH}/opts" 2>${TMP_PATH}/resp + [ $? -ne 0 ] && continue + resp=$(<${TMP_PATH}/resp) + [ -z "${resp}" ] && continue + dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" \ + --infobox "$(TEXT "Writing to user config")" 0 0 + unset USERMODULES + declare -A USERMODULES + writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" + for ID in ${resp}; do + USERMODULES["${ID}"]="" + writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}" + done + ;; + + o) + MSG="" + MSG+="$(TEXT "This function is experimental and dangerous. If you don't know much, please exit.\n")" + MSG+="$(TEXT "The imported .ko of this function will be implanted into the corresponding arch's modules package, which will affect all models of the arch.\n")" + MSG+="$(TEXT "This program will not determine the availability of imported modules or even make type judgments, as please double check if it is correct.\n")" + MSG+="$(TEXT "If you want to remove it, please go to the \"Update Menu\" -> \"Update modules\" to forcibly update the modules. All imports will be reset.\n")" + MSG+="$(TEXT "Do you want to continue?")" + dialog --backtitle "`backtitle`" --title "$(TEXT "Download a external module")" \ + --yesno "${MSG}" 0 0 + [ $? -ne 0 ] && return + dialog --backtitle "`backtitle`" --aspect 18 --colors --inputbox "$(TEXT "please enter the complete URL to download.\n")" 0 0 \ + 2>${TMP_PATH}/resp + [ $? -ne 0 ] && continue + URL="`<"${TMP_PATH}/resp"`" + [ -z "${URL}" ] && continue + clear + echo "`printf "$(TEXT "Downloading %s")" "${URL}"`" + STATUS=`curl -kLJO -w "%{http_code}" "${URL}" --progress-bar` + if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then + dialog --backtitle "`backtitle`" --title "$(TEXT "Error downloading")" --aspect 18 \ + --msgbox "$(TEXT "Check internet, URL or cache disk space")" 0 0 + return 1 + fi + KONAME=$(basename "$URL") + if [ -n "${KONAME}" -a "${KONAME##*.}" = "ko" ]; then + addToModules ${PLATFORM} ${KVER} ${KONAME} + dialog --backtitle "`backtitle`" --title "$(TEXT "Success")" --aspect 18 \ + --msgbox "`printf "$(TEXT "Module '%s' added to %s-%s")" "${KONAME}" ${PLATFORM} ${KVER}`" 0 0 + rm -f ${KONAME} + else + dialog --backtitle "`backtitle`" --title "$(TEXT "Invalid module")" --aspect 18 \ + --msgbox "$(TEXT "File format not recognized!")" 0 0 + fi + ;; + e) + break + ;; + esac + done +} ############################################################################### function cmdlineMenu() { @@ -762,11 +878,10 @@ function advancedMenu() { while true; do rm "${TMP_PATH}/menu" if [ -n "${BUILD}" ]; then - echo "o \"$(TEXT "Modules")\"" >> "${TMP_PATH}/menu" echo "l \"$(TEXT "Switch LKM version:") \Z4${LKM}\Zn\"" >> "${TMP_PATH}/menu" fi if loaderIsConfigured; then - echo "r \"$(TEXT "Switch direct boot:") \Z4${DIRECTBOOT}\Zn\"" >> "${TMP_PATH}/menu" + echo "q \"$(TEXT "Switch direct boot:") \Z4${DIRECTBOOT}\Zn\"" >> "${TMP_PATH}/menu" fi echo "u \"$(TEXT "Edit user config file manually")\"" >> "${TMP_PATH}/menu" echo "t \"$(TEXT "Try to recovery a DSM installed system")\"" >> "${TMP_PATH}/menu" @@ -781,6 +896,7 @@ function advancedMenu() { echo "d \"$(TEXT "Custom dts file # Need rebuild")\"" >> "${TMP_PATH}/menu" fi echo "b \"$(TEXT "Backup bootloader disk # dd")\"" >> "${TMP_PATH}/menu" + echo "r \"$(TEXT "Restore bootloader disk # dd")\"" >> "${TMP_PATH}/menu" echo "e \"$(TEXT "Exit")\"" >> "${TMP_PATH}/menu" dialog --default-item ${NEXT} --backtitle "`backtitle`" --title "$(TEXT "Advanced")" \ @@ -788,13 +904,12 @@ function advancedMenu() { 2>${TMP_PATH}/resp [ $? -ne 0 ] && break case `<"${TMP_PATH}/resp"` in - o) selectModules; NEXT="e" ;; l) LKM=$([ "${LKM}" = "dev" ] && echo 'prod' || ([ "${LKM}" = "test" ] && echo 'dev' || echo 'test')) writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}" DIRTY=1 NEXT="l" ;; - r) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false' + q) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false' writeConfigKey "directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}" NEXT="e" ;; @@ -952,6 +1067,47 @@ function advancedMenu() { dialog --backtitle "`backtitle`" --colors --aspect 18 \ --msgbox "$(TEXT "backup is complete.")" 0 0 ;; + r) + if ! tty | grep -q "/dev/pts"; then + dialog --backtitle "`backtitle`" --colors --aspect 18 \ + --msgbox "$(TEXT "This feature is only available when accessed via web/ssh.")" 0 0 + return + fi + dialog --backtitle "`backtitle`" --title "$(TEXT "Restore bootloader disk")" \ + --yesno "$(TEXT "Warning:\nDo not terminate midway, otherwise it may cause damage to the arpl. Do you want to continue?")" 0 0 + [ $? -ne 0 ] && return + IFTOOL="" + TMP_PATH=/tmp/users + rm -rf ${TMP_PATH} + mkdir -p ${TMP_PATH} + pushd ${TMP_PATH} + rz -q + for F in `ls -A`; do + USER_FILE=${TMP_PATH}/${F} + [ "${F##*.}" = "zip" -a `unzip -l ${USER_FILE} | grep -c "\.img$"` -eq 1 ] && IFTOOL="zip" + [ "${F##*.}" = "gz" -a "${F#*.}" = "img.gz" ] && IFTOOL="gzip" + break + done + popd + if [ -z "${IFTOOL}" -o -z "${USER_FILE}" ]; then + dialog --backtitle "`backtitle`" --title "$(TEXT "Restore bootloader disk")" --aspect 18 \ + --msgbox "$(TEXT "Not a valid .zip/.img.gz file, please try again!")" 0 0 + else + dialog --backtitle "`backtitle`" --title "$(TEXT "Restore bootloader disk")" --aspect 18 \ + --msgbox "$(TEXT "A valid file, Writing...")" 0 0 + umount /mnt/p1 /mnt/p2 /mnt/p3 + if [ "${IFTOOL}" = "zip" ]; then + unzip -p ${USER_FILE} | dd of="${LOADER_DISK}" bs=1M conv=fsync + elif [ "${IFTOOL}" = "gzip" ]; then + gzip -dc ${USER_FILE} | dd of="${LOADER_DISK}" bs=1M conv=fsync + fi + dialog --backtitle "`backtitle`" --title "$(TEXT "Restore bootloader disk")" --aspect 18 \ + --yesno "`printf "$(TEXT "Restore bootloader disk with success to %s!\nReboot?")" "`basename ${USER_FILE}`"`" 0 0 + [ $? -ne 0 ] && continue + reboot + exit + fi + ;; e) break ;; esac done @@ -1000,85 +1156,6 @@ function tryRecoveryDSM() { fi } -############################################################################### -# Permit user select the modules to include -function selectModules() { - PLATFORM="`readModelKey "${MODEL}" "platform"`" - KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`" - dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" --aspect 18 \ - --infobox "$(TEXT "Reading modules")" 0 0 - ALLMODULES=`getAllModules "${PLATFORM}" "${KVER}"` - unset USERMODULES - declare -A USERMODULES - while IFS=': ' read KEY VALUE; do - [ -n "${KEY}" ] && USERMODULES["${KEY}"]="${VALUE}" - done < <(readConfigMap "modules" "${USER_CONFIG_FILE}") - # menu loop - while true; do - dialog --backtitle "`backtitle`" --menu "$(TEXT "Choose a option")" 0 0 0 \ - s "$(TEXT "Show selected modules")" \ - a "$(TEXT "Select all modules")" \ - d "$(TEXT "Deselect all modules")" \ - c "$(TEXT "Choose modules to include")" \ - e "$(TEXT "Exit")" \ - 2>${TMP_PATH}/resp - [ $? -ne 0 ] && break - case "`<${TMP_PATH}/resp`" in - s) ITEMS="" - for KEY in ${!USERMODULES[@]}; do - ITEMS+="${KEY}: ${USERMODULES[$KEY]}\n" - done - dialog --backtitle "`backtitle`" --title "$(TEXT "User modules")" \ - --msgbox "${ITEMS}" 0 0 - ;; - a) dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" \ - --infobox "$(TEXT "Selecting all modules")" 0 0 - unset USERMODULES - declare -A USERMODULES - writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" - while read ID DESC; do - USERMODULES["${ID}"]="" - writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}" - done <<<${ALLMODULES} - ;; - - d) dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" \ - --infobox "$(TEXT "Deselecting all modules")" 0 0 - writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" - unset USERMODULES - declare -A USERMODULES - ;; - - c) - rm -f "${TMP_PATH}/opts" - while read ID DESC; do - arrayExistItem "${ID}" "${!USERMODULES[@]}" && ACT="on" || ACT="off" - echo "${ID} ${DESC} ${ACT}" >> "${TMP_PATH}/opts" - done <<<${ALLMODULES} - dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" --aspect 18 \ - --checklist "$(TEXT "Select modules to include")" 0 0 0 \ - --file "${TMP_PATH}/opts" 2>${TMP_PATH}/resp - [ $? -ne 0 ] && continue - resp=$(<${TMP_PATH}/resp) - [ -z "${resp}" ] && continue - dialog --backtitle "`backtitle`" --title "$(TEXT "Modules")" \ - --infobox "$(TEXT "Writing to user config")" 0 0 - unset USERMODULES - declare -A USERMODULES - writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" - for ID in ${resp}; do - USERMODULES["${ID}"]="" - writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}" - done - ;; - - e) - break - ;; - esac - done -} - ############################################################################### # Permits user edit the user config function editUserConfig() { @@ -1415,6 +1492,7 @@ while true; do echo "s \"$(TEXT "Choose a serial number")\"" >> "${TMP_PATH}/menu" if [ -n "${BUILD}" ]; then echo "a \"$(TEXT "Addons")\"" >> "${TMP_PATH}/menu" + echo "o \"$(TEXT "Modules")\"" >> "${TMP_PATH}/menu" echo "x \"$(TEXT "Cmdline menu")\"" >> "${TMP_PATH}/menu" echo "i \"$(TEXT "Synoinfo menu")\"" >> "${TMP_PATH}/menu" fi @@ -1444,7 +1522,8 @@ while true; do m) modelMenu; NEXT="n" ;; n) buildMenu; NEXT="s" ;; s) serialMenu; NEXT="a" ;; - a) addonMenu; NEXT="x" ;; + a) addonMenu; NEXT="o" ;; + o) moduleMenu; NEXT="x" ;; x) cmdlineMenu; NEXT="i" ;; i) synoinfoMenu; NEXT="v" ;; v) advancedMenu; NEXT="d" ;;