Compare commits

..

340 Commits

Author SHA1 Message Date
Fabio Belavenuto
f7c0b4fcd5 Merge pull request #366 from fbelavenuto/bin-update
Bin update
2022-11-30 09:07:02 -03:00
Fabio Belavenuto
08af5fd185 Bin update 2022-11-30 09:06:21 -03:00
Fabio Belavenuto
7ef9a87347 Merge pull request #364 from fbelavenuto/fix-toolkit
Fixing toolkit
2022-11-29 15:45:08 -03:00
Fabio Belavenuto
b21e1e4924 Fixing toolkit 2022-11-29 15:44:34 -03:00
Fabio Belavenuto
56c214c2a8 Merge pull request #363 from fbelavenuto/beta5
Starting beta5, update addons/modules
2022-11-29 12:34:41 -03:00
Fabio Belavenuto
d903e4237b Starting beta5, update addons/modules 2022-11-29 12:34:04 -03:00
Fabio Belavenuto
6f238af8c1 Merge pull request #358 from fbelavenuto/binaries
Update binaries
2022-11-28 11:12:18 -03:00
Fabio Belavenuto
3b490c9c86 Update binaries 2022-11-28 11:12:00 -03:00
Fabio Belavenuto
a0120f8d5d Merge pull request #357 from fbelavenuto/latest-binaries
Latest addons/modules/lkms
2022-11-28 10:53:54 -03:00
Fabio Belavenuto
e4622f92d7 Latest addons/modules/lkms 2022-11-28 10:47:08 -03:00
Fabio Belavenuto
3898e3c3d9 Merge pull request #356 from fbelavenuto/new-ds923+
Adding DS923+
2022-11-28 10:45:32 -03:00
Fabio Belavenuto
a8534dccf5 Adding DS923+ 2022-11-28 10:45:19 -03:00
Fabio Belavenuto
c00c94fdfd Merge pull request #355 from fbelavenuto/docker-toolkit
New docker image syno-toolkit
2022-11-28 10:44:19 -03:00
Fabio Belavenuto
f6dbd4b8cd New docker image syno-toolkit 2022-11-28 10:44:00 -03:00
Fabio Belavenuto
efb54e1345 Merge pull request #354 from fbelavenuto/351-the-installer-will-overwrite-dsm-loader-when-direct-boot-is-true
Fixing directboot DoM EFI variables
2022-11-28 09:01:36 -03:00
Fabio Belavenuto
d220958442 Fixing directboot DoM EFI variables 2022-11-28 09:01:16 -03:00
Fabio Belavenuto
d95a88f513 Merge pull request #349 from fbelavenuto/r1000
Adding r1000 platform into docker image
2022-11-25 16:38:59 -03:00
Fabio Belavenuto
36fca1cb0d Adding r1000 platform into docker image 2022-11-25 16:38:33 -03:00
Fabio Belavenuto
d91468ba66 Merge pull request #348 from fbelavenuto/r1000
Adding r1000 platform
2022-11-25 13:23:00 -03:00
Fabio Belavenuto
a136b3e3ec Adding r1000 platform 2022-11-25 13:22:21 -03:00
Fabio Belavenuto
ea43525e6b Update arpl_defconfig 2022-11-22 09:02:38 -03:00
Fabio Belavenuto
8fe46adb66 Merge pull request #342 from fbelavenuto/more-timeout
Changed IP timeout to 30 secs
2022-11-22 08:49:56 -03:00
Fabio Belavenuto
35d66d37cf Changed IP timeout to 30 secs 2022-11-22 08:49:40 -03:00
Fabio Belavenuto
55d3cf0bde Merge pull request #333 from fbelavenuto/i915
Added i915 addons
2022-11-18 17:21:11 -03:00
Fabio Belavenuto
8411febf6d Added i915 addons 2022-11-18 17:20:47 -03:00
Fabio Belavenuto
227e1f19a7 Merge pull request #332 from fbelavenuto/igc-1.2.8
Updated igc to 1.2.8
2022-11-18 16:48:21 -03:00
Fabio Belavenuto
2fadc03782 Updated igc to 1.2.8 2022-11-18 16:47:43 -03:00
Fabio Belavenuto
ab60d853bb Merge pull request #330 from fbelavenuto/dev
Adding latest addons, LKMs and modules
2022-11-17 13:01:32 -03:00
Fabio Belavenuto
30464e943c Adding latest addons, LKMs and modules 2022-11-17 13:00:51 -03:00
Fabio Belavenuto
08e783eb7f Merge pull request #328 from fbelavenuto/fixes
fix dirty flag when change LKM type
2022-11-17 11:56:45 -03:00
Fabio Belavenuto
887122e9d8 fix dirty flag when change LKM type 2022-11-17 11:55:50 -03:00
Fabio Belavenuto
076b09d315 Merge pull request #326 from fbelavenuto/fix-grub-cmdline-direct
Fix grup environment overflow
2022-11-16 09:53:38 -03:00
Fabio Belavenuto
0e071628dd Fix grup environment overflow 2022-11-16 09:52:22 -03:00
Fabio Belavenuto
6edde1245f Merge pull request #324 from fbelavenuto/support_led_brightness_adjustment
Added support_led_brightness_adjustment to no
2022-11-16 08:20:26 -03:00
Fabio Belavenuto
b2830395c1 Added support_led_brightness_adjustment to no 2022-11-16 08:20:11 -03:00
Fabio Belavenuto
cf8ab044ee Documentation 2022-11-07 13:43:43 -03:00
Fabio Belavenuto
b86dbb490b Merge pull request #308 from fbelavenuto/mods-addons
Adding lasts addons/modules
2022-11-07 13:11:15 -03:00
Fabio Belavenuto
ea0fba0033 Adding lasts addons/modules 2022-11-07 13:11:01 -03:00
Fabio Belavenuto
f141a527ef Merge pull request #299 from fbelavenuto/dsm-beta-bn
Removed buildnumber 42951, do not exists anymore in Synology servers
2022-11-03 10:13:59 -03:00
Fabio Belavenuto
bf1ac9f08c Removed buildnumber 42951, do not exists anymore in Synology servers 2022-11-03 10:13:28 -03:00
Fabio Belavenuto
38aeba975e Documentation 2022-10-31 13:24:34 -03:00
Fabio Belavenuto
5c6218f89d Merge pull request #290 from fbelavenuto/dev
Adding remove-pma addon
2022-10-31 12:28:23 -03:00
Fabio Belavenuto
3e93b672ae Adding remove-pma addon 2022-10-31 12:27:11 -03:00
Fabio Belavenuto
20307af292 Documentation 2022-10-27 13:37:46 -03:00
Fabio Belavenuto
a9313b93c6 Documentation 2022-10-26 15:20:39 -03:00
Fabio Belavenuto
1335ff30a2 Merge pull request #276 from fbelavenuto/update-bug
Fix bug
2022-10-26 14:23:50 -03:00
Fabio Belavenuto
ebc92d686a Fix bug 2022-10-26 14:23:33 -03:00
Fabio Belavenuto
5f7807f941 Merge pull request #275 from fbelavenuto/first-beta
First beta release, with new update system
2022-10-26 14:01:06 -03:00
Fabio Belavenuto
7b15e734a6 First beta release, with new update system 2022-10-26 14:00:47 -03:00
Fabio Belavenuto
7f76a8c85a Merge pull request #274 from fbelavenuto/update
Bug fix
2022-10-26 13:52:20 -03:00
Fabio Belavenuto
f2fd6dd4fb Bug fix 2022-10-26 13:51:55 -03:00
Fabio Belavenuto
c7cc1ed8f6 Merge pull request #273 from fbelavenuto/update
Fix little bug
2022-10-26 13:49:02 -03:00
Fabio Belavenuto
caa131b4de Fix little bug 2022-10-26 13:48:41 -03:00
Fabio Belavenuto
689effd9d1 Merge pull request #272 from fbelavenuto/update
Testing new update method
2022-10-26 13:40:06 -03:00
Fabio Belavenuto
a989fb307f Testing new update method 2022-10-26 13:39:41 -03:00
Fabio Belavenuto
02563f4f1b Merge pull request #271 from fbelavenuto/update
More tests
2022-10-26 13:23:41 -03:00
Fabio Belavenuto
649b594600 More tests 2022-10-26 13:22:55 -03:00
Fabio Belavenuto
cbc550799d Merge pull request #270 from fbelavenuto/update
more testing
2022-10-26 13:08:50 -03:00
Fabio Belavenuto
d9db774dce more testing 2022-10-26 13:08:23 -03:00
Fabio Belavenuto
b6efcc6589 Merge pull request #269 from fbelavenuto/update
More testing
2022-10-26 12:49:12 -03:00
Fabio Belavenuto
0edc57af1d More testing 2022-10-26 12:48:46 -03:00
Fabio Belavenuto
d22a70a407 Merge pull request #268 from fbelavenuto/update
Testing new update method
2022-10-26 12:36:09 -03:00
Fabio Belavenuto
6a492b1cea Testing new update method 2022-10-26 12:35:11 -03:00
Fabio Belavenuto
e89c326598 Merge pull request #266 from fbelavenuto/powersched
Adding power schedule addon and RTC modules
2022-10-25 15:27:01 -03:00
Fabio Belavenuto
0568615f1f Adding power schedule addon and RTC modules
Removing null update URLs
2022-10-25 15:25:53 -03:00
Fabio Belavenuto
341a94e0ff Merge pull request #249 from fbelavenuto/dev
Adding VMDK dynamic img
2022-10-14 16:59:57 -03:00
Fabio Belavenuto
3606fb645e Adding VMDK dynamic img 2022-10-14 16:59:40 -03:00
Fabio Belavenuto
f9831c066e Merge pull request #246 from fbelavenuto/110-compatibility-hp-g7-n54l
Added function to boot directly to DSM from Grub
2022-10-13 13:45:34 -03:00
Fabio Belavenuto
c1920c76ab Added function to boot directly to DSM from Grub 2022-10-13 13:45:09 -03:00
Fabio Belavenuto
98c7c67b23 Merge pull request #240 from fbelavenuto/delete-i915
Removing i915 addon
2022-10-10 10:57:35 -03:00
Fabio Belavenuto
18ee7e55ab Removing i915 addon 2022-10-10 10:57:23 -03:00
Fabio Belavenuto
25b62d3e6c Merge pull request #239 from fbelavenuto/ixgbe-pocopico
Using ixgbe from pocopico
2022-10-10 10:32:09 -03:00
Fabio Belavenuto
858c8ea847 Merge pull request #238 from fbelavenuto/revert-237-fw-place
Revert "Movel place of firmwares"
2022-10-10 10:31:49 -03:00
Fabio Belavenuto
6b5ad4be4e Revert "Movel place of firmwares" 2022-10-10 10:31:41 -03:00
Fabio Belavenuto
7a1eb5cbdb Using ixgbe from pocopico 2022-10-10 10:30:35 -03:00
Fabio Belavenuto
1ac0ddaee5 Merge pull request #237 from fbelavenuto/fw-place
Movel place of firmwares
2022-10-10 10:14:45 -03:00
Fabio Belavenuto
1712f61995 Movel place of firmwares 2022-10-10 10:14:32 -03:00
Fabio Belavenuto
0bbedf2bbc Merge pull request #236 from fbelavenuto/grub-no-gfx
Grub with no fonts - text mode ony
2022-10-10 10:04:27 -03:00
Fabio Belavenuto
deb2cd1884 Grub with no fonts - text mode ony 2022-10-10 10:04:12 -03:00
Fabio Belavenuto
eed06af75f Merge pull request #221 from fbelavenuto/grub-1st-bug
Fix grub first stage (UEFI)
2022-10-05 09:31:53 -03:00
Fabio Belavenuto
e4332d44fa Fix grub first stage (UEFI) 2022-10-05 09:31:36 -03:00
Fabio Belavenuto
2fb04769ba Merge pull request #219 from fbelavenuto/bug-netif_num
Fixing bug checking netif_num
2022-10-04 14:31:07 -03:00
Fabio Belavenuto
1a7f847334 Fixing bug checking netif_num 2022-10-04 14:30:52 -03:00
Fabio Belavenuto
cd44a7eb64 Merge pull request #218 from fbelavenuto/select-modules
Adding option to configure modules to use in DSM
2022-10-04 14:05:30 -03:00
Fabio Belavenuto
2313062eec Adding option to configure modules to use in DSM 2022-10-04 14:04:58 -03:00
Fabio Belavenuto
52eab13d15 Merge pull request #204 from fbelavenuto/columns-bug
Fix $COLUMNS visual bug
2022-09-29 16:33:51 -03:00
Fabio Belavenuto
a19a1dd1a5 Fix $COLUMNS visual bug 2022-09-29 16:33:15 -03:00
Fabio Belavenuto
08fca3caa3 Merge pull request #196 from fbelavenuto/dbgutils
Adding patches for dbgutils save log resource
2022-09-26 13:54:53 -03:00
Fabio Belavenuto
4616fede0b Adding patches for dbgutils save log resource 2022-09-26 13:54:21 -03:00
Fabio Belavenuto
70272bdc98 Merge pull request #194 from the-leaf/main
add lib/firmware
2022-09-26 08:31:27 -03:00
the-leaf
3c5b8d43a2 add lib/firmware 2022-09-24 23:15:55 +07:00
Fabio Belavenuto
0a01291188 Merge pull request #188 from fbelavenuto/firmwares
Adding buildroot firmwares
2022-09-22 13:25:56 -03:00
Fabio Belavenuto
fe8258b8a8 Adding buildroot firmwares 2022-09-22 13:25:41 -03:00
Fabio Belavenuto
ebf1bf2e24 Merge pull request #187 from fbelavenuto/arpl-reboot
Added missing arpl-reboot
2022-09-22 11:39:32 -03:00
Fabio Belavenuto
15194a396c Added missing arpl-reboot 2022-09-22 11:39:17 -03:00
Fabio Belavenuto
a62bba0eff Merge pull request #186 from fbelavenuto/patch-cmos-write
Add patch rtc_cmos_write (issue #174)
2022-09-22 11:37:56 -03:00
Fabio Belavenuto
6253ab9b20 Add patch rtc_cmos_write (issue #174)
Another improvements
2022-09-22 11:26:05 -03:00
Fabio Belavenuto
8fe3c41ce4 Merge pull request #180 from fbelavenuto/checksum-yet
Checksum yet
2022-09-19 16:35:34 -03:00
Fabio Belavenuto
e097941014 Checksum yet 2022-09-19 16:35:21 -03:00
Fabio Belavenuto
67f1ee8066 Merge pull request #179 from fbelavenuto/fixing-checksum
Fixing checksum
2022-09-19 14:01:40 -03:00
Fabio Belavenuto
f74d889ce3 Fixing checksum 2022-09-19 14:01:27 -03:00
Fabio Belavenuto
9ac8279c2b Merge pull request #178 from fbelavenuto/update-fix
Testing actions
2022-09-19 11:31:18 -03:00
Fabio Belavenuto
f5220d1468 Testing actions 2022-09-19 11:30:57 -03:00
Fabio Belavenuto
7898b54980 Merge pull request #177 from fbelavenuto/update-fix
Testing update checksum check
2022-09-19 10:07:58 -03:00
Fabio Belavenuto
2ad2825c46 Testing update checksum check 2022-09-19 10:07:41 -03:00
Fabio Belavenuto
8b9b1439b3 Merge pull request #171 from fbelavenuto/fix-eudev
addon eudev with RAID mount bug fixed
2022-09-15 16:38:32 -03:00
Fabio Belavenuto
da89a97182 addon eudev with RAID mount bug fixed
script to reboot into another mode (junior/config)
Anothers minor changes
2022-09-15 16:38:02 -03:00
Fabio Belavenuto
19ec462570 Merge pull request #170 from fbelavenuto/debug
Adding resources to facilitate debug by author
2022-09-15 14:09:12 -03:00
Fabio Belavenuto
8cc750a527 Adding resources to facilitate debug by author 2022-09-15 14:08:52 -03:00
Fabio Belavenuto
c5ec8f7d24 Merge pull request #169 from fbelavenuto/ram-warning
Adding low memory warning
2022-09-15 14:06:18 -03:00
Fabio Belavenuto
82acaabe26 Adding low memory warning 2022-09-15 14:05:35 -03:00
Fabio Belavenuto
dc7076709c Merge pull request #167 from jimmyGALLAND/main
fix dfree smb error
2022-09-15 08:51:09 -03:00
JimmyGALLAND
eeec01864f fix dfree smb error 2022-09-14 22:26:25 +02:00
Fabio Belavenuto
dc102f5af7 Create FUNDING.yml 2022-09-13 18:38:10 -03:00
Fabio Belavenuto
d4c342c0fd Merge pull request #157 from fbelavenuto/dev
Testing actions
2022-09-09 11:35:17 -03:00
Fabio Belavenuto
8fff3377be Testing actions 2022-09-09 11:35:00 -03:00
Fabio Belavenuto
bb130cdc23 Update main.yml 2022-09-06 20:43:15 -03:00
Fabio Belavenuto
6c2f0b936e Merge pull request #149 from fbelavenuto/fbmod
Fixing fb modules
2022-09-06 17:01:37 -03:00
Fabio Belavenuto
fe7fbf4821 Fixing fb modules 2022-09-06 17:01:24 -03:00
Fabio Belavenuto
e669a94738 Merge pull request #143 from fbelavenuto/dev
Fixing updates (checking curl HTTP status)
2022-09-05 15:06:35 -03:00
Fabio Belavenuto
6d9c217b7d Fixing updates (checking curl HTTP status) 2022-09-05 13:18:21 -03:00
Fabio Belavenuto
0777beadc1 Merge pull request #142 from fbelavenuto/dev
New buildnumber
2022-09-05 10:09:40 -03:00
Fabio Belavenuto
04e5e5dc21 New buildnumber 2022-09-05 10:09:18 -03:00
Fabio Belavenuto
db33698894 Merge pull request #136 from fbelavenuto/r8169
Adding r8169 and removing r8168, for loader
2022-08-26 08:22:25 -03:00
Fabio Belavenuto
87f72b50cc Adding r8169 and removing r8168, for loader 2022-08-26 08:22:06 -03:00
Fabio Belavenuto
35bd08a9c4 Merge pull request #135 from fbelavenuto/link-folders-p3
Link to cache partition for ARPL model-config and patch
2022-08-25 15:04:40 -03:00
Fabio Belavenuto
e7303130d6 Link to cache partition for ARPL model-config and patch 2022-08-25 14:42:45 -03:00
Fabio Belavenuto
4f2014ee14 Merge pull request #134 from fbelavenuto/synoinfo-loader-bug
Bug in loader synoinfo.conf patch
2022-08-25 14:39:41 -03:00
Fabio Belavenuto
3382821c81 Bug in loader synoinfo.conf patch 2022-08-25 14:39:26 -03:00
Fabio Belavenuto
f283cc3f54 Merge pull request #133 from fbelavenuto/fb-mods
Added framebuffer drivers for loader
2022-08-25 13:59:17 -03:00
Fabio Belavenuto
78dfc09716 Added framebuffer drivers for loader 2022-08-25 13:58:54 -03:00
Fabio Belavenuto
5433835e6c Merge pull request #130 from fbelavenuto/dev
eudev fixed
2022-08-22 23:22:39 -03:00
Fabio Belavenuto
1f6e32b72a eudev fixed 2022-08-22 23:22:06 -03:00
Fabio Belavenuto
16145061de Merge pull request #129 from fbelavenuto/dev
wip
2022-08-22 23:10:09 -03:00
Fabio Belavenuto
4b580607cb wip 2022-08-22 23:09:40 -03:00
Fabio Belavenuto
0da9003ae7 Merge pull request #128 from fbelavenuto/dev2
new dbgutils(nano,smartctl)
2022-08-22 23:00:39 -03:00
Fabio Belavenuto
fbee3249b4 new dbgutils(nano,smartctl)
wip
2022-08-22 23:00:18 -03:00
Fabio Belavenuto
3aed6125cb Merge pull request #127 from fbelavenuto/root-passwd
reverting remove root password
2022-08-22 21:45:41 -03:00
Fabio Belavenuto
6e1af3af75 reverting remove root password 2022-08-22 21:43:18 -03:00
Fabio Belavenuto
eecd98193c Testing DVA3219 synoinfo entries 2022-08-22 15:53:38 -03:00
Fabio Belavenuto
be0ff18843 Merge pull request #126 from fbelavenuto/new-addon-lsiutil
New addon lsiutil
2022-08-22 15:53:01 -03:00
Fabio Belavenuto
67c8467966 New addon lsiutil 2022-08-22 15:52:32 -03:00
Fabio Belavenuto
666b223dc6 Merge pull request #125 from fbelavenuto/root-password
Removing root password
2022-08-22 08:33:26 -03:00
Fabio Belavenuto
4d2c544ac7 Removing root password 2022-08-22 08:33:04 -03:00
Fabio Belavenuto
47b3188ee7 Merge pull request #124 from fbelavenuto/vmdk
Changing VMDK generation with the subformat=monolithicFlat
2022-08-22 08:28:18 -03:00
Fabio Belavenuto
1e614c6673 Changing VMDK generation with the subformat=monolithicFlat 2022-08-22 08:27:51 -03:00
Fabio Belavenuto
be256177b5 Merge pull request #122 from fbelavenuto/ramdisk-not-patched
Fixing missing information (bug ramdisk not patched)
2022-08-19 16:57:23 -03:00
Fabio Belavenuto
b5e7e82a67 Fixing missing information (bug ramdisk not patched) 2022-08-19 16:57:08 -03:00
Fabio Belavenuto
156444f29e Merge pull request #121 from fbelavenuto/ixgbevf
Added ixgbevf module
2022-08-19 11:40:58 -03:00
Fabio Belavenuto
4a73f8ae78 Added ixgbevf module 2022-08-19 11:40:33 -03:00
Fabio Belavenuto
193c95e1fc Merge pull request #120 from fbelavenuto/new-ixgbe
new ixgbe version
2022-08-19 11:33:27 -03:00
Fabio Belavenuto
6a6b223972 new ixgbe version 2022-08-19 11:33:05 -03:00
Fabio Belavenuto
90c39bc9f5 Merge pull request #119 from fbelavenuto/ice
Ice
2022-08-19 11:13:54 -03:00
Fabio Belavenuto
10ca9420d5 Added ice modules 2022-08-19 11:13:14 -03:00
Fabio Belavenuto
aba8878500 Added ice module 2022-08-19 11:12:39 -03:00
Fabio Belavenuto
98c92c03d9 Merge pull request #118 from fbelavenuto/dev
Added iavf module
2022-08-19 10:51:52 -03:00
Fabio Belavenuto
ffd09dfa75 Added iavf module 2022-08-19 10:51:14 -03:00
Fabio Belavenuto
34362117da Merge pull request #117 from fbelavenuto/dev
Testing more github actions
2022-08-19 10:20:13 -03:00
Fabio Belavenuto
1cf68bce40 Testing more github actions 2022-08-19 10:20:00 -03:00
Fabio Belavenuto
d6ebcd1fbc Merge pull request #116 from fbelavenuto/install-addons-on-live
Separated script to install addons on boot
2022-08-19 10:18:27 -03:00
Fabio Belavenuto
d3f720092f Separated script to install addons on boot 2022-08-18 16:29:55 -03:00
Fabio Belavenuto
0303c3b28f Merge pull request #114 from fbelavenuto/img-gen
fix img-gen.sh little bug
2022-08-18 16:27:24 -03:00
Fabio Belavenuto
f421824af3 fix img-gen.sh little bug 2022-08-18 16:27:03 -03:00
Fabio Belavenuto
93ac809711 Merge pull request #113 from fbelavenuto/build-ordering
Build ordering
2022-08-18 14:38:20 -03:00
Fabio Belavenuto
69af175bea Build ordering 2022-08-18 14:38:04 -03:00
Fabio Belavenuto
2e960e564b Merge pull request #112 from fbelavenuto/dev
New version of igb module
2022-08-18 14:37:08 -03:00
Fabio Belavenuto
aa43b3669a New version of igb module 2022-08-18 14:35:39 -03:00
Fabio Belavenuto
f4e380831a Adding KSRC variable into docker 2022-08-18 10:06:32 -03:00
Fabio Belavenuto
aa85152cc2 new modules and fw 2022-08-18 08:33:00 -03:00
Fabio Belavenuto
376f1080f9 Merge pull request #109 from fbelavenuto/new-bn-updates
Adding MD5 hash to make the rss update files
2022-08-17 16:41:40 -03:00
Fabio Belavenuto
2cde38923c Adding MD5 hash to make the rss update files 2022-08-17 16:41:21 -03:00
Fabio Belavenuto
9c680d59f0 Merge pull request #108 from fbelavenuto/dev
Fix bugs into MAC-related stuff, organizing modules
2022-08-17 15:50:56 -03:00
Fabio Belavenuto
a9d4085587 Fix bugs into MAC-related stuff, organizing modules 2022-08-17 15:34:43 -03:00
Fabio Belavenuto
178956c781 Merge pull request #99 from fbelavenuto/keymap
Fixing keymap selection with layout
2022-08-15 17:17:13 -03:00
Fabio Belavenuto
4dde9e8b0b Fixing keymap selection with layout 2022-08-15 17:16:49 -03:00
Fabio Belavenuto
26c2d52565 Merge pull request #94 from fbelavenuto/93-grub-not-using-predictable-ifnames-for-network-interfaces
Testing cmdline net.ifnames=0 biosdevname=0
2022-08-12 11:15:02 -03:00
Fabio Belavenuto
1ad8f4ee62 Testing cmdline net.ifnames=0 biosdevname=0 2022-08-12 11:14:21 -03:00
Fabio Belavenuto
f76ad57835 Merge pull request #92 from fbelavenuto/88-dva3219-loader
Added as beta: DVA3219, DS1520+, FS2500, RS4021xs+
2022-08-11 17:34:40 -03:00
Fabio Belavenuto
2fd551ac60 Added as beta: DVA3219, DS1520+, FS2500, RS4021xs+
Added option to model menu to enable beta models
2022-08-11 17:34:07 -03:00
Fabio Belavenuto
6dcd73e940 Merge pull request #91 from fbelavenuto/89-no-space-left-on-device
Growing image size
2022-08-11 13:17:29 -03:00
Fabio Belavenuto
f245ccb104 Growing image size 2022-08-11 13:17:03 -03:00
Fabio Belavenuto
7ab80a64f7 Merge pull request #90 from fbelavenuto/tests-fs2500
Tests fs2500
2022-08-11 13:14:52 -03:00
Fabio Belavenuto
6d2925492d Added FS2500 and RS4021+ for tests. Fixed bug in new_bn.sh 2022-08-11 12:06:48 -03:00
Fabio Belavenuto
21a76c1155 testing fs2500 and dtbpatch 2022-08-11 09:29:21 -03:00
Fabio Belavenuto
260f61f01a Merge pull request #87 from fbelavenuto/vitioblk
Added virtio blk
2022-08-10 14:14:53 -03:00
Fabio Belavenuto
d0ca839d2c Added virtio blk 2022-08-10 14:13:59 -03:00
Fabio Belavenuto
bddddb89fc Merge pull request #86 from fbelavenuto/51-virtual-machine-manager-cluster-is-not-initialized
Loader init configfile with real MAC. Fixes many bugs with MAC
2022-08-10 13:19:45 -03:00
Fabio Belavenuto
14eeae6816 Loader init configfile with real MAC. Fixes many bugs with MAC 2022-08-10 13:19:01 -03:00
Fabio Belavenuto
3dc34b9fb9 Merge pull request #85 from fbelavenuto/42951
0.4-alpha1: new buildnumber 42951
2022-08-10 10:30:12 -03:00
Fabio Belavenuto
1243320769 0.4-alpha1: new buildnumber 42951 2022-08-10 10:08:24 -03:00
Fabio Belavenuto
4eb0732eaa Merge pull request #81 from fbelavenuto/dev
Dev
2022-08-09 12:39:38 -03:00
Fabio Belavenuto
b78e3735e2 Little fixes 2022-08-09 12:38:27 -03:00
Fabio Belavenuto
9fa97f9730 wip docker 2022-08-08 16:01:10 -03:00
Fabio Belavenuto
f654b72a19 Merge pull request #76 from fbelavenuto/dev
wip
2022-08-05 17:25:10 -03:00
Fabio Belavenuto
6ac2dea20a wip 2022-08-05 17:24:12 -03:00
Fabio Belavenuto
f19de0b526 Merge pull request #75 from fbelavenuto/dev
testing rss
2022-08-05 17:02:22 -03:00
Fabio Belavenuto
8b735d438d testing rss 2022-08-05 17:01:42 -03:00
Fabio Belavenuto
b444432de7 Merge pull request #74 from fbelavenuto/dev
Dev
2022-08-05 15:31:31 -03:00
Fabio Belavenuto
e75c252e1d Testing rss 2022-08-05 15:31:00 -03:00
Fabio Belavenuto
700f25fbbc wip 2022-08-05 13:24:59 -03:00
Fabio Belavenuto
18cc6326b8 Fixing custom MACs for DS3622 2022-08-05 11:25:57 -03:00
Fabio Belavenuto
96cd58db64 Merge pull request #72 from fbelavenuto/dev
Dev merge
2022-08-03 15:41:32 -03:00
Fabio Belavenuto
412f2fb1c5 Adding DS2422+ serial format 2022-08-03 15:20:38 -03:00
Fabio Belavenuto
8f85596b57 Little fixes 2022-08-03 09:50:39 -03:00
Fabio Belavenuto
d6f8467334 Merge pull request #68 from fbelavenuto/dev
Adding local install addons
2022-08-02 17:08:07 -03:00
Fabio Belavenuto
d99aa39809 Merge branch 'dev' of github.com:fbelavenuto/arpl into dev 2022-08-02 17:06:44 -03:00
Fabio Belavenuto
fe7d707d7f Adding local install addons 2022-08-02 17:06:38 -03:00
Fabio Belavenuto
bb14a64b42 Merge pull request #67 from fbelavenuto/dev
Adding local install addons
2022-08-02 16:59:06 -03:00
Fabio Belavenuto
dcb2037465 Adding local install addons 2022-08-02 16:57:25 -03:00
Fabio Belavenuto
41612dc08a More retention days 2022-08-01 14:20:43 -03:00
Fabio Belavenuto
3af65ffe91 Merge pull request #66 from fbelavenuto/dev
Addons misc and acpid installed by default
2022-08-01 14:20:09 -03:00
Fabio Belavenuto
12984cec6a Addons misc and acpid installed by default
Add remove flags restriction
2022-08-01 14:15:25 -03:00
Fabio Belavenuto
486ec72229 Merge pull request #65 from fbelavenuto/dev
Added samba
2022-07-29 16:26:44 -03:00
Fabio Belavenuto
b3fb638d69 Added samba
Validating netif_num
Gzip lkms
2022-07-29 16:21:02 -03:00
Fabio Belavenuto
71e44bc7a3 Merge pull request #64 from fbelavenuto/dev
wip
2022-07-29 13:24:13 -03:00
Fabio Belavenuto
09dba3251b wip 2022-07-29 13:23:34 -03:00
Fabio Belavenuto
1682713fed Merge pull request #61 from fbelavenuto/dev
Modules
2022-07-27 11:41:59 -03:00
Fabio Belavenuto
e678c2aa53 Cosmetics 2022-07-26 17:28:01 -03:00
Fabio Belavenuto
2bceaea550 Modules 2022-07-26 13:12:12 -03:00
Fabio Belavenuto
ae78abc404 Merge pull request #59 from fbelavenuto/dev
Changing addon/modules instalation (for addons with modules)
2022-07-25 17:26:04 -03:00
Fabio Belavenuto
71df9e5a92 Changing addon/modules instalation (for addons with modules)
On build change, check invalid addons
2022-07-25 17:24:15 -03:00
Fabio Belavenuto
a74537aa02 Merge pull request #58 from fbelavenuto/dev
Fixing synoinfo entries for SHR
2022-07-25 14:27:51 -03:00
Fabio Belavenuto
16716b2172 Fixing synoinfo entries for SHR
Little bug into add synoinfo entry
2022-07-25 13:08:31 -03:00
Fabio Belavenuto
027a412b65 Merge pull request #57 from fbelavenuto/dev
Dev
2022-07-25 12:35:25 -03:00
Fabio Belavenuto
4ea6b9ad5c Force action cache remake 2022-07-25 12:34:58 -03:00
Fabio Belavenuto
c0209e0aae Missing synoinfo entries 2022-07-25 11:41:31 -03:00
Fabio Belavenuto
2c3ad3e7fb Merge pull request #56 from fbelavenuto/dev
PATA modules, unified p1 and p2 size
2022-07-25 11:26:59 -03:00
Fabio Belavenuto
74f09ffcd9 Now kernel/ramdisk of DSM and ARPL are located in partition 3 2022-07-25 09:59:35 -03:00
Fabio Belavenuto
acd413ab61 Adding PATA drivers 2022-07-25 08:22:48 -03:00
Fabio Belavenuto
415ee7e75d Merge pull request #53 from fbelavenuto/dev
Various commits
2022-07-22 16:58:46 -03:00
Fabio Belavenuto
2fe9b3237e Modules compiled with DSM toolchain 2022-07-22 16:58:08 -03:00
Fabio Belavenuto
81c0e00b76 Little fixes 2022-07-22 15:59:00 -03:00
Fabio Belavenuto
1b766e4974 Docker: using DSM toolchain 2022-07-22 15:50:43 -03:00
Fabio Belavenuto
690af5115d Re-added Addon external download 2022-07-22 08:11:37 -03:00
Fabio Belavenuto
a6ec7c0c46 Merge pull request #50 from fbelavenuto/dev
Adding module firmwares
2022-07-21 17:24:21 -03:00
Fabio Belavenuto
37fe50a1c5 Adding module firmwares 2022-07-21 17:22:38 -03:00
Fabio Belavenuto
ce5f427837 Merge pull request #49 from fbelavenuto/dev
Synoinfo entries unified
2022-07-21 16:50:16 -03:00
Fabio Belavenuto
5dc0b6e705 Synoinfo entries unified:
Synoinfo entries from model config file are copyed to user config file when the user choose a build.
2022-07-21 16:49:04 -03:00
Fabio Belavenuto
ea67f64d31 Merge pull request #48 from fbelavenuto/dev
Fixing custom MAC address
2022-07-21 14:26:12 -03:00
Fabio Belavenuto
722c03a506 Fixing custom MAC address 2022-07-21 14:21:25 -03:00
Fabio Belavenuto
678c7b6591 Merge pull request #47 from fbelavenuto/dev
Update modules set DIRTY flag
2022-07-21 11:22:12 -03:00
Fabio Belavenuto
8f7318f90f Cosmetics
Update module sets DIRTY flag
2022-07-21 11:21:24 -03:00
Fabio Belavenuto
7b2a7b210a Added DS2422+ 42661 build 2022-07-19 14:22:40 -03:00
Fabio Belavenuto
14362aae17 Added option to boot into junior mode 2022-07-19 13:54:51 -03:00
Fabio Belavenuto
0e16f96fad Added option to boot into junior mode 2022-07-19 13:53:03 -03:00
Fabio Belavenuto
159b7172b0 Merge pull request #43 from fbelavenuto/dev
Removing no more necessary php
2022-07-19 12:44:47 -03:00
Fabio Belavenuto
75c637a6e4 Removing no more necessary php 2022-07-19 12:44:03 -03:00
Fabio Belavenuto
a3bb685def Merge pull request #42 from fbelavenuto/dev
Rewind vanilla e1000e
2022-07-19 12:30:10 -03:00
Fabio Belavenuto
42010a1dc0 Rewind vanilla e1000e 2022-07-19 12:01:44 -03:00
Fabio Belavenuto
a456c2b21e Merge pull request #41 from fbelavenuto/dev
Fixing modules
2022-07-19 09:54:32 -03:00
Fabio Belavenuto
917c5f7280 Fixing modules 2022-07-19 09:53:42 -03:00
Fabio Belavenuto
8b530f12d1 Merge pull request #40 from fbelavenuto/dev
Dev
2022-07-18 17:06:37 -03:00
Fabio Belavenuto
604728ecec Added Fusion SPI module 2022-07-18 17:05:30 -03:00
Fabio Belavenuto
de224baf98 Fixing e1000 module (kernel panic) 2022-07-18 14:48:16 -03:00
Fabio Belavenuto
6ee0672e74 Merge pull request #39 from fbelavenuto/dev
Dev
2022-07-18 13:19:05 -03:00
Fabio Belavenuto
ff422707b7 Replaced php scripts for alternatives
Add kpatch C code for patch DSM kernel
Fix ramdisk-common-init-script (wrong merge)
2022-07-18 13:15:26 -03:00
Fabio Belavenuto
9edb1cfe0f Adding title into boot screen 2022-07-18 10:46:03 -03:00
Fabio Belavenuto
755a3d6a39 Added "Define custom MAC" to cmdline menu 2022-07-18 10:30:58 -03:00
Fabio Belavenuto
a17dc55a17 Merge pull request #38 from fbelavenuto/dev
Dev
2022-07-18 10:10:03 -03:00
Fabio Belavenuto
b35a71f023 new mpt3sas module
new version
2022-07-18 10:09:33 -03:00
Fabio Belavenuto
b9a02143b1 Little bugs 2022-07-18 09:36:03 -03:00
Fabio Belavenuto
8091c22402 wip 2022-07-16 19:09:13 -03:00
Fabio Belavenuto
da93438455 Merge branch 'eudev' 2022-07-16 18:27:10 -03:00
Fabio Belavenuto
b35496d053 Using pocopico's mpt3sas 2022-07-16 18:15:51 -03:00
Fabio Belavenuto
4ee4c14090 Adding modules update menu option 2022-07-15 21:59:56 -03:00
Fabio Belavenuto
2269b4b209 Adding maxdisks manually 2022-07-15 20:33:27 -03:00
Fabio Belavenuto
4a1d78056c Testing eudev
Addons misc and acpid is optional now
2022-07-15 19:34:21 -03:00
Fabio Belavenuto
0b7c7fd816 Merge pull request #31 from fbelavenuto/dev
Fixing maxdisks/dtbpatch early bug
2022-07-15 15:59:55 -03:00
Fabio Belavenuto
84c405cdf7 Fixing maxdisks/dtbpatch early bug 2022-07-15 15:30:45 -03:00
Fabio Belavenuto
9560f40603 Update main.yml 2022-07-15 11:59:23 -03:00
Fabio Belavenuto
8718027acb Fixing bootable flag into image 2022-07-15 11:55:36 -03:00
Fabio Belavenuto
69151c65b2 Merge branch 'eudev' of github.com:fbelavenuto/arpl into eudev 2022-07-14 13:14:23 -03:00
Fabio Belavenuto
7f464a94e1 Merge branch 'dev' 2022-07-14 13:08:19 -03:00
Fabio Belavenuto
6df00babb3 change main.yml 2022-07-14 13:07:47 -03:00
Fabio Belavenuto
a21392c97e Merge pull request #30 from fbelavenuto/dev
merge dev
2022-07-14 13:04:54 -03:00
Fabio Belavenuto
d1070d37c3 Merge branch 'main' into dev 2022-07-14 13:04:12 -03:00
Fabio Belavenuto
db464ec087 Removed download addon
Little bug fixed
New version
2022-07-14 12:56:27 -03:00
Fabio Belavenuto
8093df3040 Eudev tests 2022-07-14 12:48:02 -03:00
Fabio Belavenuto
45f36ca380 Testing eudev 2022-07-13 23:21:29 -03:00
Fabio Belavenuto
9c372a2320 Adding more functions to docker image 2022-07-13 16:24:27 -03:00
Fabio Belavenuto
b44fe819d0 Reformuling modules/addons 2022-07-13 14:01:56 -03:00
Fabio Belavenuto
3512ca422a wip 2022-07-12 16:31:01 -03:00
Fabio Belavenuto
bbc44d9ba7 testes 2022-07-12 16:30:30 -03:00
Fabio Belavenuto
df1905b17d Adding linux vanilla source to docker image 2022-07-11 22:10:54 -03:00
Fabio Belavenuto
14e8ac2a5c Fix addons 2022-07-11 17:04:58 -03:00
Fabio Belavenuto
2225b6afd7 Adding buildroot package smartmontools 2022-07-11 14:22:24 -03:00
Fabio Belavenuto
fd6c9db110 Fix show menu "Show SATA(s) # ports and drives" to devicetree models.
Added alx addon
2022-07-11 12:15:49 -03:00
Fabio Belavenuto
466722e7ad Actions 2022-07-10 15:20:08 -03:00
Fabio Belavenuto
dfec0accde Merge pull request #25 from fbelavenuto/dev
Fixing addons
2022-07-10 15:10:37 -03:00
Fabio Belavenuto
1185a9144d Fixing addons 2022-07-10 14:59:54 -03:00
Fabio Belavenuto
4abaef8885 wip 2022-07-10 14:11:27 -03:00
Fabio Belavenuto
a990957148 Merge branch 'main' of github.com:fbelavenuto/arpl into dev 2022-07-10 13:31:27 -03:00
Fabio Belavenuto
c79acb8a8b Fix dtbpatch addon 2022-07-10 13:30:04 -03:00
Fabio Belavenuto
47b49ac259 Merge pull request #24 from fbelavenuto/dev
Changing version number
2022-07-10 12:48:37 -03:00
Fabio Belavenuto
6fac568cfc Merge branch 'main' of github.com:fbelavenuto/arpl into dev 2022-07-10 12:45:12 -03:00
Fabio Belavenuto
97ed86cf20 Version 0.2-alpha2 2022-07-10 12:43:31 -03:00
Fabio Belavenuto
f560f402b2 Merge pull request #23 from fbelavenuto/dev
Replacing addon 'qjs-dts' to addon 'dtbpatch'
2022-07-10 12:33:31 -03:00
Fabio Belavenuto
d0b839af26 Replacing addon 'qjs-dts' to addon 'dtbpatch' 2022-07-10 12:15:07 -03:00
Fabio Belavenuto
a8fef13c64 Merge pull request #21 from fbelavenuto/dev
Added a new step to call addons scripts.
2022-07-08 22:11:15 -03:00
Fabio Belavenuto
4a85944651 Added a new step to call addons scripts. 2022-07-08 21:51:20 -03:00
Fabio Belavenuto
1458074276 Addind missing dom_szmax for DoM 2022-07-08 15:00:24 -03:00
Fabio Belavenuto
fd1f06a7f3 Merge pull request #20 from fbelavenuto/dev
More addons
2022-07-08 14:37:33 -03:00
Fabio Belavenuto
2e4d14c25d More addons 2022-07-08 14:27:05 -03:00
Fabio Belavenuto
43338b435a Merge pull request #19 from fbelavenuto/dev
merge dev
2022-07-08 13:32:28 -03:00
Fabio Belavenuto
6ea54af667 Docker changes 2022-07-08 13:31:09 -03:00
Fabio Belavenuto
012b2d72ec Little adjust 2022-07-08 12:44:48 -03:00
Fabio Belavenuto
3dc56d40fe Merge pull request #18 from fbelavenuto/dev
testing actions
2022-07-08 10:07:18 -03:00
Fabio Belavenuto
58fbdd7b7b Merge branch 'main' into dev 2022-07-08 09:24:29 -03:00
Fabio Belavenuto
e6f5a9d415 testing actions 2022-07-08 09:22:46 -03:00
Fabio Belavenuto
cf1ac2a026 testing actions 2022-07-08 09:18:23 -03:00
Fabio Belavenuto
02ab29ace7 Merge pull request #17 from fbelavenuto/dev
Fixing synoinfo DS2422+
2022-07-08 09:06:46 -03:00
Fabio Belavenuto
d48e9f9fb6 Fixing synoinfo DS2422+
Adding maxdisks addon
2022-07-07 20:49:21 -03:00
Fabio Belavenuto
958369c5cc Merge pull request #16 from fbelavenuto/dev
merge dev
2022-07-07 16:00:19 -03:00
Fabio Belavenuto
863d949ae2 Removing workaroud, do not works with satadom 2022-07-07 15:54:07 -03:00
Fabio Belavenuto
b9c84664cd little fix 2022-07-07 15:07:44 -03:00
Fabio Belavenuto
d0ead7d18a Testing SATA DoM 2022-07-07 13:02:18 -03:00
Fabio Belavenuto
825f31287a More adjusts in actions 2022-07-07 08:28:12 -03:00
Fabio Belavenuto
73902b0609 Merge pull request #14 from green1052/patch-1
action cache update
2022-07-07 08:20:39 -03:00
green1052
c83e28613f Update main.yml 2022-07-07 17:07:49 +09:00
Fabio Belavenuto
378b10b7e3 Merge branch 'dev' 2022-07-06 21:46:31 -03:00
Fabio Belavenuto
66d8abb2f9 Adding vmdk image 2022-07-06 21:45:55 -03:00
Fabio Belavenuto
5fdf9afd22 Merge pull request #13 from fbelavenuto/dev
Adding buildroot external tree
2022-07-06 17:36:54 -03:00
Fabio Belavenuto
51b4d1666e Adding buildroot external tree
Adding r8125 and r8168 driver for loader
2022-07-06 17:36:08 -03:00
Fabio Belavenuto
5cc2f0bad3 Merge pull request #12 from fbelavenuto/dev
Fixing actions versioning
2022-07-06 13:23:43 -03:00
Fabio Belavenuto
20e6a1b030 Fixing actions
More drivers
2022-07-06 13:22:14 -03:00
Fabio Belavenuto
193a888417 Merge pull request #11 from fbelavenuto/dev
Implementing update function
2022-07-06 11:58:08 -03:00
Fabio Belavenuto
d9bae9bff3 Implementing update function 2022-07-06 11:57:41 -03:00
Fabio Belavenuto
4816e2b9d6 Try fix actions 2022-07-06 10:14:53 -03:00
Fabio Belavenuto
8be21e154f Merge branch 'dev' 2022-07-06 10:11:30 -03:00
Fabio Belavenuto
da0723baae Modules 2022-07-06 10:09:17 -03:00
Fabio Belavenuto
60ebe853a1 Adding i40e 2022-07-06 09:51:48 -03:00
Fabio Belavenuto
17b7e9c3d3 Adding ixgbe addon 2022-07-06 09:45:29 -03:00
Fabio Belavenuto
0fdd36fb66 Merge pull request #10 from fbelavenuto/dev
Fixing not needed modules
2022-07-06 09:38:04 -03:00
Fabio Belavenuto
9b623817d5 Fixing not needed modules 2022-07-06 09:36:22 -03:00
Fabio Belavenuto
285ef9beb8 Merge branch 'dev' 2022-07-05 21:48:48 -03:00
Fabio Belavenuto
fa46a643a3 Fix notneeded DS920
Update VERSION
2022-07-05 21:47:40 -03:00
Fabio Belavenuto
b76c39402e Detect maxdisks and internalportcfg automatically 2022-07-05 21:45:26 -03:00
Fabio Belavenuto
1adea60697 maxdisk option transfered to Synoinfo menu
Adding r816* to not needed modules section on DVA1622 config
2022-07-05 19:38:35 -03:00
Fabio Belavenuto
95957b3c0a Fixing DS920+ 2022-07-05 17:28:50 -03:00
Fabio Belavenuto
f234821abc Added geminilake platform to ehci-pci module 2022-07-05 15:30:28 -03:00
447 changed files with 4693 additions and 1823 deletions

3
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
# These are supported funding model platforms
github: fbelavenuto

View File

@@ -1,47 +1,34 @@
name: Build img
name: Build image
# Controls when the workflow will run
on:
# push:
# branches:
# - main
# pull_request:
# When a release is published
release:
types: [published]
# Allows you to run this workflow manually from the Actions tab
push:
branches:
- main
tags:
- v*
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
with:
submodules: recursive
# Install missing buildroot dependency
- name: Install dependency
run: |
sudo apt-get update
sudo apt-get install -y libelf-dev
# Check cache
- name: Cache buildroot
id: cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: .buildroot
key: ${{ runner.os }}-${{ hashFiles('files/configs/arpl_defconfig') }}
# Install dependencies
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libelf-dev qemu-utils
sudo cp -f files/board/arpl/overlayfs/usr/bin/yq /usr/bin/yq
# Prepare buildroot for first make (for cache)
- name: Prepare buildroot
if: steps.cache.outputs.cache-hit != 'true'
@@ -52,16 +39,16 @@ jobs:
cp -Ru files/* .buildroot
cd .buildroot
echo "Generating default config"
make arpl_defconfig
make BR2_EXTERNAL=../external arpl_defconfig
echo "First make"
make
make BR2_EXTERNAL=../external
# Build incremental from cache
- name: Build image
id: build
run: |
VERSION=`<VERSION`
echo "::set-output name=VERSION::${VERSION}"
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
# Remove old files
rm -rf .buildroot/output/target/opt/arpl
rm -rf .buildroot/board/arpl/overlayfs
@@ -89,29 +76,40 @@ jobs:
done
# Copy files
echo "Copying files"
cp -Ru files/* .buildroot/
VERSION=`cat VERSION`
sed 's/^ARPL_VERSION=.*/ARPL_VERSION="'${VERSION}'"/' -i files/board/arpl/overlayfs/opt/arpl/include/consts.sh
cp -Ru files/* .buildroot/
cd .buildroot
echo "Generating default config"
make arpl_defconfig
make BR2_EXTERNAL=../external arpl_defconfig
echo "Version: ${VERSION}"
echo "Building..."
make
make BR2_EXTERNAL=../external
cd -
qemu-img convert -O vmdk arpl.img arpl-dyn.vmdk
qemu-img convert -O vmdk -o adapter_type=lsilogic arpl.img -o subformat=monolithicFlat arpl.vmdk
# Zip image
# Zip image and generate checksum
- name: Pack
shell: bash
run: zip -9 "arpl-${{ steps.build.outputs.VERSION }}.img.zip" arpl.img
run: |
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.img.zip" arpl.img
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.vmdk-dyn.zip" arpl-dyn.vmdk
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.vmdk-flat.zip" arpl.vmdk arpl-flat.vmdk
sha256sum update-list.yml > sha256sum
yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml | while read F; do
(cd `dirname ${F}` && sha256sum `basename ${F}`) >> sha256sum
done
yq '.replace | explode(.) | to_entries | map([.key])[] | .[]' update-list.yml | xargs zip -9j "update.zip" sha256sum update-list.yml
# Upload artifact
- name: Upload
uses: actions/upload-artifact@v3
with:
name: Image to burn
path: arpl.img
retention-days: 1
name: Images
path: |
arpl.img
arpl*.vmdk
retention-days: 5
# Publish a release if is a tag
- name: Release
@@ -120,5 +118,6 @@ jobs:
with:
files: |
arpl-${{ steps.build.outputs.VERSION }}.img.zip
.buildroot/output/images/bzImage
.buildroot/output/images/rootfs.cpio.xz
arpl-${{ steps.build.outputs.VERSION }}.vmdk-dyn.zip
arpl-${{ steps.build.outputs.VERSION }}.vmdk-flat.zip
update.zip

10
.gitignore vendored
View File

@@ -1,9 +1,11 @@
!.gitkeep
.vscode
arpl.img*
arpl*.img
arpl*.vmdk
*.zip
.buildroot
test.sh
docker/Dockerfile
docker/cache
test*.sh
docker/syno-compiler/Dockerfile
cache
*.bak
*.o

View File

@@ -5,3 +5,4 @@ broadwellnk 4.4.180
denverton 4.4.180
geminilake 4.4.180
v1000 4.4.180
r1000 4.4.180

View File

@@ -2,25 +2,90 @@
This particular project was created to facilitate my testing with Redpill and I decided to share it with other users.
It is still in alpha stage, with little documentation, but it is functional. I'm Brazilian and my English is not good, so I apologize for my translations.
I'm Brazilian and my English is not good, so I apologize for my translations.
I tried to make the system as user-friendly as possible, to make life easier. The loader automatically detects which device is being used, SATADom or USB, detecting its VID and PID correctly. redpill-lkm has been edited to allow booting the kernel without setting the variables related to network interfaces so the loader (and user) doesn't have to worry about that. The Jun's code that makes the zImage and Ramdisk patch is embedded, if there is a change in "zImage" or "rd.gz" by some update, the loader re-applies the patches. Builds 42218 and 42661 up to update5 are working. Automatic updates should still be disabled as we are not sure if this technique will work forever.
I tried to make the system as user-friendly as possible, to make life easier. The loader automatically detects which device is being used, SATADoM or USB, detecting its VID and PID correctly. redpill-lkm has been edited to allow booting the kernel without setting the variables related to network interfaces so the loader (and user) doesn't have to worry about that. The Jun's code that makes the zImage and Ramdisk patch is embedded, if there is a change in "zImage" or "rd.gz" by some smallupdate, the loader re-applies the patches. The most important kernel modules are built into the DSM ramdisk image for automatic peripheral detection.
To use this project, download the latest image available and burn it to a USB stick or SATA disk-on-module. Set the PC to boot from the burned media and follow the informations on the screen. When booting, the user can call the "menu.sh" command from the computer itself, access via SSH or use the virtual terminal (ttyd) by typing the address provided on the screen (http://<ip>:7681). The loader will automatically increase the size of the last partition and use this space as cache if it is larger than 2GiB.
# Important considerations
The menu system is dynamic and I hope it is intuitive enough that the user can use it without any problems. Its allows you to choose a model, the existing buildnumber for the chosen model, randomly type or create a serial number, add/remove addons with a hardware detection option, add/remove/view "cmdline" and "synoinfo" entries, choose the LKM version, create the loader, boot, manually edit the configuration file, choose a keymap and exit.
- Some users have experienced an excessively long time to boot. In this case is highly recommended to use an SSD for the loader in the case of the option via DoM or a fast USB flash drive;
Addons and "synoinfo" entries require re-creating the loader, "cmdline" entries do not. You can view the "cmdline" and "synoinfo" entries defined for the chosen model, with user-defined entries having higher priority.
- You must have at least 4GB of RAM, both in baremetal and VMs;
There is no need to configure the VID/PID (if using a USB stick) or define the MAC Addresses of the network interfaces. If the user wants to modify the MAC Address of any interface, he must manually add "cmdline" entries in the corresponding menu (set "netif_num" according to "mac1..4" entries).
- The DSM kernel is compatible with SATA ports, not SAS/SCSI/etc. For device-tree models only SATA ports work. For the other models, another type of disks may work;
If a model is chosen that uses the Device-tree system to define the HDs, there is no need to configure anything. In the case of models that do not use device-tree, the configurations must be done manually and for this there is an option in the "Cmdline" menu to display the SATA controllers, DUMMY ports and ports in use, to assist in the creation of the "SataPortMap", "DiskIdxMap" and "sata_remap". There is also an option to change the maximum amount of HDs supported by the model, adjusting "maxdisks" and "internalportcfg" automatically.
- It is possible to use HBA cards, however SMART and serial numbers are only functional on DS3615xs, DS3617xs and DS3622xs+ models.
Another important point is that the loader detects whether or not the CPU has the FMA3 instruction and does not display the models that require it. So if the DS918+ and DVA3221 models are not displayed it is because of the CPU's lack of support for FMA instructions.
# Use
## General
To use this project, download the latest image available and burn it to a USB stick or SATA disk-on-module. Set the PC to boot from the burned media and follow the informations on the screen.
The loader will automatically increase the size of the last partition and use this space as cache if it is larger than 2GiB.
## Acessing loader
### Via terminal
Call the "menu.sh" command from the computer itself.
### Via web
From another machine into same network, type the address provided on the screen `http://<ip>:7681` in browser.
### Via ssh
From another machine into same network, use a ssh client, username `root` and password `Redp1lL-1s-4weSomE`
## Using loader
The menu system is dynamic and I hope it is intuitive enough that the user can use it without any problems.
There is no need to configure the VID/PID (if using a USB stick) or define the MAC Addresses of the network interfaces. If the user wants to modify the MAC Address of any interface, uses the "Change MAC" into "cmdline" menu.
If a model is chosen that uses the Device-tree system to define the HDs, there is no need to configure anything. In the case of models that do not use device-tree, the configurations must be done manually and for this there is an option in the "cmdline" menu to display the SATA controllers, DUMMY ports and ports in use, to assist in the creation of the "SataPortMap", "DiskIdxMap" and "sata_remap" if necessary.
Another important point is that the loader detects whether or not the CPU has the FMA3 instruction and does not display the models that require it. So if the DS918+ and DVA3221 models are not displayed it is because of the CPU's lack of support for FMA instructions. You can disable this restriction and test at your own risk.
I developed a simple patch to no longer display the DUMMY port error on models without device-tree, the user will be able to install without having to worry about it.
Addons can be downloaded and added to the loader.
## Quickstart guide
After booting the loader, the following screen should appear. Type menu.sh and press `<ENTER>`:
![](doc/first-screen.png)
If you prefer, you can access it via the web:
![](doc/ttyd.png)
Select the "model" option and choose the model you prefer:
![](doc/model.png)
Select the "Buildnumber" option and choose the first option:
![](doc/buildnumber.png)
Go to "Serial" menu and choose "Generate a random serial number".
Select the "Build" option and wait for the loader to be generated:
![](doc/making.png)
Select the "Boot" option and wait for the DSM to boot:
![](doc/DSM%20boot.png)
The DSM kernel does not display messages on the screen, so it is necessary to continue the process of configuring DSM through the browser by accessing the address `http://<ip>`.
There are several tutorials on how to configure DSM over the internet, which will not be covered here.
# Troubles/questions/etc
Please search the forums at https://xpenology.com/forum if your question/problem has been discussed and resolved. If you can't find a solution, use github issues.
# Thanks
All code was based on the work of TTG, pocopico, jumkey and others involved in continuing TTG's original redpill-load project.

26
TODO
View File

@@ -1,5 +1,10 @@
A fazer
- Implementar update do bzimage e ramdisk online
- Checar NVME no modelo DS920+, DS918+
- Checar módulo tg3 no próprio loader (BCM57780 [14e4:1692]) (#31)
- "Sensitive data" (#312)
- Checar drivers para MMC/SD/eMMC
- Checar drivers para chelsio T420, T520 e T580
-
Concluidos:
- Generalizar código dos addons
@@ -18,6 +23,19 @@ Concluidos:
- Usando TTYD para acesso via web
- Verificar se fica legal colocar na config dos modelos os addons obrigatórios como o qjs-dtb *** Usado outra maneira ***
- Implementar escolha de maxdisks
https://kb.synology.com/en-me/DSM/tutorial/What_kind_of_CPU_does_my_NAS_have
- Limpar addons quando usuário muda de modelo
- Arrumar detecção de discos/maxdisks. 918 tem só 4 discos e dá problema com proxmox
- Melhorar opções de HD, talvez criar um menu a parte
- Implementar update do bzimage e ramdisk online
- Mudar addons para colocar pacote completo na partição 3 e detectar dinâmicamente durante o boot do júnior
- Acertar flag DIRTY ao atualizar módulos, etc
- Consertar MAC custom
- Mudar synoinfo para ler do modelo e preencher no user_config, para usuário poder deletar entradas do modelo
- Validar netif_num e macX
- Descobrir como é o serial do DS2422+
- Retirar o ttyd da memória quando o root do dsm dar boot
- Adicionar mais binários para o addon dbgutils (nano, strace, etc)
- Checar se tem como atualizar microcode via addon/modules/whatever... (NOP)
- Estudar acrescentar modo simples e avançado do menu (NOP)
- J4125, HP G7 N40L desligando (#110 #160)
- Ver se vale a pena colocar uma opção para configurações extras, como escolher qual módulo realtek usar (R8168 ou R8169)

View File

@@ -12,11 +12,8 @@ tasks:
cmds:
- ./build.sh
compile-lkms:
compile-kpatch:
dir: kpatch
cmds:
- ./compile-lkm.sh
compile-addons:
dir: addons
cmds:
- ./compile-addons.sh {{.CLI_ARGS}}
- make clean all
- mv kpatch ../files/board/arpl/overlayfs/opt/arpl/

View File

@@ -1 +1 @@
0.1-alpha3
1.0-beta5

BIN
doc/DSM boot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
doc/buildnumber.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
doc/first-screen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
doc/making.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
doc/model.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
doc/ttyd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,46 +0,0 @@
#!/usr/bin/env bash
###############################################################################
function trap_cancel() {
echo "Press Control+C once more terminate the process (or wait 2s for it to restart)"
sleep 2 || exit 1
}
trap trap_cancel SIGINT SIGTERM
cd `dirname $0`
# Read platforms/kerver version
echo "Reading platforms"
declare -A PLATFORMS
while read PLATFORM KVER; do
PLATFORMS[${PLATFORM}]="${KVER}"
done <../PLATFORMS
# Download toolkits
mkdir -p cache
TOOLKIT_VER="7.0"
for PLATFORM in ${!PLATFORMS[@]}; do
echo -n "Checking cache/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "cache/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "cache/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
else
echo "OK"
fi
done
# Generate Dockerfile
echo "Generating Dockerfile"
cp Dockerfile.template Dockerfile
VALUE=""
for PLATFORM in ${!PLATFORMS[@]}; do
VALUE+="${PLATFORM}:${PLATFORMS[${PLATFORM}]} "
done
sed -i "s|@@@PLATFORMS@@@|${VALUE::-1}|g" Dockerfile
sed -i "s|@@@TOOLKIT_VER@@@|${TOOLKIT_VER}|g" Dockerfile
# Build
echo "Building... Drink a coffee and wait!"
docker image rm fbelavenuto/syno-compiler >/dev/null 2>&1
docker buildx build . --load --tag fbelavenuto/syno-compiler

View File

@@ -1,55 +0,0 @@
#!/usr/bin/env bash
function compile-module {
# Validate
if [ -z "${1}" ]; then
echo "Use: compile-module <platform>"
exit 1
fi
VALID=0
while read PLATFORM KVER; do
if [ "${PLATFORM}" = "${1}" ]; then
VALID=1
break
fi
done </opt/platforms
if [ $VALID -eq 0 ]; then
echo "Platform ${PLATFORM} not found."
exit 1
fi
echo "Compiling module for ${PLATFORM}-${KVER}..."
cp -R /input /tmp
make -C "/opt/${PLATFORM}" M="/tmp/input" modules
while read F; do
strip -g "${F}"
echo "Copying `basename ${F}`"
cp "${F}" "/output"
done < <(find /tmp/input -name \*.ko)
}
function compile-lkm {
PLATFORM=${1}
if [ -z "${PLATFORM}" ]; then
echo "Use: compile-lkm <platform>"
exit 1
fi
cp -R /input /tmp
make -C "/tmp/input" LINUX_SRC="/opt/${PLATFORM}" dev-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-dev.ko"
make -C "/tmp/input" LINUX_SRC="/opt/${PLATFORM}" clean
make -C "/tmp/input" LINUX_SRC="/opt/${PLATFORM}" prod-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-prod.ko"
}
if [ $# -lt 1 ]; then
echo "Use: <command> (<params>)"
exit 1
fi
case $1 in
bash) bash -l ;;
compile-module) compile-module $2 ;;
compile-lkm) compile-lkm $2 ;;
*) echo "Command not recognized: $1" ;;
esac

View File

@@ -3,15 +3,17 @@ ARG PLATFORMS="@@@PLATFORMS@@@"
ARG TOOLKIT_VER="@@@TOOLKIT_VER@@@"
# Copy downloaded toolkits
ADD cache /cache
ADD cache/$TOOLKIT_VER /cache
# Extract toolkits
RUN for V in ${PLATFORMS}; do \
echo "${V}" | while IFS=':' read PLATFORM KVER; do \
echo -e "${PLATFORM}\t${KVER}" >> /opt/platforms && \
echo "Extracting ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" && \
mkdir "/opt/${PLATFORM}" && \
tar -xaf "/cache/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" -C "/opt/${PLATFORM}" --strip-components=10 \
"usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-7.0/build" && \
echo -e "${PLATFORM}\t${KVER}" >> /opt/platforms; \
tar -xaf "/cache/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" -C "/opt/${PLATFORM}" --strip-components=9 \
"usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}" && \
echo "Extracting ${PLATFORM}-toolchain.txz" && \
tar -xaf "/cache/${PLATFORM}-toolchain.txz" -C "/opt/${PLATFORM}" --strip-components=1; \
done; \
done
@@ -21,15 +23,19 @@ ENV SHELL=/bin/bash \
ARCH=x86_64
RUN apt update --yes && \
apt install --yes --no-install-recommends --no-install-suggests \
build-essential nano make && \
apt install --yes --no-install-recommends --no-install-suggests --allow-unauthenticated \
ca-certificates nano curl bc kmod git gettext texinfo autopoint gawk sudo \
build-essential make ncurses-dev libssl-dev autogen automake pkg-config libtool xsltproc gperf && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
rm -rf /var/lib/apt/lists/* && \
useradd --home-dir /input --no-create-home --shell /bin/bash --uid 1000 arpl && \
echo "arpl ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/arpl
COPY --from=stage /opt /opt
COPY files/ /
WORKDIR /input
VOLUME /input /output
USER arpl
ENTRYPOINT ["/opt/do.sh"]

84
docker/syno-compiler/build.sh Executable file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
CACHE_DIR="cache"
PLATFORM_FILE="../../PLATFORMS"
###############################################################################
function trap_cancel() {
echo "Press Control+C once more terminate the process (or wait 2s for it to restart)"
sleep 2 || exit 1
}
trap trap_cancel SIGINT SIGTERM
cd `dirname $0`
###############################################################################
function prepare() {
declare -A URLS
URLS["apollolake"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28Apollolake%29/apollolake-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["broadwell"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28Broadwell%29/broadwell-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["broadwellnk"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28Broadwellnk%29/broadwellnk-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["bromolow"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20linux%203.10.108%20%28Bromolow%29/bromolow-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["denverton"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28Denverton%29/denverton-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["geminilake"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28GeminiLake%29/geminilake-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["v1000"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28V1000%29/v1000-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["r1000"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%204.4.180%20%28r1000%29/r1000-${GCCLIB_VER}_x86_64-GPL.txz"
# Read platforms/kerver version
echo "Reading platforms"
declare -A PLATFORMS
while read PLATFORM KVER; do
PLATFORMS[${PLATFORM}]="${KVER}"
done < ${PLATFORM_FILE}
# Download toolkits
mkdir -p ${CACHE_DIR}
for PLATFORM in ${!PLATFORMS[@]}; do
KVER="${PLATFORMS[${PLATFORM}]}"
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
else
echo "OK"
fi
echo -n "Checking ${CACHE_DIR}/${PLATFORM}-toolchain.txz... "
if [ ! -f "${CACHE_DIR}/${PLATFORM}-toolchain.txz" ]; then
URL=${URLS["${PLATFORM}"]}
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/${PLATFORM}-toolchain.txz"
else
echo "OK"
fi
done
# Generate Dockerfile
echo "Generating Dockerfile"
cp Dockerfile.template Dockerfile
VALUE=""
for PLATFORM in ${!PLATFORMS[@]}; do
VALUE+="${PLATFORM}:${PLATFORMS[${PLATFORM}]} "
done
sed -i "s|@@@PLATFORMS@@@|${VALUE::-1}|g" Dockerfile
sed -i "s|@@@TOOLKIT_VER@@@|${TOOLKIT_VER}|g" Dockerfile
}
# 7.0
#TOOLKIT_VER="7.0"
#TOOLCHAIN_VER="7.0-41890"
#GCCLIB_VER="gcc750_glibc226"
#prepare
#echo "Building ${TOOLKIT_VER}"
#docker image rm fbelavenuto/syno-compiler:${TOOLKIT_VER} >/dev/null 2>&1
#docker buildx build . --load --tag fbelavenuto/syno-compiler:${TOOLKIT_VER}
# 7.1
TOOLKIT_VER="7.1"
TOOLCHAIN_VER="7.1-42661"
GCCLIB_VER="gcc850_glibc226"
prepare
echo "Building ${TOOLKIT_VER}"
docker image rm fbelavenuto/syno-compiler:${TOOLKIT_VER} >/dev/null 2>&1
docker buildx build . --load --tag fbelavenuto/syno-compiler:${TOOLKIT_VER} --tag fbelavenuto/syno-compiler:latest

View File

@@ -0,0 +1,119 @@
#!/usr/bin/env bash
set -e
###############################################################################
function export-vars() {
# Validate
if [ -z "${1}" ]; then
echo "Use: export-vars <platform>"
exit 1
fi
export KSRC="/opt/${1}/build"
export CROSS_COMPILE="/opt/${1}/bin/x86_64-pc-linux-gnu-"
export CFLAGS="-I/opt/${1}/include"
export LDFLAGS="-I/opt/${1}/lib"
export LD_LIBRARY_PATH="/opt/${1}/lib"
export ARCH=x86_64
export PATH="/opt/${1}/bin:${PATH}"
export CC="x86_64-pc-linux-gnu-gcc"
export LD="x86_64-pc-linux-gnu-ld"
}
###############################################################################
function shell() {
cp /opt/${2}/build/System.map /input
export-vars $2
shift 2
bash -l $@
}
###############################################################################
function compile-module {
# Validate
if [ -z "${1}" ]; then
echo "Use: compile-module <platform>"
exit 1
fi
VALID=0
while read PLATFORM KVER; do
if [ "${PLATFORM}" = "${1}" ]; then
VALID=1
break
fi
done </opt/platforms
if [ $VALID -eq 0 ]; then
echo "Platform ${1} not found."
exit 1
fi
echo -e "Compiling module for \033[7m${PLATFORM}-${KVER}\033[0m..."
cp -R /input /tmp
export-vars ${PLATFORM}
make -C "/opt/${PLATFORM}/build" M="/tmp/input" \
${PLATFORM^^}-Y=y ${PLATFORM^^}-M=m modules
while read F; do
strip -g "${F}"
echo "Copying `basename ${F}`"
cp "${F}" "/output"
done < <(find /tmp/input -name \*.ko)
}
###############################################################################
function compile-lkm {
PLATFORM=${1}
if [ -z "${PLATFORM}" ]; then
echo "Use: compile-lkm <platform>"
exit 1
fi
cp -R /input /tmp
export-vars ${PLATFORM}
export LINUX_SRC="/opt/${PLATFORM}/build"
make -C "/tmp/input" dev-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-dev.ko"
make -C "/tmp/input" clean
make -C "/tmp/input" prod-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-prod.ko"
}
###############################################################################
# function compile-drivers {
# while read platform kver; do
# SRC_PATH="/opt/${platform}"
# echo "Compiling for ${platform}-${kver}"
# cd /opt/linux-${kver}/drivers
# while read dir; do
# if [ -f "${dir}/Makefile" ]; then
# echo "Driver `basename ${dir}`"
# grep "CONFIG_.*/.*" "${dir}/Makefile" | sed 's/.*\(CONFIG_[^)]*\).*/\1=n/g' > /tmp/env
# grep "CONFIG_.*\.o.*" "${dir}/Makefile" | sed 's/.*\(CONFIG_[^)]*\).*/\1=m/g' >> /tmp/env
# make -C "${SRC_PATH}" M=$(readlink -f "${dir}") clean
# cat /tmp/env | xargs -d '\n' make -C "${SRC_PATH}" M=$(readlink -f "${dir}") modules $@
# fi
# done < <(find -type d)
# DST_PATH="/output/compiled-mods/${platform}-${kver}"
# mkdir -p "${DST_PATH}"
# while read f; do
# strip -g "${f}"
# mv "${f}" "${DST_PATH}"
# done < <(find -name \*.ko)
# done </opt/platforms
# }
###############################################################################
###############################################################################
if [ $# -lt 1 ]; then
echo "Use: <command> (<params>)"
echo "Commands: bash | shell <platform> | compile-module <platform> | compile-lkm <platform>"
exit 1
fi
case $1 in
bash) shift && bash -l $@ ;;
shell) shell $@ ;;
compile-module) compile-module $2 ;;
compile-lkm) compile-lkm $2 ;;
# compile-drivers) compile-drivers ;;
*) echo "Command not recognized: $1" ;;
esac

View File

@@ -0,0 +1,15 @@
FROM scratch
ARG PLATFORM
ARG TOOLKIT_VER
ARG CACHE_DIR
ENV PLATFORM=${PLATFORM} TOOLKIT_VER=${TOOLKIT_VER}
ADD ${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz /
ADD ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz /
ADD ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz /
ADD rootfs /
WORKDIR /input
VOLUME /input /output
ENTRYPOINT ["/usr/bin/do.sh"]

61
docker/syno-toolkit/build.sh Executable file
View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
set -e
CACHE_DIR="cache"
PLATFORM_FILE="../../PLATFORMS"
TOOLKIT_VER=7.1
###############################################################################
function trap_cancel() {
echo "Press Control+C once more terminate the process (or wait 2s for it to restart)"
sleep 2 || exit 1
}
trap trap_cancel SIGINT SIGTERM
cd `dirname $0`
# Read platforms/kerver version
echo "Reading platforms"
declare -A PLATFORMS
while read PLATFORM KVER; do
PLATFORMS[${PLATFORM}]="${KVER}"
done < ${PLATFORM_FILE}
# Download toolkits
mkdir -p ${CACHE_DIR}
# Check base environment
echo -n "Checking ${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz... "
if [ ! -f "${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/base_env-${TOOLKIT_VER}.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz"
else
echo "OK"
fi
# Check all platforms
for PLATFORM in ${!PLATFORMS[@]}; do
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
else
echo "OK"
fi
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz"
else
echo "OK"
fi
done
# Generate docker images
for PLATFORM in ${!PLATFORMS[@]}; do
docker buildx build . --build-arg PLATFORM=${PLATFORM} --build-arg TOOLKIT_VER=${TOOLKIT_VER} --build-arg CACHE_DIR="${CACHE_DIR}" \
--tag fbelavenuto/syno-toolkit:${PLATFORM}-${TOOLKIT_VER} --load
done

View File

@@ -0,0 +1,10 @@
[[ "$-" != *i* ]] && return
export LS_OPTIONS='--color=auto'
export SHELL='linux'
eval "`dircolors`"
alias ls='ls -F -h --color=always -v --author --time-style=long-iso'
alias ll='ls -l'
alias l='ls -l -a'
alias h='history 25'
alias j='jobs -l'
export PATH="/opt/${PLATFORM}/bin:${PATH}"

View File

@@ -0,0 +1,81 @@
#!/usr/bin/env bash
set -e
###############################################################################
function compile-module {
echo -e "Compiling module for \033[7m${PLATFORM}\033[0m..."
cp -R /input /tmp
make -C ${KSRC} M=/tmp/input ${PLATFORM^^}-Y=y ${PLATFORM^^}-M=m modules
while read F; do
strip -g "${F}"
echo "Copying `basename ${F}`"
cp "${F}" "/output"
chown 1000.1000 "/output/`basename ${F}`"
done < <(find /tmp/input -name \*.ko)
}
###############################################################################
function compile-lkm {
cp -R /input /tmp
make -C "/tmp/input" dev-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-dev.ko"
chown 1000.1000 /output/redpill-dev.ko
make -C "/tmp/input" clean
make -C "/tmp/input" prod-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-prod.ko"
chown 1000.1000 /output/redpill-prod.ko
}
###############################################################################
# function compile-drivers {
# while read platform kver; do
# SRC_PATH="/opt/${platform}"
# echo "Compiling for ${platform}-${kver}"
# cd /opt/linux-${kver}/drivers
# while read dir; do
# if [ -f "${dir}/Makefile" ]; then
# echo "Driver `basename ${dir}`"
# grep "CONFIG_.*/.*" "${dir}/Makefile" | sed 's/.*\(CONFIG_[^)]*\).*/\1=n/g' > /tmp/env
# grep "CONFIG_.*\.o.*" "${dir}/Makefile" | sed 's/.*\(CONFIG_[^)]*\).*/\1=m/g' >> /tmp/env
# make -C "${SRC_PATH}" M=$(readlink -f "${dir}") clean
# cat /tmp/env | xargs -d '\n' make -C "${SRC_PATH}" M=$(readlink -f "${dir}") modules $@
# fi
# done < <(find -type d)
# DST_PATH="/output/compiled-mods/${platform}-${kver}"
# mkdir -p "${DST_PATH}"
# while read f; do
# strip -g "${f}"
# mv "${f}" "${DST_PATH}"
# done < <(find -name \*.ko)
# done </opt/platforms
# }
###############################################################################
###############################################################################
if [ $# -lt 1 ]; then
echo "Use: <command> (<params>)"
echo "Commands: shell | compile-module | compile-lkm"
exit 1
fi
export PATH="/usr/local/x86_64-pc-linux-gnu/bin:${PATH}"
export KSRC="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}/build"
export LINUX_SRC="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}/build"
export CROSS_COMPILE="/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-"
#export CFLAGS="-I/opt/${1}/include"
#export LDFLAGS="-I/opt/${1}/lib"
#export LD_LIBRARY_PATH="/opt/${1}/lib"
export ARCH=x86_64
export CC="x86_64-pc-linux-gnu-gcc"
export LD="x86_64-pc-linux-gnu-ld"
case $1 in
shell) shift && bash -l $@ ;;
compile-module) compile-module ;;
compile-lkm) compile-lkm ;;
# compile-drivers) compile-drivers ;;
*) echo "Command not recognized: $1" ;;
esac

2
external/Config.in vendored Normal file
View File

@@ -0,0 +1,2 @@
source "$BR2_EXTERNAL_ARPL_PATH/r8168/Config.in"
source "$BR2_EXTERNAL_ARPL_PATH/r8125/Config.in"

2
external/external.desc vendored Normal file
View File

@@ -0,0 +1,2 @@
name: ARPL
desc: ARPL external packages

1
external/external.mk vendored Normal file
View File

@@ -0,0 +1 @@
include $(sort $(wildcard $(BR2_EXTERNAL_ARPL_PATH)/*/*.mk))

10
external/r8125/Config.in vendored Normal file
View File

@@ -0,0 +1,10 @@
config BR2_PACKAGE_R8125
bool "r8125"
depends on BR2_LINUX_KERNEL
help
A standalone driver for the RTL8125 Ethernet adapter.
https://github.com/fbelavenuto/r8125
comment "r8125 needs a Linux kernel to be built"
depends on !BR2_LINUX_KERNEL

2
external/r8125/r8125.hash vendored Normal file
View File

@@ -0,0 +1,2 @@
# Locally computed
sha256 fe2420e69ae653e989e8ae754d4e3b5740d62b6e19911d88553106aaeaac97b4 r8125-99cd3bc868e4ba82a473d8efaedad04fedb0c0f7.tar.gz

13
external/r8125/r8125.mk vendored Normal file
View File

@@ -0,0 +1,13 @@
################################################################################
#
# r8125
#
################################################################################
R8125_VERSION = 99cd3bc868e4ba82a473d8efaedad04fedb0c0f7
R8125_SITE = $(call github,fbelavenuto,r8125,$(R8125_VERSION))
R8125_LICENSE = GPL-2.0
$(eval $(kernel-module))
$(eval $(generic-package))

10
external/r8168/Config.in vendored Normal file
View File

@@ -0,0 +1,10 @@
config BR2_PACKAGE_R8168
bool "r8168"
depends on BR2_LINUX_KERNEL
help
A standalone driver for the RTL8168 Ethernet adapter.
https://github.com/fbelavenuto/r8168
comment "r8168 needs a Linux kernel to be built"
depends on !BR2_LINUX_KERNEL

2
external/r8168/r8168.hash vendored Normal file
View File

@@ -0,0 +1,2 @@
# Locally computed
sha256 36c4ba7779259c0eee8d496ba600e5935dc8ce7b978e1dc023e1ee7de713d97e r8168-52c98bd764e6dd22ff17876afa655e9e11237cc9.tar.gz

12
external/r8168/r8168.mk vendored Normal file
View File

@@ -0,0 +1,12 @@
################################################################################
#
# r8168
#
################################################################################
R8168_VERSION = 52c98bd764e6dd22ff17876afa655e9e11237cc9
R8168_SITE = $(call github,fbelavenuto,r8168,$(R8168_VERSION))
R8168_LICENSE = GPL-2.0
$(eval $(kernel-module))
$(eval $(generic-package))

View File

@@ -110,98 +110,229 @@ CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_COMPRESS=y
CONFIG_DEBUG_DEVRES=y
CONFIG_CONNECTOR=y
CONFIG_EFI_VARS=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_VIRTIO_BLK=m
CONFIG_BLK_DEV_NVME=y
CONFIG_VMWARE_VMCI=m
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_SAS_ATA=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_HPSA=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_3W_SAS=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_SCSI_AIC79XX=m
# CONFIG_AIC79XX_DEBUG_ENABLE is not set
CONFIG_SCSI_AIC94XX=m
CONFIG_SCSI_MVSAS=m
CONFIG_SCSI_MVUMI=m
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_ARCMSR=m
CONFIG_SCSI_ESAS2R=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
CONFIG_SCSI_MPT2SAS=m
CONFIG_SCSI_MPT3SAS=m
CONFIG_SCSI_MPI3MR=m
CONFIG_SCSI_SMARTPQI=m
CONFIG_SCSI_UFSHCD=m
CONFIG_SCSI_UFSHCD_PCI=m
CONFIG_SCSI_UFS_DWC_TC_PCI=m
CONFIG_SCSI_UFSHCD_PLATFORM=m
CONFIG_SCSI_UFS_CDNS_PLATFORM=m
CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
CONFIG_SCSI_MYRB=m
CONFIG_SCSI_MYRS=m
CONFIG_VMWARE_PVSCSI=m
CONFIG_SCSI_SNIC=m
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_ISCI=m
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_STEX=m
CONFIG_SCSI_SYM53C8XX_2=m
CONFIG_SCSI_IPR=m
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_ISCSI=m
CONFIG_QEDI=m
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_AM53C974=m
CONFIG_SCSI_WD719X=m
CONFIG_SCSI_PMCRAID=m
CONFIG_SCSI_PM8001=m
CONFIG_SCSI_VIRTIO=m
CONFIG_SCSI_DH=y
CONFIG_ATA=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_AHCI_PLATFORM=m
CONFIG_SATA_ACARD_AHCI=m
CONFIG_SATA_SIL24=m
CONFIG_PDC_ADMA=m
CONFIG_SATA_QSTOR=m
CONFIG_ATA_PIIX=y
CONFIG_SATA_DWC=m
CONFIG_SATA_MV=m
CONFIG_SATA_NV=m
CONFIG_SATA_PROMISE=m
CONFIG_SATA_SIL=m
CONFIG_SATA_SIS=m
CONFIG_SATA_SVW=m
CONFIG_SATA_ULI=m
CONFIG_SATA_VIA=m
CONFIG_PATA_AMD=y
CONFIG_PATA_OLDPIIX=y
CONFIG_PATA_SCH=y
CONFIG_SATA_VITESSE=m
CONFIG_ATA_GENERIC=y
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_MIRROR=y
CONFIG_DM_RAID=m
CONFIG_DM_ZERO=y
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_CTL=m
CONFIG_NETDEVICES=y
CONFIG_NET_TEAM=m
CONFIG_MACVLAN=m
CONFIG_IPVLAN=m
CONFIG_VXLAN=m
CONFIG_NETCONSOLE=y
CONFIG_VIRTIO_NET=m
CONFIG_ET131X=m
CONFIG_SLICOSS=m
CONFIG_ACENIC=m
CONFIG_ENA_ETHERNET=m
CONFIG_AMD8111_ETH=m
CONFIG_PCNET32=m
CONFIG_AMD_XGBE=m
CONFIG_AQTION=m
CONFIG_ATL1=m
CONFIG_ATL1E=m
CONFIG_ATL1C=m
CONFIG_ALX=m
CONFIG_B44=m
CONFIG_BCMGENET=m
CONFIG_CNIC=m
CONFIG_TIGON3=y
CONFIG_BNX2X=m
CONFIG_SYSTEMPORT=m
CONFIG_BNXT=m
CONFIG_BNA=m
CONFIG_MACB=m
CONFIG_THUNDER_NIC_PF=m
CONFIG_THUNDER_NIC_VF=m
CONFIG_LIQUIDIO=m
CONFIG_LIQUIDIO_VF=m
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=m
CONFIG_NET_TULIP=y
CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4VF=m
CONFIG_ENIC=m
CONFIG_CX_ECAT=m
CONFIG_DNET=m
CONFIG_DL2K=m
CONFIG_SUNDANCE=m
CONFIG_BE2NET=m
# CONFIG_NET_VENDOR_GOOGLE is not set
CONFIG_HINIC=m
CONFIG_E100=y
CONFIG_E1000=y
CONFIG_E1000E=y
CONFIG_E1000=m
CONFIG_E1000E=m
CONFIG_IGB=m
CONFIG_IGBVF=m
CONFIG_IXGB=m
CONFIG_IXGBE=m
CONFIG_IXGBEVF=m
CONFIG_I40E=m
CONFIG_ICE=m
CONFIG_FM10K=m
CONFIG_IGC=m
CONFIG_JME=m
CONFIG_MVMDIO=m
CONFIG_SKGE=m
CONFIG_SKY2=y
CONFIG_MLX4_EN=m
CONFIG_MYRI10GE=m
CONFIG_NATSEMI=m
CONFIG_NS83820=m
CONFIG_S2IO=m
CONFIG_VXGE=m
CONFIG_NFP=m
CONFIG_NI_XGE_MANAGEMENT_ENET=m
CONFIG_FORCEDETH=m
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
CONFIG_NETXEN_NIC=m
CONFIG_QED=m
CONFIG_BNA=m
CONFIG_QEDE=m
CONFIG_QCOM_EMAC=m
CONFIG_RMNET=m
CONFIG_R8169=m
CONFIG_SXGBE_ETH=m
CONFIG_SFC=m
# CONFIG_SFC_MCDI_MON is not set
# CONFIG_SFC_MCDI_LOGGING is not set
CONFIG_SFC_FALCON=m
CONFIG_SIS190=m
CONFIG_STMMAC_ETH=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
CONFIG_NIU=m
CONFIG_DWC_XLGMAC=m
CONFIG_TEHUTI=m
CONFIG_VIA_VELOCITY=m
CONFIG_XILINX_AXI_EMAC=m
CONFIG_XILINX_LL_TEMAC=m
CONFIG_REALTEK_PHY=y
# CONFIG_USB_NET_DRIVERS is not set
CONFIG_USB_NET_DRIVERS=m
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
CONFIG_USB_LAN78XX=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_CDC_EEM=m
CONFIG_USB_NET_HUAWEI_CDC_NCM=m
CONFIG_USB_NET_CDC_MBIM=m
CONFIG_USB_NET_DM9601=m
CONFIG_USB_NET_SR9700=m
CONFIG_USB_NET_SR9800=m
CONFIG_USB_NET_SMSC75XX=m
CONFIG_USB_NET_SMSC95XX=m
CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_NET_CX82310_ETH=m
CONFIG_USB_NET_KALMIA=m
CONFIG_USB_NET_QMI_WWAN=m
CONFIG_USB_NET_INT51X1=m
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
CONFIG_USB_NET_CH9200=m
CONFIG_USB_NET_AQC111=m
CONFIG_USB_RTL8153_ECM=m
# CONFIG_WLAN is not set
CONFIG_VMXNET3=m
CONFIG_INPUT_EVDEV=y
@@ -229,8 +360,11 @@ CONFIG_AGP=y
CONFIG_AGP_AMD64=y
CONFIG_AGP_INTEL=y
CONFIG_DRM=y
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_TILEBLITTING=y
CONFIG_FB_VGA16=m
CONFIG_FB_UVESA=m
CONFIG_FB_VESA=y
CONFIG_FB_EFI=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
@@ -306,9 +440,6 @@ CONFIG_AUTOFS4_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_INODE64=y
CONFIG_HUGETLBFS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3_ACL=y

View File

@@ -15,17 +15,17 @@ BOARD_PATH="${CONFIG_DIR}/board/arpl"
echo "Creating image file"
# Create image zeroed
dd if="/dev/zero" of="${IMAGE_FILE}" bs=1M count=250 conv=sync 2>/dev/null
dd if="/dev/zero" of="${IMAGE_FILE}" bs=1M count=500 conv=sync 2>/dev/null
# Copy grub stage1 to image
dd if="${BOARD_PATH}/grub.bin" of="${IMAGE_FILE}" conv=notrunc,sync 2>/dev/null
# Create partitions on image
echo -e "n\np\n\n\n+100M\nt\n\n0b\nn\np\n\n\n+100M\nn\np\n\n\n\nw" | fdisk "${IMAGE_FILE}" >/dev/null
echo -e "n\np\n\n\n+50M\na\nt\n\n0b\nn\np\n\n\n+50M\nn\np\n\n\n\nw" | fdisk "${IMAGE_FILE}" >/dev/null
# Force umount, ignore errors
sudo umount "${BINARIES_DIR}/p1" 2>/dev/null || true
sudo umount "${BINARIES_DIR}/p3" 2>/dev/null || true
# Force unsetup of loop device
sudSetupo losetup -d "/dev/loop8" 2>/dev/null || true
sudo losetup -d "/dev/loop8" 2>/dev/null || true
# Setup the loop8 loop device
sudo losetup -P "/dev/loop8" "${IMAGE_FILE}"
# Format partitions
@@ -40,8 +40,8 @@ sudo mount /dev/loop8p1 "${BINARIES_DIR}/p1"
sudo mount /dev/loop8p3 "${BINARIES_DIR}/p3"
echo "Copying files"
sudo cp "${BINARIES_DIR}/bzImage" "${BINARIES_DIR}/p1/bzImage-arpl"
sudo cp "${BINARIES_DIR}/rootfs.cpio.xz" "${BINARIES_DIR}/p1/initrd-arpl"
sudo cp "${BINARIES_DIR}/bzImage" "${BINARIES_DIR}/p3/bzImage-arpl"
sudo cp "${BINARIES_DIR}/rootfs.cpio.xz" "${BINARIES_DIR}/p3/initrd-arpl"
sudo cp -R "${BOARD_PATH}/p1/"* "${BINARIES_DIR}/p1"
sudo cp -R "${BOARD_PATH}/p3/"* "${BINARIES_DIR}/p3"
sync

View File

@@ -0,0 +1,33 @@
#!/bin/sh
#
# Start/stop dhcpcd
#
DAEMON=/usr/sbin/dhcpcd
CONFIG=/etc/dhcpcd.conf
PIDFILE=/var/run/dhcpcd/pid
[ -f $CONFIG ] || exit 0
case "$1" in
start)
echo "Starting dhcpcd..."
start-stop-daemon -S -x "$DAEMON" -p "$PIDFILE" -- -f "$CONFIG"
;;
stop)
echo "Stopping dhcpcd..."
start-stop-daemon -K -x "$DAEMON" -p "$PIDFILE" -o
;;
reload|force-reload)
echo "Reloading dhcpcd configuration..."
"$DAEMON" -s reload
;;
restart)
"$0" stop
sleep 1 # Prevent race condition: ensure dhcpcd stops before start.
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart|reload|force-reload}"
exit 1
esac

View File

@@ -30,7 +30,7 @@ null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
# Login in terminals
::respawn:/sbin/agetty -a root --noclear tty1
ttyS0::askfirst:/sbin/agetty -a root ttyS0 115200 vt100
ttyS0::askfirst:/sbin/agetty -a root ttyS0 115200 linux
::respawn:/usr/bin/ttyd login -f root
# Stuff to do for the 3-finger salute

View File

@@ -0,0 +1,20 @@
[global]
workgroup = WORKGROUP
server role = standalone server
obey pam restrictions = yes
map to guest = Bad User
usershare allow guests = yes
dfree command = /usr/bin/df
[arpl]
browseable = yes
public = yes
path = /mnt
guest ok = yes
printable = no
read only = no
writable = yes
create mask = 0600
directory mask = 0700
force user = root
force group = root

View File

@@ -7,14 +7,19 @@ set -e
# Sanity check
loaderIsConfigured || die "Loader is not configured!"
# Print text centralized, if variable ${COLUMNS} is defined
# Print text centralized
clear
[ -z "${COLUMNS}" ] && COLUMNS=50
TITLE="Welcome to Automated Redpill Loader v${ARPL_VERSION}"
printf "\033[1;44m%*s\n" ${COLUMNS} ""
printf "\033[1;44m%*s\033[A\n" ${COLUMNS} ""
printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE}+${COLUMNS})/2)) "${TITLE}"
printf "\033[1;44m%*s\033[0m\n" ${COLUMNS} ""
TITLE="BOOTING..."
if [ -z "${COLUMNS}" ]; then
echo -e "\033[1;33m${TITLE}\033[0m"
else
printf "\033[1;33m%*s\033[0m\n" $(((${#TITLE}+${COLUMNS})/2)) "${TITLE}"
fi
printf "\033[1;33m%*s\033[0m\n" $(((${#TITLE}+${COLUMNS})/2)) "${TITLE}"
history -w
sync
# Check if DSM zImage changed, patch it if necessary
ZIMAGE_HASH="`readConfigKey "zimage-hash" "${USER_CONFIG_FILE}"`"
@@ -47,6 +52,9 @@ MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`"
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`"
SN="`readConfigKey "sn" "${USER_CONFIG_FILE}"`"
echo -e "Model: \033[1;36m${MODEL}\033[0m"
echo -e "Build: \033[1;36m${BUILD}\033[0m"
declare -A CMDLINE
# Fixed values
@@ -74,29 +82,72 @@ EFI_BUG="`readModelKey "${MODEL}" "builds.${BUILD}.efi-bug"`"
LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`"
BUS=`udevadm info --query property --name ${LOADER_DISK} | grep ID_BUS | cut -d= -f2`
if [ "${BUS}" = "ata" ]; then
LOADER_DEVICE_NAME=`echo ${LOADER_DISK} | sed 's|/dev/||'`
SIZE=$((`cat /sys/block/${LOADER_DEVICE_NAME}/size`/2048+10))
# Read SATADoM type
DOM="`readModelKey "${MODEL}" "dom"`"
fi
# Validate netif_num
NETIF_NUM=${CMDLINE["netif_num"]}
MACS=0
for N in `seq 1 9`; do
[ -n "${CMDLINE["mac${N}"]}" ] && MACS=$((${MACS}+1))
done
if [ ${NETIF_NUM} -ne ${MACS} ]; then
echo -e "\033[1;33m*** netif_num is not equal to macX amount, set netif_num to ${MACS} ***\033[0m"
CMDLINE["netif_num"]=${MACS}
fi
# Prepare command line
CMDLINE_LINE=""
grep -q "force_junior" /proc/cmdline && CMDLINE_LINE+="force_junior "
[ ${EFI} -eq 1 ] && CMDLINE_LINE+="withefi "
[ "${BUS}" = "ata" ] && CMDLINE_LINE+="synoboot_satadom=1 "
[ "${BUS}" = "ata" ] && CMDLINE_LINE+="synoboot_satadom=${DOM} dom_szmax=${SIZE} "
CMDLINE_DIRECT="${CMDLINE_LINE}"
CMDLINE_LINE+="console=ttyS0,115200n8 earlyprintk log_buf_len=32M earlycon=uart8250,io,0x3f8,115200n8 elevator=elevator root=/dev/md0 loglevel=15"
for KEY in ${!CMDLINE[@]}; do
VALUE="${CMDLINE[${KEY}]}"
CMDLINE_LINE+=" ${KEY}"
CMDLINE_DIRECT+=" ${KEY}"
[ -n "${VALUE}" ] && CMDLINE_LINE+="=${VALUE}"
[ -n "${VALUE}" ] && CMDLINE_DIRECT+="=${VALUE}"
done
# Escape special chars
CMDLINE_LINE=`echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g'`
# Inform user
echo -e "Model: \033[1;36m${MODEL}\033[0m"
echo -e "Build: \033[1;36m${BUILD}\033[0m"
CMDLINE_DIRECT=`echo ${CMDLINE_DIRECT} | sed 's/>/\\\\>/g'`
echo -e "Cmdline:\n\033[1;36m${CMDLINE_LINE}\033[0m"
# Wait for an IP
COUNT=0
echo -n "IP"
while true; do
IP=`ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'`
if [ -n "${IP}" ]; then
echo -e ": \033[1;32m${IP}\033[0m"
break
elif [ ${COUNT} -eq 30 ]; then
echo -e ": \033[1;31mERROR\033[0m"
break
fi
COUNT=$((${COUNT}+1))
sleep 1
echo -n "."
done
DIRECT="`readConfigKey "directboot" "${USER_CONFIG_FILE}"`"
if [ "${DIRECT}" = "true" ]; then
grub-editenv ${GRUB_PATH}/grubenv set dsm_cmdline="${CMDLINE_DIRECT}"
echo -e "\033[1;33mReboot to boot directly in DSM\033[0m"
grub-editenv ${GRUB_PATH}/grubenv set next_entry="direct"
reboot
sleep 100
exit
fi
echo -e "\033[1;37mLoading DSM kernel...\033[0m"
# Executes DSM kernel via KEXEC
history -a
sync
if [ "${EFI_BUG}" = "yes" -a ${EFI} -eq 1 ]; then
echo -e "\033[1;33mWarning, running kexec with --noefi param, strange things will happen!!\033[0m"
kexec --noefi -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog

View File

@@ -1,245 +0,0 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
* This file contains usual common functions used by patchers
*
* Most of the functions here are written to be C-like without utilizing any of the PHP's magic. This functionality is
* ultimately intended to be rewritten into a dynamic patcher in C. Making this code compatible wtih simple C (e.g.
* by not using fancy regexes) will make it slower in PHP but MUCH easier to rewrite into C later on.
*/
function perr(string $txt, $die = false)
{
fwrite(STDERR, $txt);
if ($die) {
die();
}
}
/**
* @return int
*/
function getELFSectionAddr(string $elf, string $section, int $pos)
{
$secAddr = exec(
sprintf('readelf -S \'%1$s\' | grep -E \'\s%2$s\s\' | awk -F\'%2$s\' \'{ print $2 }\' | awk \'{ print $%3$d }\'', $elf, str_replace('.', '\.', $section), $pos)
);
if (!$secAddr) {
perr("$section section not found in $elf file\n", true);
}
$secAddr = hexdec(substr($secAddr, -8));
perr("Found $section at " . decTo32bUFhex($secAddr) . " in $elf\n");
return $secAddr;
}
function getELFStringLoc(string $elf, string $text)
{
$strAddr = exec(
sprintf(
'readelf -p \'.rodata\' \'%s\' | grep \'%s\' | grep -oE \'\[(\s+)?.+\]\' | grep -oE \'[a-f0-9]+\'',
$elf, $text
)
);
if (!$strAddr) {
perr("$text string not found in $elf file's .rodata section\n", true);
}
$secAddr = hexdec(substr($strAddr, -8));
perr("Found \"$text\" at " . decTo32bUFhex($secAddr) . " in $elf\n");
return $secAddr;
}
function getArgFilePath(int $argn)
{
global $argv;
$file = realpath($argv[$argn]);
if (!is_file($file) || !$file) {
perr("Expected a readable file in argument $argn - found none\n", true);
}
return $file;
}
/**
* Converts decimal value to 32-bit little-endian hex value
*/
function decTo32bLEhex(int $dec)
{
$hex = str_pad(dechex($dec), 32 / 8 * 2, 'f', STR_PAD_LEFT); //32-bit hex
return implode('', array_reverse(str_split($hex, 2))); //make it little-endian
}
/**
* Converts decimal value to 32-bit user-friendly (and big-endian) hex value
*
* This function should really be used for printing
*/
function decTo32bUFhex(int $dec)
{
return implode(' ', str_split(str_pad(dechex($dec), 32 / 8 * 2, 'f', STR_PAD_LEFT), 2));
}
function rawToUFhex(string $raw)
{
$out = '';
for($i=0, $iMax = strlen($raw); $i < $iMax; $i++) {
$out .= sprintf('%02x', ord($raw[$i]));
if ($i+1 !== $iMax) {
$out .= ' ';
}
}
return $out;
}
/**
* Convert hex values to their binary/raw counterparts as-is
*/
function hex2raw(string $hex)
{
$bin = '';
for ($i = 0, $iMax = strlen($hex); $i < $iMax; $i += 2) {
$bin .= chr(hexdec($hex[$i] . $hex[$i + 1]));
}
return $bin;
}
const DIR_FWD = 1;
const DIR_RWD = -1;
function findSequence($fp, string $bin, int $pos, int $dir, int $maxToCheck)
{
if ($maxToCheck === -1) {
$maxToCheck = PHP_INT_MAX;
}
$len = strlen($bin);
do {
fseek($fp, $pos);
if (strcmp(fread($fp, $len), $bin) === 0) {
return $pos;
}
$pos = $pos + $dir;
$maxToCheck--;
} while (!feof($fp) && $pos != -1 && $maxToCheck != 0);
return -1;
}
/**
* Locates a pattern of bytes $searchSeqNum in a $fp stream starting from $pos seeking up to $maxToCheck
*
* @param array $searchSeqNum An array containing n elements (where n=length of the searched sequence). Each element can
* be a null (denoting "any byte"), singular hex/int value (e.g. 0xF5), or a range in a form
* of a two-element array (e.g. [0xF0, 0xF7])
*/
function findSequenceWithWildcard($fp, array $searchSeqNum, int $pos, int $maxToCheck)
{
if ($maxToCheck === -1) {
$maxToCheck = PHP_INT_MAX;
}
$bufLen = count($searchSeqNum);
if ($maxToCheck < $bufLen) {
perr("maxToCheck cannot be smaller than search sequence!", true);
}
//Convert all singular value to raw bytes while leaving arrays as numeric (performance reasons). As this loop is
//executed once per pattern it can be sub-optimal but more careful with data validation
$searchSeq = [];
foreach ($searchSeqNum as $idx => $num) {
if ($num === null) {
$searchSeq[] = null;
} elseif (is_array($num) && count($num) == 2 && is_int($num[0]) && is_int($num[1]) && $num[0] >= 0 &&
$num[0] <= 255 && $num[1] >= 0 && $num[1] <= 255 && $num[0] < $num[1]) {
$searchSeq[] = $num; //Leave them as numeric
} elseif (is_int($num) && $num >= 0 && $num <= 255) {
$searchSeq[] = chr($num);
} else {
perr("Found invalid search sequence at index $idx", true);
}
}
//$pos denotes start position but it's also used to mark where start of a potential pattern match was found
fseek($fp, $pos);
do { //This loop is optimized for speed
$buf = fread($fp, $bufLen);
if (!isset($buf[$bufLen-1])) {
break; //Not enough data = no match
}
$successfulLoops = 0;
foreach ($searchSeq as $byteIdx => $seekByte) {
if ($seekByte === null) { //any character
++$successfulLoops;
continue;
}
//element in the array can be a range [(int)from,(int)to] or a literal SINGLE byte
//if isset finds a second element it will mean for us that it's an array of 2 elements (as we don't expect
//a string longer than a single byte)
if (isset($seekByte[1])) {
$curByteNum = ord($buf[$byteIdx]);
if ($curByteNum < $seekByte[0] || $curByteNum > $seekByte[1]) {
break;
}
} elseif($buf[$byteIdx] !== $seekByte) { //If the byte doesn't match literally we know it's not a match
break;
}
++$successfulLoops;
}
if ($successfulLoops === $bufLen) {
return $pos;
}
fseek($fp, ++$pos);
$maxToCheck--;
} while (!feof($fp) && $maxToCheck != 0);
return -1;
}
/**
* @return resource
*/
function getFileMemMapped(string $path)
{
$fp = fopen('php://memory', 'r+');
fwrite($fp, file_get_contents($path)); //poor man's mmap :D
return $fp;
}
function saveStreamToFile($fp, string $path)
{
perr("Saving stream to $path ...\n");
$fp2 = fopen($path, 'w');
fseek($fp, 0);
while (!feof($fp)) {
fwrite($fp2, fread($fp, 8192));
}
fclose($fp2);
perr("DONE!\n");
}
/**
* Do not call this in time-sensitive code...
*/
function readAt($fp, int $pos, int $len)
{
fseek($fp, $pos);
return fread($fp, $len);
}

View File

@@ -1,8 +0,0 @@
#!/usr/bin/env php
<?php
if ($argc < 2 || $argc > 2) {
fwrite(STDERR, "Usage: " . $argv[0] . " <file>\n");
die();
}
echo hash_file('crc32b', $argv[1]);
?>

View File

@@ -0,0 +1 @@
kmod

View File

@@ -1,20 +1,25 @@
ARPL_VERSION="0.1-alpha3"
ARPL_VERSION="1.0-beta5"
# Define paths
TMP_PATH="/tmp"
UNTAR_PAT_PATH="${TMP_PATH}/pat"
RAMDISK_PATH="${TMP_PATH}/ramdisk"
LOG_FILE="${TMP_PATH}/log.txt"
USER_CONFIG_FILE="${BOOTLOADER_PATH}/user-config.yml"
MOD_ZIMAGE_FILE="${BOOTLOADER_PATH}/zImage"
MOD_RDGZ_FILE="${BOOTLOADER_PATH}/rd.gz"
GRUB_PATH="${BOOTLOADER_PATH}/grub"
ORI_ZIMAGE_FILE="${SLPART_PATH}/zImage"
ORI_RDGZ_FILE="${SLPART_PATH}/rd.gz"
ARPL_BZIMAGE_FILE="${CACHE_PATH}/bzImage-arpl"
ARPL_RAMDISK_FILE="${CACHE_PATH}/initrd-arpl"
MOD_ZIMAGE_FILE="${CACHE_PATH}/zImage-dsm"
MOD_RDGZ_FILE="${CACHE_PATH}/initrd-dsm"
ADDONS_PATH="${CACHE_PATH}/addons"
LKM_PATH="${CACHE_PATH}/lkms"
MODULES_PATH="${CACHE_PATH}/modules"
MODEL_CONFIG_PATH="/opt/arpl/model-configs"
INCLUDE_PATH="/opt/arpl/include"

View File

@@ -146,3 +146,25 @@ function arrayExistItem() {
done
return ${EXISTS}
}
###############################################################################
# Replace/remove/add values in .conf K=V file
# 1 - name
# 2 - new_val
# 3 - path
function _set_conf_kv() {
# Delete
if [ -z "$2" ]; then
sed -i "$3" -e "s/^$1=.*$//"
return $?;
fi
# Replace
if grep -q "^$1=" "$3"; then
sed -i "$3" -e "s\"^$1=.*\"$1=\\\"$2\\\"\""
return $?
fi
# Add if doesn't exist
echo "$1=\"$2\"" >> $3
}

View File

@@ -0,0 +1,22 @@
###############################################################################
# Return list of all modules available
# 1 - Platform
# 2 - Kernel Version
function getAllModules() {
PLATFORM=${1}
KVER=${2}
# 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"
# Get list of all modules
for F in `ls ${TMP_PATH}/modules/*.ko`; do
X=`basename ${F}`
M=${X:0:-3}
DESC=`modinfo ${F} | awk -F':' '/description/{ print $2}' | awk '{sub(/^[ ]+/,""); print}'`
[ -z "${DESC}" ] && DESC="${X}"
echo "${M} \"${DESC}\""
done
rm -rf "${TMP_PATH}/modules"
}

View File

@@ -21,6 +21,14 @@ if [ $NUM_PARTITIONS -ne 3 ]; then
die "Loader disk not found!"
fi
# Shows title
clear
TITLE="Welcome to Automated Redpill Loader v${ARPL_VERSION}"
printf "\033[1;44m%*s\n" $COLUMNS ""
printf "\033[1;44m%*s\033[A\n" $COLUMNS ""
printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE}+$COLUMNS)/2)) "${TITLE}"
printf "\033[1;44m%*s\033[0m\n" $COLUMNS ""
# Check partitions and ignore errors
fsck.vfat -aw ${LOADER_DISK}1 >/dev/null 2>&1 || true
fsck.ext2 -p ${LOADER_DISK}2 >/dev/null 2>&1 || true
@@ -34,7 +42,6 @@ mount ${LOADER_DISK}1 ${BOOTLOADER_PATH} || die "Can't mount ${BOOTLOADER_PATH}"
mount ${LOADER_DISK}2 ${SLPART_PATH} || die "Can't mount ${SLPART_PATH}"
mount ${LOADER_DISK}3 ${CACHE_PATH} || die "Can't mount ${CACHE_PATH}"
mkdir -p "${ADDONS_PATH}"
# Move/link SSH machine keys to/from cache volume
[ ! -d "${CACHE_PATH}/ssh" ] && cp -R "/etc/ssh" "${CACHE_PATH}/ssh"
rm -rf "/etc/ssh"
@@ -43,19 +50,53 @@ ln -s "${CACHE_PATH}/ssh" "/etc/ssh"
rm -rf ~/.bash_history
ln -s ${CACHE_PATH}/.bash_history ~/.bash_history
# Check if exists directories into P3 partition, if yes remove and link it
if [ -d "${CACHE_PATH}/model-configs" ]; then
rm -rf "${MODEL_CONFIG_PATH}"
ln -s "${CACHE_PATH}/model-configs" "${MODEL_CONFIG_PATH}"
fi
if [ -d "${CACHE_PATH}/patch" ]; then
rm -rf "${PATCH_PATH}"
ln -s "${CACHE_PATH}/patch" "${PATCH_PATH}"
fi
# Get first MAC address
MAC=`ip link show eth0 | awk '/ether/{print$2}'`
MACF=`echo ${MAC} | sed 's/://g'`
# If user config file not exists, initialize it
if [ ! -f "${USER_CONFIG_FILE}" ]; then
touch "${USER_CONFIG_FILE}"
writeConfigKey "lkm" "dev" "${USER_CONFIG_FILE}"
writeConfigKey "directboot" "false" "${USER_CONFIG_FILE}"
writeConfigKey "model" "" "${USER_CONFIG_FILE}"
writeConfigKey "build" "" "${USER_CONFIG_FILE}"
writeConfigKey "sn" "" "${USER_CONFIG_FILE}"
writeConfigKey "maxdisks" "" "${USER_CONFIG_FILE}"
writeConfigKey "layout" "qwerty" "${USER_CONFIG_FILE}"
writeConfigKey "keymap" "" "${USER_CONFIG_FILE}"
writeConfigKey "zimage-hash" "" "${USER_CONFIG_FILE}"
writeConfigKey "ramdisk-hash" "" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "addons" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "addons.misc" "" "${USER_CONFIG_FILE}"
writeConfigKey "addons.acpid" "" "${USER_CONFIG_FILE}"
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
# Initialize with real MAC
writeConfigKey "cmdline.netif_num" "1" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline.mac1" "${MACF}" "${USER_CONFIG_FILE}"
fi
writeConfigKey "original-mac" "${MACF}" "${USER_CONFIG_FILE}"
# Set custom MAC if defined
MAC1=`readConfigKey "cmdline.mac1" "${USER_CONFIG_FILE}"`
if [ -n "${MAC1}" -a "${MAC1}" != "${MACF}" ]; then
MAC="${MAC1:0:2}:${MAC1:2:2}:${MAC1:4:2}:${MAC1:6:2}:${MAC1:8:2}:${MAC1:10:2}"
echo "Setting MAC to ${MAC}"
ip link set dev eth0 address ${MAC} >/dev/null 2>&1 && \
(/etc/init.d/S41dhcpcd restart >/dev/null 2>&1 &) || true
fi
# Get the VID/PID if we are in USB
@@ -73,14 +114,6 @@ fi
writeConfigKey "vid" ${VID} "${USER_CONFIG_FILE}"
writeConfigKey "pid" ${PID} "${USER_CONFIG_FILE}"
# Shows title
clear
TITLE="Welcome to Automated Redpill Loader v${ARPL_VERSION}"
printf "\033[1;44m%*s\n" $COLUMNS ""
printf "\033[1;44m%*s\033[A\n" $COLUMNS ""
printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE}+$COLUMNS)/2)) "${TITLE}"
printf "\033[1;44m%*s\033[0m\n" $COLUMNS ""
# Inform user
echo -en "Loader disk: \033[1;32m${LOADER_DISK}\033[0m ("
if [ "${BUS}" = "usb" ]; then
@@ -101,12 +134,13 @@ if [ ${SIZEOFDISK} -ne ${ENDSECTOR} ]; then
fi
# Load keymap name
LAYOUT="`readConfigKey "layout" "${USER_CONFIG_FILE}"`"
KEYMAP="`readConfigKey "keymap" "${USER_CONFIG_FILE}"`"
# Loads a keymap if is valid
if [ -f /usr/share/keymaps/i386/qwerty/${KEYMAP}.map.gz ]; then
echo -e "Loading keymap \033[1;32m${KEYMAP}\033[0m"
zcat /usr/share/keymaps/i386/qwerty/${KEYMAP}.map.gz | loadkeys
if [ -f /usr/share/keymaps/i386/${LAYOUT}/${KEYMAP}.map.gz ]; then
echo -e "Loading keymap \033[1;32m${LAYOUT}/${KEYMAP}\033[0m"
zcat /usr/share/keymaps/i386/${LAYOUT}/${KEYMAP}.map.gz | loadkeys
fi
# Decide if boot automatically
@@ -126,7 +160,7 @@ fi
COUNT=0
echo -n "Waiting IP."
while true; do
if [ ${COUNT} -eq 15 ]; then
if [ ${COUNT} -eq 30 ]; then
echo "ERROR"
break
fi
@@ -147,3 +181,15 @@ echo
echo -e "User config is on \033[1;32m${USER_CONFIG_FILE}\033[0m"
echo -e "Default SSH Root password is \033[1;31mRedp1lL-1s-4weSomE\033[0m"
echo
# Check memory
RAM=`free -m | awk '/Mem:/{print$2}'`
if [ ${RAM} -le 3500 ]; then
echo -e "\033[1;33mYou have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of memory.\033[0m\n"
fi
mkdir -p "${ADDONS_PATH}"
mkdir -p "${LKM_PATH}"
mkdir -p "${MODULES_PATH}"
install-addons.sh

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
. /opt/arpl/include/functions.sh
set -e
# Detect if has new local plugins to install/reinstall
for F in `ls ${CACHE_PATH}/*.addon 2>/dev/null`; do
ADDON=`basename "${F}" | sed 's|.addon||'`
rm -rf "${ADDONS_PATH}/${ADDON}"
mkdir -p "${ADDONS_PATH}/${ADDON}"
echo "Installing ${F} to ${ADDONS_PATH}/${ADDON}"
tar xaf "${F}" -C "${ADDONS_PATH}/${ADDON}"
rm -f "${F}"
done

Binary file not shown.

Binary file not shown.

View File

@@ -2,6 +2,7 @@
. /opt/arpl/include/functions.sh
. /opt/arpl/include/addons.sh
. /opt/arpl/include/modules.sh
# Check partition 3 space, if < 2GiB uses ramdisk
RAMCACHE=0
@@ -14,24 +15,15 @@ fi
# Get actual IP
IP=`ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'`
# Define classes for hw detection
declare -A CLASSES
CLASSES["0100"]="SCSI"
CLASSES["0106"]="SATA"
CLASSES["0101"]="IDE"
CLASSES["0107"]="SAS"
CLASSES["0200"]="Ethernet"
CLASSES["0300"]="VGA"
CLASSES["0c03"]="USB Controller"
CLASSES["0c04"]="Fiber Channel"
# Dirty flag
DIRTY=0
MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`"
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`"
LAYOUT="`readConfigKey "layout" "${USER_CONFIG_FILE}"`"
KEYMAP="`readConfigKey "keymap" "${USER_CONFIG_FILE}"`"
LKM="`readConfigKey "lkm" "${USER_CONFIG_FILE}"`"
DIRECTBOOT="`readConfigKey "directboot" "${USER_CONFIG_FILE}"`"
SN="`readConfigKey "sn" "${USER_CONFIG_FILE}"`"
###############################################################################
@@ -59,9 +51,9 @@ function backtitle() {
BACKTITLE+=" (no IP)"
fi
if [ -n "${KEYMAP}" ]; then
BACKTITLE+=" (${KEYMAP})"
BACKTITLE+=" (${LAYOUT}/${KEYMAP})"
else
BACKTITLE+=" (us)"
BACKTITLE+=" (qwerty/us)"
fi
echo ${BACKTITLE}
}
@@ -69,59 +61,101 @@ function backtitle() {
###############################################################################
# Shows available models to user choose one
function modelMenu() {
ITEMS=""
while read M; do
M="`basename ${M}`"
M="${M::-4}"
# Check id model is compatible with CPU
COMPATIBLE=1
for F in `readModelArray "${M}" "flags"`; do
if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
COMPATIBLE=0
break
RESTRICT=1
FLGBETA=0
dialog --backtitle "`backtitle`" --title "Model" --aspect 18 \
--infobox "Reading models" 0 0
while true; do
echo "" > "${TMP_PATH}/menu"
FLGNEX=0
while read M; do
M="`basename ${M}`"
M="${M::-4}"
PLATFORM=`readModelKey "${M}" "platform"`
DT="`readModelKey "${M}" "dt"`"
BETA="`readModelKey "${M}" "beta"`"
[ "${BETA}" = "true" -a ${FLGBETA} -eq 0 ] && continue
# Check id model is compatible with CPU
COMPATIBLE=1
if [ ${RESTRICT} -eq 1 ]; then
for F in `readModelArray "${M}" "flags"`; do
if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
COMPATIBLE=0
FLGNEX=1
break
fi
done
fi
done
[ ${COMPATIBLE} -eq 1 ] && ITEMS+="${M} "
done < <(find "${MODEL_CONFIG_PATH}" -maxdepth 1 -name \*.yml | sort)
dialog --clear --no-items \
--backtitle "`backtitle`" \
--menu "Choose the model" 0 0 0 \
${ITEMS} \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
resp=$(<${TMP_PATH}/resp)
[ -z "${resp}" ] && return
# If user change model, clean buildnumber and S/N
if [ "${MODEL}" != "${resp}" ]; then
MODEL=${resp}
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
BUILD=""
writeConfigKey "build" "${BUILD}" "${USER_CONFIG_FILE}"
SN=""
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
# Delete old files
rm -f "${MOD_ZIMAGE_FILE}"
rm -f "${MOD_RDGZ_FILE}"
DIRTY=1
fi
[ "${DT}" = "true" ] && DT="-DT" || DT=""
[ ${COMPATIBLE} -eq 1 ] && echo "${M} \"\Zb${PLATFORM}${DT}\Zn\" " >> "${TMP_PATH}/menu"
done < <(find "${MODEL_CONFIG_PATH}" -maxdepth 1 -name \*.yml | sort)
[ ${FLGNEX} -eq 1 ] && echo "f \"\Z1Disable flags restriction\Zn\"" >> "${TMP_PATH}/menu"
[ ${FLGBETA} -eq 0 ] && echo "b \"\Z1Show beta models\Zn\"" >> "${TMP_PATH}/menu"
dialog --backtitle "`backtitle`" --colors --menu "Choose the model" 0 0 0 \
--file "${TMP_PATH}/menu" 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
resp=$(<${TMP_PATH}/resp)
[ -z "${resp}" ] && return
if [ "${resp}" = "f" ]; then
RESTRICT=0
continue
fi
if [ "${resp}" = "b" ]; then
FLGBETA=1
continue
fi
# If user change model, clean buildnumber and S/N
if [ "${MODEL}" != "${resp}" ]; then
MODEL=${resp}
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
BUILD=""
writeConfigKey "build" "${BUILD}" "${USER_CONFIG_FILE}"
SN=""
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
# Delete old files
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}"
DIRTY=1
fi
break
done
}
###############################################################################
# Shows available buildnumbers from a model to user choose one
function buildMenu() {
ITEMS="`readConfigEntriesArray "builds" "${MODEL_CONFIG_PATH}/${MODEL}.yml"`"
ITEMS="`readConfigEntriesArray "builds" "${MODEL_CONFIG_PATH}/${MODEL}.yml" | sort -r`"
dialog --clear --no-items --backtitle "`backtitle`" \
--menu "Choose a build number" 0 0 0 ${ITEMS} 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
resp=$(<${TMP_PATH}/resp)
[ -z "${resp}" ] && return
if [ "${BUILD}" != "${resp}" ]; then
dialog --backtitle "`backtitle`" --title "Build Number" \
--infobox "Reconfiguring Synoinfo, Addons and Modules" 0 0
BUILD=${resp}
writeConfigKey "build" "${BUILD}" "${USER_CONFIG_FILE}"
DIRTY=1
# Delete synoinfo and reload model/build synoinfo
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
while IFS="=" read KEY VALUE; do
writeConfigKey "synoinfo.${KEY}" "${VALUE}" "${USER_CONFIG_FILE}"
done < <(readModelMap "${MODEL}" "builds.${BUILD}.synoinfo")
# Check addons
PLATFORM="`readModelKey "${MODEL}" "platform"`"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
while IFS="=" read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then
deleteConfigKey "addons.${ADDON}" "${USER_CONFIG_FILE}"
fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
# Rebuild modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}"
done < <(getAllModules "${PLATFORM}" "${KVER}")
# Remove old files
rm -f "${MOD_ZIMAGE_FILE}"
rm -f "${MOD_RDGZ_FILE}"
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}"
DIRTY=1
fi
}
@@ -149,8 +183,9 @@ function serialMenu() {
elif [ `validateSerial ${MODEL} ${SERIAL}` -eq 1 ]; then
break
fi
dialog --backtitle "`backtitle`" \
--msgbox "Invalid serial, please type a right one" 0 0
dialog --backtitle "`backtitle`" --title "Alert" \
--yesno "Invalid serial, continue?" 0 0
[ $? -eq 0 ] && break
done
break
elif [ "${resp}" = "a" ]; then
@@ -163,64 +198,7 @@ function serialMenu() {
}
###############################################################################
# Detect hardware
function detectHw() {
PLATFORM="`readModelKey "${MODEL}" "platform"`"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
# Get modules not needed
unset NOTNEEDED
declare -A NOTNEEDED
while read M; do
NOTNEEDED[${M}]="1"
done < <(readModelArray "${MODEL}" "builds.${BUILD}.modules-notneeded")
unset DEVC DEVN
declare -A DEVC
declare -A DEVN
while read L; do
F=` sed -E 's/^([0-9a-z]{2}:[0-9a-z]{2}.[0-9a-z]{1})[^\[]*\[([0-9a-z]{4})\]: (.*)/\1|\2|\3/' <<<"${L}"`
PCI="`cut -d'|' -f1 <<<"${F}"`"
CLASS="`cut -d'|' -f2 <<<"${F}"`"
NAME="`cut -d'|' -f3 <<<"${F}"`"
MODULE="`lspci -ks "${PCI}" | awk '/Kernel driver in use/{print$5}'`"
[ -z "${MODULE}" ] && continue
# If is a virtio module, change id
if grep -q "virtio" <<<"$MODULE"; then
MODULE="virtio"
fi
CLASS=${CLASSES[${CLASS}]} # Get class name of module
[ -z "${CLASS}" ] && continue # If no class, skip
arrayExistItem "${MODULE}" "${!ADDONS[@]}" && continue # Check if module already added
[ -n "${NOTNEEDED[${MODULE}]}" ] && continue # Check if module is not necessary
# Add module to list
DEVC[${MODULE}]="${CLASS}"
DEVN[${MODULE}]="${NAME}"
done < <(lspci -nn)
if [ ${#DEVC[@]} -eq 0 ]; then
dialog --backtitle "`backtitle`" --aspect 18 \
--msgbox "No device detected or already added!" 0 0
return
fi
for MODULE in ${!DEVC[@]}; do
CLASS="${DEVC[${MODULE}]}"
NAME="${DEVN[${MODULE}]}"
TEXT="Found a ${NAME}\nClass ${CLASS}\nModule ${MODULE}\nAccept?"
checkAddonExist "${MODULE}" "${PLATFORM}" "${KVER}" || TEXT+="\n\n\Z1PS: Addon for this module not found\Zn"
dialog --backtitle "`backtitle`" --title "Found Hardware" \
--colors --yesno "${TEXT}" 12 70
[ $? -ne 0 ] && continue
dialog --backtitle "`backtitle`" --title "params" \
--inputbox "Type a opcional params to module" 0 0 \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
VALUE="`<${TMP_PATH}/resp`"
ADDONS["${MODULE}"]="${VALUE}"
writeConfigKey "addons.${MODULE}" "${VALUE}" "${USER_CONFIG_FILE}"
DIRTY=1
done
}
###############################################################################
# Manage addons/drivers
# Manage addons
function addonMenu() {
# Read 'platform' and kernel version to check if addon exists
PLATFORM="`readModelKey "${MODEL}" "platform"`"
@@ -231,25 +209,20 @@ function addonMenu() {
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && ADDONS["${KEY}"]="${VALUE}"
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
NEXT="h"
NEXT="a"
# Loop menu
while true; do
dialog --backtitle "`backtitle`" --default-item ${NEXT} \
--menu "Choose a option" 0 0 0 \
h "Detect hardware" \
a "Add an addon" \
d "Delete addon(s)" \
s "Show user addons" \
m "Show all available addons" \
o "Download an addon" \
o "Download a external addon" \
e "Exit" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
case "`<${TMP_PATH}/resp`" in
h)
detectHw
NEXT='e'
;;
a) NEXT='a'
rm "${TMP_PATH}/menu"
while read ADDON DESC; do
@@ -258,6 +231,7 @@ function addonMenu() {
done < <(availableAddons "${PLATFORM}" "${KVER}")
if [ ! -f "${TMP_PATH}/menu" ] ; then
dialog --backtitle "`backtitle`" --msgbox "No available addons to add" 0 0
NEXT="e"
continue
fi
dialog --backtitle "`backtitle`" --menu "Select an addon" 0 0 0 \
@@ -317,8 +291,6 @@ function addonMenu() {
;;
o)
TEXT="please enter the complete URL to download.\n"
TEXT+="\Zb(Official addons location: https://github.com/fbelavenuto/arpl-addons/releases)\Zn\n"
TEXT+="Ex: https://github.com/fbelavenuto/arpl-addons/releases/download/v0.2/9p.addon"
dialog --backtitle "`backtitle`" --aspect 18 --colors --inputbox "${TEXT}" 0 0 \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
@@ -326,10 +298,10 @@ function addonMenu() {
[ -z "${URL}" ] && continue
clear
echo "Downloading ${URL}"
curl --insecure -L "${URL}" -o "${TMP_PATH}/addon.tgz" --progress-bar
if [ $? -ne 0 ]; then
STATUS=`curl --insecure -w "%{http_code}" -L "${URL}" -o "${TMP_PATH}/addon.tgz" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
--msgbox "Check internet, URL or cache disk space" 0 0
return 1
fi
ADDON="`untarAddon "${TMP_PATH}/addon.tgz"`"
@@ -346,40 +318,22 @@ function addonMenu() {
done
}
###############################################################################
# Sets variables to configure maxdisks
# 1 - Number of disks
function setMaxDisks() {
CMDLINE['maxdisks']="${1}"
writeConfigKey "cmdline.maxdisks" "${1}" "${USER_CONFIG_FILE}"
INTPORTCFG=""
for I in `seq 1 ${1}`; do INTPORTCFG+="1"; done
INTPORTCFG="0x`printf "%x" "$((2#${INTPORTCFG}))"`"
CMDLINE['internalportcfg']="${INTPORTCFG}"
writeConfigKey "cmdline.internalportcfg" "${INTPORTCFG}" "${USER_CONFIG_FILE}"
}
###############################################################################
function cmdlineMenu() {
# Read from user config
DT="`readModelKey "${MODEL}" "dt"`"
unset CMDLINE
declare -A CMDLINE
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}"
done < <(readConfigMap "cmdline" "${USER_CONFIG_FILE}")
echo "a \"Add/edit a cmdline item\"" > "${TMP_PATH}/menu"
echo "d \"Delete cmdline item(s)\"" >> "${TMP_PATH}/menu"
echo "c \"Define a custom MAC\"" >> "${TMP_PATH}/menu"
echo "s \"Show user cmdline\"" >> "${TMP_PATH}/menu"
echo "m \"Show model/build cmdline\"" >> "${TMP_PATH}/menu"
echo "u \"Show SATA(s) # ports and drives\"" >> "${TMP_PATH}/menu"
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
# Loop menu
while true; do
echo "a \"Add/edit an cmdline item\"" > "${TMP_PATH}/menu"
echo "d \"Delete cmdline item(s)\"" >> "${TMP_PATH}/menu"
echo "s \"Show user cmdline\"" >> "${TMP_PATH}/menu"
echo "m \"Show model/build cmdline\"" >> "${TMP_PATH}/menu"
if [ "${DT}" != "true" ]; then
echo "h \"Change maxdisks\"" >> "${TMP_PATH}/menu"
echo "u \"Show SATA(s) # ports and drives\"" >> "${TMP_PATH}/menu"
fi
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
dialog --backtitle "`backtitle`" --menu "Choose a option" 0 0 0 \
--file "${TMP_PATH}/menu" 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
@@ -406,7 +360,7 @@ function cmdlineMenu() {
fi
ITEMS=""
for I in "${!CMDLINE[@]}"; do
ITEMS+="${I} ${CMDLINE[${I}]} off "
[ -z "${CMDLINE[${I}]}" ] && ITEMS+="${I} \"\" off " || ITEMS+="${I} ${CMDLINE[${I}]} off "
done
dialog --backtitle "`backtitle`" \
--checklist "Select cmdline to remove" 0 0 0 ${ITEMS} \
@@ -419,6 +373,29 @@ function cmdlineMenu() {
deleteConfigKey "cmdline.${I}" "${USER_CONFIG_FILE}"
done
;;
c)
while true; do
dialog --backtitle "`backtitle`" --title "User cmdline" \
--inputbox "Type a custom MAC address" 0 0 "${CMDLINE['mac1']}"\
2>${TMP_PATH}/resp
[ $? -ne 0 ] && break
MAC="`<"${TMP_PATH}/resp"`"
[ -z "${MAC}" ] && MAC="`readConfigKey "original-mac" "${USER_CONFIG_FILE}"`"
MAC1="`echo "${MAC}" | sed 's/://g'`"
[ ${#MAC1} -eq 12 ] && break
dialog --backtitle "`backtitle`" --title "User cmdline" --msgbox "Invalid MAC" 0 0
done
CMDLINE["mac1"]="${MAC1}"
CMDLINE["netif_num"]=1
writeConfigKey "cmdline.mac1" "${MAC1}" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline.netif_num" "1" "${USER_CONFIG_FILE}"
MAC="${MAC1:0:2}:${MAC1:2:2}:${MAC1:4:2}:${MAC1:6:2}:${MAC1:8:2}:${MAC1:10:2}"
ip link set dev eth0 address ${MAC} 2>&1 | dialog --backtitle "`backtitle`" \
--title "User cmdline" --progressbox "Changing mac" 20 70
/etc/init.d/S41dhcpcd restart 2>&1 | dialog --backtitle "`backtitle`" \
--title "User cmdline" --progressbox "Renewing IP" 20 70
IP=`ip route get 1.1.1.1 2>/dev/null | awk '{print$7}'`
;;
s)
ITEMS=""
for KEY in ${!CMDLINE[@]}; do
@@ -435,20 +412,8 @@ function cmdlineMenu() {
dialog --backtitle "`backtitle`" --title "Model/build cmdline" \
--aspect 18 --msgbox "${ITEMS}" 0 0
;;
h) MODEL_DISKS="`readModelKey "${MODEL}" "disks"`"
dialog --backtitle "`backtitle`" --title "Change max of disks" \
--inputbox "${MODEL} disks: ${MODEL_DISKS}\nType the desired number of disks (1-26)" 0 0 \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
VALUE="`<"${TMP_PATH}/resp"`"
[ -z "${VALUE}" ] && continue
if [ ${VALUE} -ge 1 -a ${VALUE} -le 26 ]; then
setMaxDisks ${VALUE}
else
dialog --backtitle "`backtitle`" --msgbox "Invalid number" 0 0
fi
;;
u) TEXT=""
NUMPORTS=0
for PCI in `lspci -d ::106 | awk '{print$1}'`; do
NAME=`lspci -s "${PCI}" | sed "s/\ .*://"`
TEXT+="\Zb${NAME}\Zn\nPorts: "
@@ -466,9 +431,11 @@ function cmdlineMenu() {
[ ${ATTACH} -eq 1 ] && TEXT+="\Z2\Zb"
[ ${DUMMY} -eq 1 ] && TEXT+="\Z1"
TEXT+="${PORT}\Zn "
NUMPORTS=$((${NUMPORTS}+1))
done < <(echo ${!HOSTPORTS[@]} | tr ' ' '\n' | sort -n)
TEXT+="\n"
done
TEXT+="\nTotal of ports: ${NUMPORTS}\n"
TEXT+="\nPorts with color \Z1red\Zn as DUMMY, color \Z2\Zbgreen\Zn has drive connected."
dialog --backtitle "`backtitle`" --colors --aspect 18 \
--msgbox "${TEXT}" 0 0
@@ -480,32 +447,38 @@ function cmdlineMenu() {
###############################################################################
function synoinfoMenu() {
# Get dt flag from model
DT="`readModelKey "${MODEL}" "dt"`"
# Read synoinfo from user config
unset SYNOINFO
declare -A SYNOINFO
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && SYNOINFO["${KEY}"]="${VALUE}"
done < <(readConfigMap "synoinfo" "${USER_CONFIG_FILE}")
echo "a \"Add/edit a synoinfo item\"" > "${TMP_PATH}/menu"
echo "d \"Delete synoinfo item(s)\"" >> "${TMP_PATH}/menu"
if [ "${DT}" != "true" ]; then
echo "x \"Set maxdisks manually\"" >> "${TMP_PATH}/menu"
fi
echo "s \"Show synoinfo entries\"" >> "${TMP_PATH}/menu"
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
# menu loop
while true; do
dialog --backtitle "`backtitle`" \
--menu "Choose a option" 0 0 0 \
a "Add/edit an synoinfo item" \
d "Delete synoinfo item(s)" \
s "Show user synoinfo" \
m "Show model/build synoinfo" \
e "Exit" \
2>${TMP_PATH}/resp
dialog --backtitle "`backtitle`" --menu "Choose a option" 0 0 0 \
--file "${TMP_PATH}/menu" 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
case "`<${TMP_PATH}/resp`" in
a)
dialog --backtitle "`backtitle`" --title "User synoinfo" \
--inputbox "Type a name of synoinfo variable" 0 0 \
dialog --backtitle "`backtitle`" --title "Synoinfo entries" \
--inputbox "Type a name of synoinfo entry" 0 0 \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
NAME="`sed 's/://g' <"${TMP_PATH}/resp"`"
dialog --backtitle "`backtitle`" --title "User synoinfo" \
--inputbox "Type a value of '${NAME}' variable" 0 0 "${SYNOINFO[${NAME}]}" \
NAME="`<"${TMP_PATH}/resp"`"
[ -z "${NAME}" ] && continue
dialog --backtitle "`backtitle`" --title "Synoinfo entries" \
--inputbox "Type a value of '${NAME}' entry" 0 0 "${SYNOINFO[${NAME}]}" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
VALUE="`<"${TMP_PATH}/resp"`"
@@ -515,15 +488,15 @@ function synoinfoMenu() {
;;
d)
if [ ${#SYNOINFO[@]} -eq 0 ]; then
dialog --backtitle "`backtitle`" --msgbox "No user synoinfo to remove" 0 0
dialog --backtitle "`backtitle`" --msgbox "No synoinfo entries to remove" 0 0
continue
fi
ITEMS=""
for I in "${!SYNOINFO[@]}"; do
ITEMS+="${I} ${SYNOINFO[${I}]} off "
[ -z "${SYNOINFO[${I}]}" ] && ITEMS+="${I} \"\" off " || ITEMS+="${I} ${SYNOINFO[${I}]} off "
done
dialog --backtitle "`backtitle`" \
--checklist "Select synoinfo to remove" 0 0 0 ${ITEMS} \
--checklist "Select synoinfo entry to remove" 0 0 0 ${ITEMS} \
2>"${TMP_PATH}/resp"
[ $? -ne 0 ] && continue
RESP=`<"${TMP_PATH}/resp"`
@@ -534,20 +507,21 @@ function synoinfoMenu() {
done
DIRTY=1
;;
x)
MAXDISKS=`readConfigKey "maxdisks" "${USER_CONFIG_FILE}"`
dialog --backtitle "`backtitle`" --title "Maxdisks" \
--inputbox "Type a value for maxdisks" 0 0 "${MAXDISKS}" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && continue
VALUE="`<"${TMP_PATH}/resp"`"
[ "${VALUE}" != "${MAXDISKS}" ] && writeConfigKey "maxdisks" "${VALUE}" "${USER_CONFIG_FILE}"
;;
s)
ITEMS=""
for KEY in ${!SYNOINFO[@]}; do
ITEMS+="${KEY}: ${SYNOINFO[$KEY]}\n"
done
dialog --backtitle "`backtitle`" --title "User synoinfo" \
--aspect 18 --msgbox "${ITEMS}" 0 0
;;
m)
ITEMS=""
while IFS="=" read KEY VALUE; do
ITEMS+="${KEY}: ${VALUE}\n"
done < <(readModelMap "${MODEL}" "builds.${BUILD}.synoinfo")
dialog --backtitle "`backtitle`" --title "Model/build synoinfo" \
dialog --backtitle "`backtitle`" --title "Synoinfo entries" \
--aspect 18 --msgbox "${ITEMS}" 0 0
;;
e) return ;;
@@ -556,26 +530,92 @@ function synoinfoMenu() {
}
###############################################################################
# Where the magic happens :D
function make() {
clear
# Permit user select the modules to include
function selectModules() {
PLATFORM="`readModelKey "${MODEL}" "platform"`"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
dialog --backtitle "`backtitle`" --title "Modules" --aspect 18 \
--infobox "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 "Choose a option" 0 0 0 \
s "Show selected modules" \
a "Select all modules" \
d "Deselect all modules" \
c "Choose modules to include" \
e "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 "User modules" \
--msgbox "${ITEMS}" 0 0
;;
a) dialog --backtitle "`backtitle`" --title "Modules" \
--infobox "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 "Modules" \
--infobox "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 "Modules" --aspect 18 \
--checklist "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 "Modules" \
--infobox "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
}
###############################################################################
# Extract linux and ramdisk files from the DSM .pat
function extractDsmFiles() {
PAT_URL="`readModelKey "${MODEL}" "builds.${BUILD}.pat.url"`"
PAT_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.hash"`"
RAMDISK_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.ramdisk-hash"`"
ZIMAGE_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.zimage-hash"`"
# Check if all addon exists
while IFS="=" read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Addon ${ADDON} not found!" 0 0
return 1
fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
if [ ${RAMCACHE} -eq 0 ]; then
OUT_PATH="${CACHE_PATH}/dl"
echo "Cache in disk"
@@ -585,7 +625,6 @@ function make() {
fi
mkdir -p "${OUT_PATH}"
UNTAR_PAT_PATH="${TMP_PATH}/pat"
PAT_FILE="${MODEL}-${BUILD}.pat"
PAT_PATH="${OUT_PATH}/${PAT_FILE}"
EXTRACTOR_PATH="${CACHE_PATH}/extractor"
@@ -597,8 +636,8 @@ function make() {
echo "${PAT_FILE} cached."
else
echo "Downloading ${PAT_FILE}"
curl --insecure -L "${PAT_URL}" -o "${PAT_PATH}" --progress-bar
if [ $? -ne 0 ]; then
STATUS=`curl --insecure -w "%{http_code}" -L "${PAT_URL}" -o "${PAT_PATH}" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
return 1
@@ -650,9 +689,8 @@ function make() {
# Check if old pat already downloaded
if [ ! -f "${OLDPAT_PATH}" ]; then
echo "Downloading old pat to extract synology .pat extractor..."
curl --insecure -L "${OLDPAT_URL}" \
-o "${OLDPAT_PATH}" --progress-bar
if [ $? -ne 0 ]; then
STATUS=`curl --insecure -w "%{http_code}" -L "${OLDPAT_URL}" -o "${OLDPAT_PATH}" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
return 1
@@ -716,6 +754,26 @@ function make() {
cp "${UNTAR_PAT_PATH}/zImage" "${ORI_ZIMAGE_FILE}"
cp "${UNTAR_PAT_PATH}/rd.gz" "${ORI_RDGZ_FILE}"
echo "OK"
}
###############################################################################
# Where the magic happens!
function make() {
clear
PLATFORM="`readModelKey "${MODEL}" "platform"`"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
# Check if all addon exists
while IFS="=" read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Addon ${ADDON} not found!" 0 0
return 1
fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
[ ! -f "${ORI_ZIMAGE_FILE}" -o ! -f "${ORI_RDGZ_FILE}" ] && extractDsmFiles
/opt/arpl/zimage-patch.sh
if [ $? -ne 0 ]; then
@@ -780,24 +838,204 @@ function editUserConfig() {
###############################################################################
# Shows available keymaps to user choose one
function keymapMenu() {
dialog --backtitle "`backtitle`" --default-item "${LAYOUT}" --no-items \
--menu "Choose a layout" 0 0 0 "azerty" "bepo" "carpalx" "colemak" \
"dvorak" "fgGIod" "neo" "olpc" "qwerty" "qwertz" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
LAYOUT="`<${TMP_PATH}/resp`"
OPTIONS=""
while read KM; do
OPTIONS+="${KM::-7} "
done < <(cd /usr/share/keymaps/i386/qwerty; ls *.map.gz)
dialog --backtitle "`backtitle`" --no-items \
done < <(cd /usr/share/keymaps/i386/${LAYOUT}; ls *.map.gz)
dialog --backtitle "`backtitle`" --no-items --default-item "${KEYMAP}" \
--menu "Choice a keymap" 0 0 0 ${OPTIONS} \
2>/tmp/resp
[ $? -ne 0 ] && return
resp=`cat /tmp/resp 2>/dev/null`
[ -z "${resp}" ] && return
KEYMAP=${resp}
writeConfigKey "layout" "${LAYOUT}" "${USER_CONFIG_FILE}"
writeConfigKey "keymap" "${KEYMAP}" "${USER_CONFIG_FILE}"
zcat /usr/share/keymaps/i386/qwerty/${KEYMAP}.map.gz | loadkeys
zcat /usr/share/keymaps/i386/${LAYOUT}/${KEYMAP}.map.gz | loadkeys
}
###############################################################################
function updateMenu() {
while true; do
dialog --backtitle "`backtitle`" --menu "Choose a option" 0 0 0 \
a "Update arpl" \
d "Update addons" \
l "Update LKMs" \
m "Update modules" \
e "Exit" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
case "`<${TMP_PATH}/resp`" in
a)
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--infobox "Checking last version" 0 0
ACTUALVERSION="v${ARPL_VERSION}"
TAG="`curl --insecure -s https://api.github.com/repos/fbelavenuto/arpl/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`"
if [ $? -ne 0 -o -z "${TAG}" ]; then
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--msgbox "Error checking new version" 0 0
continue
fi
if [ "${ACTUALVERSION}" = "${TAG}" ]; then
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--yesno "No new version. Actual version is ${ACTUALVERSION}\nForce update?" 0 0
[ $? -ne 0 ] && continue
fi
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--infobox "Downloading last version ${TAG}" 0 0
# Download update file
STATUS=`curl --insecure -w "%{http_code}" -L \
"https://github.com/fbelavenuto/arpl/releases/download/${TAG}/update.zip" -o /tmp/update.zip`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--msgbox "Error downloading update file" 0 0
continue
fi
unzip -oq /tmp/update.zip -d /tmp
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--msgbox "Error extracting update file" 0 0
continue
fi
# Check checksums
(cd /tmp && sha256sum --status -c sha256sum)
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--msgbox "Checksum do not match!" 0 0
continue
fi
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--infobox "Installing new files" 0 0
# Process update-list.yml
while IFS="=" read KEY VALUE; do
mv /tmp/`basename "${KEY}"` "${VALUE}"
done < <(readConfigMap "replace" "/tmp/update-list.yml")
while read F; do
[ -f "${F}" ] && rm -f "${F}"
[ -d "${F}" ] && rm -Rf "${F}"
done < <(readConfigArray "remove" "/tmp/update-list.yml")
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
--yesno "Arpl updated with success to ${TAG}!\nReboot?" 0 0
[ $? -ne 0 ] && continue
reboot
exit
;;
d)
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--infobox "Checking last version" 0 0
TAG=`curl --insecure -s https://api.github.com/repos/fbelavenuto/arpl-addons/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
if [ $? -ne 0 -o -z "${TAG}" ]; then
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--msgbox "Error checking new version" 0 0
continue
fi
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--infobox "Downloading last version" 0 0
STATUS=`curl --insecure -s -w "%{http_code}" -L "https://github.com/fbelavenuto/arpl-addons/releases/download/${TAG}/addons.zip" -o /tmp/addons.zip`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--msgbox "Error downloading new version" 0 0
continue
fi
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--infobox "Extracting last version" 0 0
rm -rf /tmp/addons
mkdir -p /tmp/addons
unzip /tmp/addons.zip -d /tmp/addons >/dev/null 2>&1
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--infobox "Installing new addons" 0 0
for PKG in `ls /tmp/addons/*.addon`; do
ADDON=`basename ${PKG} | sed 's|.addon||'`
rm -rf "${ADDONS_PATH}/${ADDON}"
mkdir -p "${ADDONS_PATH}/${ADDON}"
tar xaf "${PKG}" -C "${ADDONS_PATH}/${ADDON}" >/dev/null 2>&1
done
DIRTY=1
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--msgbox "Addons updated with success!" 0 0
;;
l)
dialog --backtitle "`backtitle`" --title "Update LKMs" --aspect 18 \
--infobox "Checking last version" 0 0
TAG=`curl --insecure -s https://api.github.com/repos/fbelavenuto/redpill-lkm/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
if [ $? -ne 0 -o -z "${TAG}" ]; then
dialog --backtitle "`backtitle`" --title "Update LKMs" --aspect 18 \
--msgbox "Error checking new version" 0 0
continue
fi
dialog --backtitle "`backtitle`" --title "Update LKMs" --aspect 18 \
--infobox "Downloading last version" 0 0
STATUS=`curl --insecure -s -w "%{http_code}" -L "https://github.com/fbelavenuto/redpill-lkm/releases/download/${TAG}/rp-lkms.zip" -o /tmp/rp-lkms.zip`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Update LKMs" --aspect 18 \
--msgbox "Error downloading last version" 0 0
continue
fi
dialog --backtitle "`backtitle`" --title "Update LKMs" --aspect 18 \
--infobox "Extracting last version" 0 0
rm -rf "${LKM_PATH}/"*
unzip /tmp/rp-lkms.zip -d "${LKM_PATH}" >/dev/null 2>&1
DIRTY=1
dialog --backtitle "`backtitle`" --title "Update LKMs" --aspect 18 \
--msgbox "LKMs updated with success!" 0 0
;;
m)
unset PLATFORMS
declare -A PLATFORMS
while read M; do
M="`basename ${M}`"
M="${M::-4}"
P=`readModelKey "${M}" "platform"`
ITEMS="`readConfigEntriesArray "builds" "${MODEL_CONFIG_PATH}/${M}.yml"`"
for B in ${ITEMS}; do
KVER=`readModelKey "${M}" "builds.${B}.kver"`
PLATFORMS["${P}-${KVER}"]=""
done
done < <(find "${MODEL_CONFIG_PATH}" -maxdepth 1 -name \*.yml | sort)
dialog --backtitle "`backtitle`" --title "Update Modules" --aspect 18 \
--infobox "Checking last version" 0 0
TAG=`curl --insecure -s https://api.github.com/repos/fbelavenuto/arpl-modules/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}'`
if [ $? -ne 0 -o -z "${TAG}" ]; then
dialog --backtitle "`backtitle`" --title "Update Modules" --aspect 18 \
--msgbox "Error checking new version" 0 0
continue
fi
for P in ${!PLATFORMS[@]}; do
dialog --backtitle "`backtitle`" --title "Update Modules" --aspect 18 \
--infobox "Downloading ${P} modules" 0 0
STATUS=`curl --insecure -s -w "%{http_code}" -L "https://github.com/fbelavenuto/arpl-modules/releases/download/${TAG}/${P}.tgz" -o "/tmp/${P}.tgz"`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Update Modules" --aspect 18 \
--msgbox "Error downloading ${P}.tgz" 0 0
continue
fi
rm "${MODULES_PATH}/${P}.tgz"
mv "/tmp/${P}.tgz" "${MODULES_PATH}/${P}.tgz"
done
DIRTY=1
dialog --backtitle "`backtitle`" --title "Update Modules" --aspect 18 \
--msgbox "Modules updated with success!" 0 0
;;
e) return ;;
esac
done
}
###############################################################################
###############################################################################
if [ "x$1" = "xb" -a -n "${MODEL}" -a -n "${BUILD}" -a loaderIsConfigured ]; then
make
boot
fi
# Main loop
NEXT="m"
while true; do
@@ -806,17 +1044,22 @@ while true; do
echo "n \"Choose a Build Number\"" >> "${TMP_PATH}/menu"
echo "s \"Choose a serial number\"" >> "${TMP_PATH}/menu"
if [ -n "${BUILD}" ]; then
echo "a \"Addons/drivers\"" >> "${TMP_PATH}/menu"
echo "a \"Addons\"" >> "${TMP_PATH}/menu"
echo "x \"Cmdline menu\"" >> "${TMP_PATH}/menu"
echo "i \"Synoinfo menu\"" >> "${TMP_PATH}/menu"
echo "l \"Switch LKM version: \Z4${LKM}\Zn\"" >> "${TMP_PATH}/menu"
echo "o \"Modules\"" >> "${TMP_PATH}/menu"
echo "d \"Build the loader\"" >> "${TMP_PATH}/menu"
fi
fi
loaderIsConfigured && echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
if loaderIsConfigured; then
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"">> "${TMP_PATH}/menu"
echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
fi
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
echo "k \"Choose a keymap\" " >> "${TMP_PATH}/menu"
[ ${RAMCACHE} -eq 0 -a -d "${CACHE_PATH}/dl" ] && echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
echo "p \"Update menu\"" >> "${TMP_PATH}/menu"
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
dialog --clear --default-item ${NEXT} --backtitle "`backtitle`" --colors \
--menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
@@ -831,16 +1074,24 @@ while true; do
i) synoinfoMenu; NEXT="l" ;;
l) [ "${LKM}" = "dev" ] && LKM='prod' || LKM='dev'
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
NEXT="d"
DIRTY=1
NEXT="o"
;;
o) selectModules; NEXT="d" ;;
d) make; NEXT="r" ;;
r) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false'
writeConfigKey "directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}"
NEXT="b"
;;
d) make; NEXT="b" ;;
b) boot ;;
u) editUserConfig; NEXT="u" ;;
k) keymapMenu ;;
c) dialog --backtitle "`backtitle`" --title "Cleaning" --aspect 18 \
--prgbox "rm -rfv \"${CACHE_PATH}/dl\"" 0 0 ;;
p) updateMenu ;;
e) break ;;
esac
done
clear
echo -e "Call \033[1;32mmenu.sh\033[0m to return to menu"

View File

@@ -0,0 +1,89 @@
id: "DS1520+"
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
intel_iommu: igfx_off
HddEnableDynamicPower: 1
vender_format_version: 2
synoboot2:
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
platform: "geminilake"
unique: "synology_geminilake_1520+"
beta: true
dom: 2
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
disks: 6
dt: true
builds:
42218:
ver: "7.0.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS1520%2B_42218.pat"
hash: "06947c58f25bd591f7fa3c58ad9473777481bdd7a049b42d1cb585ca01b053ee"
ramdisk-hash: "f0a275587c51acdb4d58a7f0d82d70f31e54228d0fbf7575d5d425dae75d1969"
zimage-hash: "74d513aaa3e30d8aa4f80e202d94a68a552e9c0472f8470e133ad29080556f55"
md5-hash: "f56200a8be1aed4eb287a51b373adb1f"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
42661:
ver: "7.1.0"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1/42661-1/DSM_DS1520%2B_42661.pat"
hash: "3a8499c5f72d7241b81781ec741d4019eaa506e6e7a4fd17ce54fb149f6ffae6"
ramdisk-hash: "b18f14b8420a217d7b6dd3696786ecccfbe7c325d342475531a68a7df831cffc"
zimage-hash: "1d0e5b76e08e3483f6bf06d23b5978ec498b855bde23db1f96f343db4c43337d"
md5-hash: "1d8ecfcb2a956488ae355c79a72bb9ec"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS1520%2B_42962.pat"
hash: "f19d2ac39fae564797c148929b8fe7c9740ac3a74099bf573b68df8fe0228cb3"
ramdisk-hash: "aad75938d165ef5efdbfc4c570c4cd1cc252344d0756dd3d89a44f581aa6be6f"
zimage-hash: "89ee173272101e6714728e73930d8b31a414f9f1eca8ab78f45c12fc721138ab"
md5-hash: "b7b4a7c7f9160023e1129e4097403828"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -1,28 +1,11 @@
id: "DS1621+"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
SMBusHddDynamicPower: 1
syno_hdd_powerup_seq: 0
@@ -34,6 +17,8 @@ cmdline: &cmdline
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
platform: "v1000"
unique: "synology_v1000_1621+"
dom: 2
serial:
prefix:
- "2080"
@@ -47,7 +32,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -57,18 +41,18 @@ builds:
hash: "19f56827ba8bf0397d42cd1d6f83c447f092c2c1bbb70d8a2ad3fbd427e866df"
ramdisk-hash: "73512c7bceb34cf7f7f93c2703db60496da0e27274fc45e5aefa0366c9734d6e"
zimage-hash: "f4648d0dd6b29ef6149b0ff46afe1fe32f81730aa79af72f37ffd3647c76f586"
md5-hash: "f82cbabbfef3fdf2cba45da77d14959b"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
42661:
ver: "7.1.0"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -78,8 +62,30 @@ builds:
hash: "381077302a89398a9fb5ec516217578d6f33b0219fe95135e80fd93cddbf88c4"
ramdisk-hash: "8fd5eb40fb088af97d3beee85b6275c2ceb368b08453eb5a5d00d42cc7d578d1"
zimage-hash: "d939b5937be00a644aae64c33633619a7c310433e60a515c77bbef00b0a7e6b6"
md5-hash: "b4b72eb8d4e84b2e2a8c29fc0a1ac6aa"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS1621%2B_42962.pat"
hash: "bd88dfdf1eccdf7fefcdac67e11929818ae3aea938fd13286c1ac7b5aaa3964f"
ramdisk-hash: "7a900e3017b4ee09b792d2ed291b7229476ae3e583fe559bbd9baaa812705aa0"
zimage-hash: "b0f296aad0cc3b8adba13483f89770d0a4daf9b9cab335910717448b1eaa8254"
md5-hash: "b5e6be956385c1b49825517409265a44"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -1,26 +1,13 @@
id: "DS2422+"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
supportraidgroup: "no"
supportssdcache: "no"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
SMBusHddDynamicPower: 1
vender_format_version: 2
@@ -30,10 +17,13 @@ cmdline: &cmdline
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
platform: "v1000"
unique: "synology_v1000_2422+"
dom: 2
serial:
prefix:
- "0000"
middle: "XXX"
- "2140"
- "2180"
middle: "SLR"
suffix: "numeric"
disks: 12
dt: true
@@ -43,7 +33,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -53,9 +42,50 @@ builds:
hash: "415c54934d483a2557500bc3a2e74588a0cec1266e1f0d9a82a7d3aace002471"
ramdisk-hash: "2b5b8dd90b2e6020ffccc2719d8bc16d9935421754a8c088d6b31dbca4e4ff7b"
zimage-hash: "38281a90036fffcb41cd17f05a6c7e9a1d5740a78c135980fb0c3a6d0ca1485f"
md5-hash: "9293156f98e642c181aed63b0b3df4c8"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
ver: "7.1.0"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1/42661-1/DSM_DS2422%2B_42661.pat"
hash: "c38fee0470c592b679ab52a64eac76b2a3912fb2e6aba65a65abb5aa05a98d4c"
ramdisk-hash: "bb109132e96b1e26d5e3d44557944f7518168d8cb18e35d6254c0dfe7fb19382"
zimage-hash: "d939b5937be00a644aae64c33633619a7c310433e60a515c77bbef00b0a7e6b6"
md5-hash: "9ea5e0fe94c01072da36e2f69172abb3"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS2422%2B_42962.pat"
hash: "a887cc3f06e2b51d34f682a1a812637486aeefbef57c309414f69c3e5514edef"
ramdisk-hash: "edcf0e07e2773326d7f6c2f17a0c2d18e8ef4600a720bbdd4965fc1f11eb21e9"
zimage-hash: "b0f296aad0cc3b8adba13483f89770d0a4daf9b9cab335910717448b1eaa8254"
md5-hash: "97e2f7a56f011d8a7414867ac07d37cb"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -1,34 +1,24 @@
id: "DS3615xs"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
supportraidgroup: "no"
supportssdcache: "no"
esataportcfg: "0x0"
usbportcfg: "0x8700"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "bromolow"
unique: "synology_bromolow_3615xs"
serial:
prefix:
prefix:
- "1130"
- "1230"
- "1330"
@@ -36,13 +26,13 @@ serial:
middle: "LWN"
suffix: "numeric"
disks: 12
dom: 1
builds:
42218:
ver: "7.0.1"
kver: "3.10.108"
rd-compressed: false
efi-bug: yes
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -52,11 +42,12 @@ builds:
hash: "dddd26891815ddca02d0d53c1d42e8b39058b398a4cc7b49b80c99f851cf0ef7"
ramdisk-hash: "4c90c3c7ee25b5fcc651552e80a9364d22823c863c834c5f43e3344a3a68af78"
zimage-hash: "d29b695612710376734cb5c5b5ae4f2d8afc49ffd640387e1c86010f6c7d2c8a"
md5-hash: "ea1c30f644bacae2e0b1ef914bc663db"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
@@ -64,7 +55,6 @@ builds:
kver: "3.10.108"
rd-compressed: false
efi-bug: yes
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -74,9 +64,32 @@ builds:
hash: "1e95d8c63981bcf42ea2eaedfbc7acc4248ff16d129344453b7479953f9ad145"
ramdisk-hash: "8ee5df65bcfd25c3d1999262153dcff625714d98789bc8065e217773f8d070d8"
zimage-hash: "3017542c92232cb5477b0e11d82d708a9909320350b1740aab58359e85f82351"
md5-hash: "271b34cb2a0c23d63178aef3bf45a6ae"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "3.10.108"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS3615xs_42962.pat"
hash: "b79c129354c203b7340010573d16b2d6ebc6a676c946579a959c891a70b8bcfc"
ramdisk-hash: "e4bdca874027b603a18d7b44cc312f3eb6d6cbf2e49329ef51753fc322d880c0"
zimage-hash: "b7d2ca699195a1990f838690be32a65158d4ed01e8126af2ddb27a0f08e177ca"
md5-hash: "84a8d6d92a7a44c775ff995cac555a19"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -1,35 +1,23 @@
id: "DS3617xs"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- xhci_pci
- xhci_hcd
- uhci_hcd
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
supportraidgroup: "no"
supportssdcache: "no"
esataportcfg: "0x00"
usbportcfg: "0x8700"
rss_server: "http://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
rss_server_ssl: "https://example.com/null.xml"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "broadwell"
unique: "synology_broadwell_3617xs"
dom: 1
serial:
prefix:
- "1130"
@@ -45,7 +33,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -55,11 +42,12 @@ builds:
hash: "d65ee4ed5971e38f6cdab00e1548183435b53ba49a5dca7eaed6f56be939dcd2"
ramdisk-hash: "1b2e86fbf4006f6aa40dcd674ad449feed8b0b8317a71e2bb8bb986a74e08c57"
zimage-hash: "28a75e0b680517d39374260eb981b8ca9ace8810b121a30b8036fa09cfcb77fc"
md5-hash: "8972088c38acd07aa92a8b573a1b7bc3"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
@@ -67,7 +55,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -77,9 +64,32 @@ builds:
hash: "0a5a243109098587569ab4153923f30025419740fb07d0ea856b06917247ab5c"
ramdisk-hash: "da3c2a170fea24052d817cbc4bb5b610a5b05288758d746b60a294ed614239fb"
zimage-hash: "9598f66b75e5b303e571241696e02fe7c0add80f13564f8c6b8c0daaf3cb3018"
md5-hash: "94e6263912bc758ee3db81c62a94a8f6"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS3617xs_42962.pat"
hash: "2a556206201df10245dbcf4cf0366b2f32cb318cd705fbdd74412303d85e7267"
ramdisk-hash: "c8d067a9737d67453e0b476d7115c3e12b2daf2450c371c19e44e480a1076a94"
zimage-hash: "8e6da6c3c9259d23ee5cae3c71691a75b0a281551d19cb75041df469c7524e72"
md5-hash: "3e034e2cdf90209112e0fdad28474970"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -1,42 +1,24 @@
id: "DS3622xs+"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- r8168
- r8169
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
esataportcfg: "0x00"
support_bde_internal_10g: "no"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
supportraidgroup: "no"
supportssdcache: "no"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
esataportcfg: "0x00"
support_bde_internal_10g: "no"
support_oob_ctl: "no"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml" # http://update7.synology.com/autoupdate/genRSS.php
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml" # https://update7.synology.com/autoupdate/genRSS.php
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json" # https://update7.synology.com/autoupdate/v2/getList
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "broadwellnk"
unique: "synology_broadwellnk_3622xs+"
dom: 1
serial:
prefix:
- "2030"
@@ -52,7 +34,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -62,11 +43,12 @@ builds:
hash: "f38329b8cdc5824a8f01fb1e377d3b1b6bd23da365142a01e2158beff5b8a424"
ramdisk-hash: "a95d4ab06189460f3b3d13a33e421887b5f3ea09a10535ae0d4c92beb7ff631d"
zimage-hash: "06964b68e5ccdedd4363dff3986f99686d3c9cb5225e8e4c3d840a1d9cd1330b"
md5-hash: "bc0235e45a8423f4c46dc0d9699759b5"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
@@ -74,7 +56,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -84,9 +65,32 @@ builds:
hash: "53d0a4f1667288b6e890c4fdc48422557ff26ea8a2caede0955c5f45b560cccd"
ramdisk-hash: "df8a055d6bc901229f0ba53ed5b4fe024bdf9a1b42f0c32483adefcdac14db4d"
zimage-hash: "e073dd84054f652811e0ae1932af2c7cdbd5fb6e5f18f265097072b8af4605e8"
md5-hash: "7af76cca8226ecf95b25630bffa76b3d"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS3622xs%2B_42962.pat"
hash: "b48aadaba7ff561b7d55aa9ed75f1f2f4c49c0c2f73ece4020f3ffd08f6bbfd0"
ramdisk-hash: "432f315818adad4e1ca54040557e164caf2937004e2d009aac8865391353e2f6"
zimage-hash: "8903dc99f7201c8656de618d767c05f91bfd32edd9a3706a50fd223237842bf2"
md5-hash: "1bf63db06cbc048befc24f277dd520f3"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -1,38 +1,24 @@
id: "DS918+"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
esataportcfg: "0x00"
support_led_brightness_adjustment: ""
support_led_brightness_adjustment: "no"
support_leds_lp3943: ""
buzzeroffen: "0xffff"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
#support_ssd_cache: yes
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "apollolake"
unique: "synology_apollolake_918+"
dom: 2
serial:
prefix:
- "1780"
@@ -50,7 +36,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -60,11 +45,12 @@ builds:
hash: "a403809ab2cd476c944fdfa18cae2c2833e4af36230fa63f0cdee31a92bebba2"
ramdisk-hash: "4b7a7a271a3b2158d9193a4f0e75c59590949ad7b4e26d546f46cc2ee8504d51"
zimage-hash: "338ba514066da01d0c1f770418916b9b96f5355d88a7b55b398d2726db591fdb"
md5-hash: "71c028f92497e4722998e4208fe75774"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
@@ -72,7 +58,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -82,9 +67,32 @@ builds:
hash: "4e8a9d82a8a1fde5af9a934391080b7bf6b91811d9583acb73b90fb6577e22d7"
ramdisk-hash: "ef8c87b6e68226339e5623d048252f5be3089c0831e41298a4695f2bfa65f00e"
zimage-hash: "9ce0d3452f08afaf95d52292ff20cbac6d69e17d5b9953377e4ac90c9ac7397d"
md5-hash: "2c49260d2646a0944b56933f7d4029fb"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS918%2B_42962.pat"
hash: "c1ffb1b48301fbcf1ccffae00062e95c8b5b18d50a70c3fbb79ea12a38a39bb7"
ramdisk-hash: "6ac446bddba53b1c215e0abbf05236371e5e3b91ab0c4c193a0999cc8b8a857b"
zimage-hash: "12afcd27e15ba5e4596e1af7275d9462d31c7d8afb32aa723f7b8b7cfa5a19a2"
md5-hash: "74c067cf1363b9b70522b145b59e1626"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -1,26 +1,11 @@
id: "DS920+"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddEnableDynamicPower: 1
@@ -29,6 +14,9 @@ cmdline: &cmdline
syno_ttyS1: "serial,0x2f8"
vender_format_version: 2
platform: "geminilake"
unique: "synology_geminilake_920+"
dom: 2
dt: true
serial:
prefix:
- "2030"
@@ -44,28 +32,27 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS920%2B_42218.pat"
hash: "73053911bd118b432d5a2036dc62d518eed83b78b32c1eb23696d59725a14892"
ramdisk-hash: "e39890f4bef2e5e4eea956996b0dd92d081c6d9e7c393331131e65bbad1a17a9"
zimage-hash: "74d513aaa3e30d8aa4f80e202d94a68a552e9c0472f8470e133ad29080556f55"
hash: "fe2a4648f76adeb65c3230632503ea36bbac64ee88b459eb9bfb5f3b8c8cebb3"
ramdisk-hash: "f7dd1317f24ec6b9bac839e37f66b59030218c7f97c06f73f1f54ed0f892c4aa"
zimage-hash: "346b68f662b50f47d3ee6c2bc9de6302e4b60436142c24ee88b620c7afd1ba06"
md5-hash: "7764ad4fca0a11ae0ebd7ccd4a49e1aa"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
42661:
ver: "7.1.0"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -75,8 +62,30 @@ builds:
hash: "8076950fdad2ca58ea9b91a12584b9262830fe627794a0c4fc5861f819095261"
ramdisk-hash: "c8ad44826c87e065a3b05f354a639c0a86cb2fa47b88e11949604d53f3e80048"
zimage-hash: "1d0e5b76e08e3483f6bf06d23b5978ec498b855bde23db1f96f343db4c43337d"
md5-hash: "fa3936a53299b1a1142e4c614e2b360c"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS920%2B_42962.pat"
hash: "90b1bd215b85eb366b3d3b6bef6bb6bef657dd0caba032dae556717b58e44c06"
ramdisk-hash: "42053cbfbce34d43c50db2d68786360f644fc88af3e9bbaa6377ffa9953bf158"
zimage-hash: "89ee173272101e6714728e73930d8b31a414f9f1eca8ab78f45c12fc721138ab"
md5-hash: "ba9fbd499791d19859dd9a53372b016a"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -0,0 +1,49 @@
id: "DS923+"
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
SMBusHddDynamicPower: 1
synoboot2:
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
vender_format_version: 2
platform: "r1000"
unique: "synology_r1000_923+"
beta: true
dom: 2
dt: true
serial:
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle: "SBR"
suffix: "alpha"
disks: 4
builds:
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS923%2B_42962.pat"
hash: "e33b47df446ce0bd99c5613767c9dba977915e25acfb5ccb9f5650b14459458f"
ramdisk-hash: "0aa3f1b2d00f887aaf0d0e2c8b51ec97bb545bf5f99c40f33d3eaabc32a5ac03"
zimage-hash: "1e54804c84e0b4e7f71eff5b5ec8aad9c6ba8fb4fc200ad92251d7d29155a651"
md5-hash: "fdff6232dacf9bd3b189506f51577128"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -1,28 +1,12 @@
id: "DVA1622"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
buzzeroffen: "0xffff"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddEnableDynamicPower: 1
@@ -32,6 +16,8 @@ cmdline: &cmdline
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
platform: "geminilake"
unique: "synology_geminilake_dva1622"
dom: 2
serial:
prefix:
- "2030"
@@ -48,7 +34,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -58,8 +43,30 @@ builds:
hash: "f1484cf302627072ca393293cd73e61dc9e09d479ef028b216eae7c12f7b7825"
ramdisk-hash: "6290945ba61f652aec83725f81f5a47bd5e4cdbeb86241c33825154140e164ec"
zimage-hash: "1d0e5b76e08e3483f6bf06d23b5978ec498b855bde23db1f96f343db4c43337d"
md5-hash: "27515a2e7c2f2113ccf8955bf22f3974"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DVA1622_42962.pat"
hash: "9106f6bcc52b4bc2b4ce82748788ca353ddecf8b7552e7c6fb477eb4eca42e67"
ramdisk-hash: "e610146b475074cb1835c7a2528afd0cba389cfa68b8a3ef20214b48ddca78dc"
zimage-hash: "89ee173272101e6714728e73930d8b31a414f9f1eca8ab78f45c12fc721138ab"
md5-hash: "862ef2fffc884038bd3804439b974ab9"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -0,0 +1,97 @@
id: "DVA3219"
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
esataportcfg: "0x00"
support_bde_internal_10g: "no"
supportraidgroup: "no"
support_syno_hybrid_raid: "yes"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "denverton"
unique: "synology_denverton_dva3219"
beta: true
dom: 2
serial:
prefix:
- "1930"
- "1940"
middle: "RFR"
suffix: "alpha"
flags:
- "fma"
disks: 4
builds:
42218:
ver: "7.0.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DVA3219_42218.pat"
hash: "3557df23ff6af9bbb0cf46872ba2fc09c344eb303a38e8283dbc9a46e5eae979"
ramdisk-hash: "6820f900bf2870660541b83f9741a0b70e05e8871bc41c006c9d688105c97f7c"
zimage-hash: "ef97f2d64f3f7f8c5e3f4e8fee613d385d7888826f56e119f1885a722c95c7cc"
md5-hash: "40917aaf18d069f862f9536ac5504385"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
ver: "7.1.0"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1/42661-1/DSM_DVA3219_42661.pat"
hash: "01596eaf7310a56b504fde5743262f721dd0be2836e53d2d74386e14f509bec4"
ramdisk-hash: "a62ef4468db4e6c7eab04bb810c603c65e201aebbcc8994423b0c95dd215e4c5"
zimage-hash: "5222b5efaf7af28ff3833fd37f13100c30acba1ee201a15b2ee360e66e75b48e"
md5-hash: "5c4dea4a45d96e1a6d5bcc041d300079"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DVA3219_42962.pat"
hash: "f03395fd9db108d2c5a684b6ba9b4fadc6b1ab05c4e227d401572c01ec4b3dca"
ramdisk-hash: "8a36c36096dfc9dd5bbd572a6174719c5018fe5d932a4859832025719abac4fc"
zimage-hash: "3c67cefc969ee3de51b7978b8d86cd53cbb0e49ec43b2240bf9b8aad3f2e2200"
md5-hash: "22f43fb4de401436616f943beaf13bd5"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -1,37 +1,22 @@
id: "DVA3221"
modules-notneeded: &modules-notneeded
- ahci
- ata_piix
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
esataportcfg: "0x00"
support_bde_internal_10g: "no"
support_disk_compatibility: "no"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "denverton"
unique: "synology_denverton_dva3221"
dom: 2
serial:
prefix:
- "2030"
@@ -49,7 +34,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -59,11 +43,12 @@ builds:
hash: "01f101d7b310c857e54b0177068fb7250ff722dc9fa2472b1a48607ba40897ee"
ramdisk-hash: "0825958923a5e67d967389769cff5fb7a04a25b98a2826c4c1e8aa7b8146dc8b"
zimage-hash: "ef97f2d64f3f7f8c5e3f4e8fee613d385d7888826f56e119f1885a722c95c7cc"
md5-hash: "b8bd6562290d06dd3a7360f3af330bec"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
@@ -71,7 +56,6 @@ builds:
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
@@ -81,9 +65,32 @@ builds:
hash: "ed3207db40b7bac4d96411378558193b7747ebe88f0fc9c26c59c0b5c688c359"
ramdisk-hash: "0ff061f453bc9888b16c59baaf3617bfa6ee42044122eb1dd0eaaa18b3832381"
zimage-hash: "5222b5efaf7af28ff3833fd37f13100c30acba1ee201a15b2ee360e66e75b48e"
md5-hash: "d433ae251ba95754edde1586851d1e0a"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DVA3221_42962.pat"
hash: "d83044ff12c9ed81c5e7f5ba4b23b68d96c9a40c29a6a9e5c53ad807d1e27ed2"
ramdisk-hash: "7ecb774bfccde028d456613c7232b1d770526ea37e928bf90badac267bafcd78"
zimage-hash: "3c67cefc969ee3de51b7978b8d86cd53cbb0e49ec43b2240bf9b8aad3f2e2200"
md5-hash: "cff2b34f0d9547781da3cf66e161dc3f"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -0,0 +1,89 @@
id: "FS2500"
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
intel_iommu: igfx_off
SMBusHddDynamicPower: 1
vender_format_version: 2
synoboot2:
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
platform: "v1000"
unique: "synology_v1000_fs2500"
beta: true
dom: 2
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
disks: 12
dt: true
builds:
42218:
ver: "7.0.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_FS2500_42218.pat"
hash: "4d060be8afec548fdb042bc8095524f10ff200033cab74df37ae07f3de5eaa69"
ramdisk-hash: "cbe9099c57f23ba53415574b011580218fa55a0bdb83c4e4bba9e27100e5379d"
zimage-hash: "f6816165a52b1f53ce44a45878fe06641da34e9478947f826a236c1a6548f8fd"
md5-hash: "70550293c612c1fd9a8d1b7485173877"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
42661:
ver: "7.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1/42661-1/DSM_FS2500_42661.pat"
hash: "f8343ac070b43fe62d02af6ac9a9c61f8c9852b6b2c79b933629409113e1d3e6"
ramdisk-hash: "698e9b1d719d3032a9a2b91ca08078c632b3265590147b2f6c9ca200c826e987"
zimage-hash: "d939b5937be00a644aae64c33633619a7c310433e60a515c77bbef00b0a7e6b6"
md5-hash: "e071c4984d041309f151de29b9ba82b5"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_FS2500_42962.pat"
hash: "1adc272ba9f308866dc69a8f550d4511966a1156c553f925be167815046a5ab4"
ramdisk-hash: "9efc0351212d36e5a51542bff9b2f173beb913c5be3eaaeec1e78625d62763cb"
zimage-hash: "b0f296aad0cc3b8adba13483f89770d0a4daf9b9cab335910717448b1eaa8254"
md5-hash: "3647d21771fe9be4a3898f95491e9393"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -0,0 +1,93 @@
id: "RS4021xs+"
synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_bde_internal_10g: "no"
esataportcfg: "0x0"
support_led_brightness_adjustment: "no"
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
syno_hdd_detect: 0
syno_port_thaw: 1
vender_format_version: 2
platform: "broadwellnk"
unique: "synology_broadwellnk_rs4021xs+"
beta: true
dom: 2
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
disks: 16
dt: false
builds:
42218:
ver: "7.0.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_RS4021xs%2B_42218.pat"
hash: "7afca3970ac7324d7431c1484d4249939bedd4c18ac34187f894c43119edf3a1"
ramdisk-hash: "3aa9d810064747fca6d0a3ab4c979bd82b49fc0d166dfe714261c2a22145cc70"
zimage-hash: "17607e1739c8acc9903272ebd981bccb27b51057cdcb3cc446e5c5149db452d3"
md5-hash: "46d9eb6aba71dbd61ba0394e575b6d58"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
ver: "7.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1/42661-1/DSM_RS4021xs%2B_42661.pat"
hash: "496b64e431dafa34cdebb92da8ac736bf1610fe157f03df7e6d11152d60991f5"
ramdisk-hash: "143e475fe73c0adb3377361402b4baad21448476e844e55e16d1ed51ffc4c971"
zimage-hash: "e073dd84054f652811e0ae1932af2c7cdbd5fb6e5f18f265097072b8af4605e8"
md5-hash: "ddbbbcf8ccb8d9d345df3e08debc66f6"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"
42962:
ver: "7.1.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_RS4021xs%2B_42962.pat"
hash: "fd848be9336d8b5cc9b514e71d447c7612d0f542d373eef61a6d427430daa931"
ramdisk-hash: "40775a6b9b4fae2887cd07c0efdfb26e738e2b8de73602657f7bc4407ae4a688"
zimage-hash: "8903dc99f7201c8656de618d767c05f91bfd32edd9a3706a50fd223237842bf2"
md5-hash: "c8574a8e358fe40a7b49bbf1ddf38491"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -1,84 +0,0 @@
id: "RS4021xs+"
modules-notneeded: &modules-notneeded
- ahci
- i40e
- ixgbe
- igb
- e1000e
- dca
- etxhci_hcd
- xhci_hcd
- ehci-pci
- uhci_hcd
synoinfo: &synoinfo
support_bde_internal_10g: "no"
support_disk_compatibility: "no"
supportraidgroup: "no"
esataportcfg: "0x00"
rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList"
update_server: "http://example.com/"
update_server_ssl: "https://example.com/"
small_info_path: "https://example.com/null"
updateurl: "http://example.com/"
myds_region_api_base_url: "https://example.com"
security_version_server: "https://example.com/smallupdate"
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0
vender_format_version: 2
syno_port_thaw: 1
syno_hdd_detect: 0
platform: "broadwellnk"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "numeric"
disks: 16
builds:
42218:
ver: "7.0.1"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_RS4021xs%2B_42218.pat"
hash: "7afca3970ac7324d7431c1484d4249939bedd4c18ac34187f894c43119edf3a1"
ramdisk-hash: "3510afe5b3dfe3662bfe054c1728c8794911da431718b533cd03d2a2c061ffd5"
zimage-hash: "b4cc62e9953f226960de98b65887e17dd6df5fa0ad28f665e0b4660dbd5f2fa8"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-common-disable-disabled-ports.patch"
42661:
ver: "7.1.0"
kver: "4.4.180"
rd-compressed: false
efi-bug: no
modules-notneeded: *modules-notneeded
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
pat:
url: "https://global.download.synology.com/download/DSM/release/7.1/42661-1/DSM_RS4021xs%2B_42661.pat"
hash: "496b64e431dafa34cdebb92da8ac736bf1610fe157f03df7e6d11152d60991f5"
ramdisk-hash: "143e475fe73c0adb3377361402b4baad21448476e844e55e16d1ed51ffc4c971"
zimage-hash: "e073dd84054f652811e0ae1932af2c7cdbd5fb6e5f18f265097072b8af4605e8"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-42661-post-init-script.patch"
- "ramdisk-common-network-hosts.patch"
- "ramdisk-42661-disable-disabled-ports.patch"

View File

@@ -0,0 +1 @@
kmod

View File

@@ -1,141 +0,0 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
* A quick tool for patching the boot_params check in the DSM kernel image
* This lets you tinker with the initial ramdisk contents without disabling mount() features and modules loading
*
* The overall pattern we need to find is:
* - an CDECL function
* - does "LOCK OR [const-ptr],n" 4x
* - values of ORs are 1/2/4/8 respectively
* - [const-ptr] is always the same
*
* Usage: php patch-boot_params-check.php vmlinux vmlinux-mod
*/
require __DIR__ . '/common.php';
if ($argc < 2 || $argc > 3) {
perr("Usage: " . $argv[0] . " <inFile> [<outFile>]\n", true);
}
$file = getArgFilePath(1);
perr("\nGenerating patch for $file\n");
//The function will reside in init code part. We don't care we may potentially search beyond as we expect it to be found
$codeAddr = getELFSectionAddr($file, '.init.text', 3);
//Finding a function boundary is non-trivial really as patters can vary, we can have multiple exit points, and in CISC
// there are many things which may match e.g. "PUSH EBP". Implementing even a rough disassembler is pointless.
//However, we can certainly cheat here as we know with CDECL a non-empty function will always contain one or more
// PUSH (0x41) R12-R15 (0x54-57) sequences. Then we can search like a 1K forward for these characteristic LOCK OR.
const PUSH_R12_R15_SEQ = [0x41, [0x54, 0x57]];
const PUSH_R12_R15_SEQ_LEN = 2;
const LOCK_OR_LOOK_AHEAD = 1024;
const LOCK_OR_PTR_SEQs = [
[0xF0, 0x80, null, null, null, null, null, 0x01],
[0xF0, 0x80, null, null, null, null, null, 0x02],
[0xF0, 0x80, null, null, null, null, null, 0x04],
[0xF0, 0x80, null, null, null, null, null, 0x08],
];
const LOCK_OR_PTR_SEQs_NUM = 4; //how many sequences we are expecting
const LOCK_OR_PTR_SEQ_LEN = 8; //length of a single sequence
$fp = getFileMemMapped($file); //Read the whole file to memory to make fseet/fread much faster
$pos = $codeAddr; //Start from where code starts
$orsPos = null; //When matched it will contain our resulting file offsets to LOCK(); OR BYTE PTR [rip+...],0x calls
perr("Looking for f() candidates...\n");
do {
$find = findSequenceWithWildcard($fp, PUSH_R12_R15_SEQ, $pos, -1);
if ($find === -1) {
break; //no more "functions" left
}
perr("\rAnalyzing f() candidate @ " . decTo32bUFhex($pos));
//we found something looking like PUSH R12-R15, now find the ORs
$orsPos = []; //file offsets where LOCK() calls should start
$orsPosNum = 0; //Number of LOCK(); OR ptr sequences found
$seqPos = $pos;
foreach (LOCK_OR_PTR_SEQs as $idx => $seq) {
$find = findSequenceWithWildcard($fp, $seq, $seqPos, LOCK_OR_LOOK_AHEAD);
if ($find === -1) {
break; //Seq not found - there's no point to look further
}
$orsPos[] = $find;
++$orsPosNum;
$seqPos = $find + LOCK_OR_PTR_SEQ_LEN; //Next search will start after the current sequence code
}
//We can always move forward by the function token length (obvious) but if we couldn't find any LOCK-OR tokens
// we can skip the whole look ahead distance. We CANNOT do that if we found even a single token because the next one
// might have been just after the look ahead distance
if ($orsPosNum !== LOCK_OR_PTR_SEQs_NUM) {
$pos += PUSH_R12_R15_SEQ_LEN;
if ($orsPosNum === 0) {
$pos += LOCK_OR_LOOK_AHEAD;
}
continue; //Continue the main search loop to find next function candidate
}
//We found LOCK(); OR ptr sequences so we can print some logs and collect ptrs (as this is quite expensive)
$seqPtrsDist = [];
perr("\n[?] Found possible f() @ " . decTo32bUFhex($pos) . "\n");
$ptrOffset = null;
$equalJumps = 0;
foreach (LOCK_OR_PTR_SEQs as $idx => $seq) {
//data will have the following bytes:
// [0-LOCK()] [1-OR()] [2-BYTE-PTR] [3-OFFS-b3] [4-OFFS-b2] [5-OFFS-b1] [6-OFFS-b1] [7-NUMBER]
$seqData = readAt($fp, $orsPos[$idx], LOCK_OR_PTR_SEQ_LEN);
$newPtrOffset = //how far it "jumps"
$orsPos[$idx] +
(unpack('V', $seqData[3] . $seqData[4] . $seqData[5] . $seqData[6])[1]); //u32 bit LE
if($ptrOffset === null) {
$ptrOffset = $newPtrOffset; //Save the first one to compare in the next loop
++$equalJumps;
} elseif ($ptrOffset === $newPtrOffset) {
++$equalJumps;
}
perr(
"\t[+] Found LOCK-OR#$idx sequence @ " . decTo32bUFhex($orsPos[$idx]) . " => " .
rawToUFhex($seqData) . " [RIP+(dec)$newPtrOffset]\n"
);
}
if ($equalJumps !== 4) {
perr("\t[-] LOCK-OR PTR offset mismatch - $equalJumps/" . LOCK_OR_PTR_SEQs_NUM . " matched\n");
//If the pointer checking failed we can at least move beyond the last LOCK-OR found as we know there's no valid
// sequence of LOCK-ORs there
$pos = $orsPos[3];
continue;
}
perr("\t[+] All $equalJumps LOCK-OR PTR offsets equal - match found!\n");
break;
} while(!feof($fp));
if ($orsPos === null) { //There's a small chance no candidates with LOCK ORs were found
perr("Failed to find matching sequences", true);
}
//Patch offsets
foreach ($orsPos as $seqFileOffset) {
//The offset will point at LOCK(), we need to change the OR (0x80 0x0d) to AND (0x80 0x25) so the two bytes after
$seqFileOffset = $seqFileOffset+2;
perr("Patching OR to AND @ file offset (dec)$seqFileOffset\n");
fseek($fp, $seqFileOffset);
fwrite($fp, "\x25"); //0x0d is OR, 0x25 is AND
}
if (!isset($argv[2])) {
perr("No output file specified - discarding data\n");
exit;
}
saveStreamToFile($fp, $argv[2]);
fclose($fp);

View File

@@ -1,85 +0,0 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
* A quick tool for patching the ramdisk check in the DSM kernel image
* This lets you tinker with the initial ramdisk contents without disabling mount() features and modules loading
*
* Usage: php patch-ramdisk-check.php vmlinux vmlinux-mod
*/
require __DIR__ . '/common.php';
if ($argc < 2 || $argc > 3) {
perr("Usage: " . $argv[0] . " <inFile> [<outFile>]\n", true);
}
$file = getArgFilePath(1);
perr("\nGenerating patch for $file\n");
//Strings (e.g. error for printk()) reside in .rodata - start searching there to save time
$rodataAddr = getELFSectionAddr($file, '.rodata', 2);
//Locate the precise location of "ramdisk error" string
$rdErrAddr = getELFStringLoc($file, '3ramdisk corrupt');
//offsets will be 32 bit in ASM and in LE
$errPrintAddr = $rodataAddr + $rdErrAddr;
$errPrintCAddrLEH = decTo32bLEhex($errPrintAddr - 1); //Somehow rodata contains off-by-one sometimes...
$errPrintAddrLEH = decTo32bLEhex($errPrintAddr);
perr("LE arg addr: " . $errPrintCAddrLEH . "\n");
$fp = getFileMemMapped($file); //Read the whole file to memory to make fseet/fread much faster
//Find the printk() call argument
$printkPos = findSequence($fp, hex2raw($errPrintCAddrLEH), 0, DIR_FWD, -1);
if ($printkPos === -1) {
perr("printk pos not found!\n", true);
}
perr("Found printk arg @ " . decTo32bUFhex($printkPos) . "\n");
//double check if it's a MOV reg,VAL (where reg is EAX/ECX/EDX/EBX/ESP/EBP/ESI/EDI)
fseek($fp, $printkPos - 3);
$instr = fread($fp, 3);
if (strncmp($instr, "\x48\xc7", 2) !== 0) {
perr("Expected MOV=>reg before printk error, got " . bin2hex($instr) . "\n", true);
}
$dstReg = ord($instr[2]);
if ($dstReg < 192 || $dstReg > 199) {
perr("Expected MOV w/reg operand [C0-C7], got " . bin2hex($instr[2]) . "\n", true);
}
$movPos = $printkPos - 3;
perr("Found printk MOV @ " . decTo32bUFhex($movPos) . "\n");
//now we should seek a reasonable amount (say, up to 32 bytes) for a sequence of CALL x => TEST EAX,EAX => JZ
$testPos = findSequence($fp, "\x85\xc0", $movPos, DIR_RWD, 32);
if ($testPos === -1) {
perr("Failed to find TEST eax,eax\n", true);
}
$jzPos = $testPos + 2;
fseek($fp, $jzPos);
$jz = fread($fp, 2);
if ($jz[0] !== "\x74") {
perr("Failed to find JZ\n", true);
}
$jzp = "\xEB" . $jz[1];
perr('OK - patching ' . bin2hex($jz) . " (JZ) to " . bin2hex($jzp) . " (JMP) @ $jzPos\n");
fseek($fp, $jzPos); //we should be here already
perr("Patched " . fwrite($fp, $jzp) . " bytes in memory\n");
if (!isset($argv[2])) {
perr("No output file specified - discarding data\n");
exit;
}
if (!isset($argv[2])) {
perr("No output file specified - discarding data\n");
exit;
}
saveStreamToFile($fp, $argv[2]);
fclose($fp);

View File

@@ -9,7 +9,8 @@ do
if [ "$arg" = "elevator-iosched" ]; then
insmod /usr/lib/modules/rp.ko
rm /usr/lib/modules/rp.ko
rm /sbin/modprobe
rm /usr/sbin/modprobe
ln -s /usr/bin/kmod /usr/sbin/modprobe
exit 0
fi
done

View File

@@ -24,8 +24,8 @@
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh sys
+/addons/addons.sh late
+############################################################################################
Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1
Umount /proc >/dev/null 2>&1

View File

@@ -0,0 +1,31 @@
--- a/usr/sbin/init.post
+++ b/usr/sbin/init.post
@@ -31,7 +31,28 @@
OptPrjQuota="$(GetPQMountOpt "${RootMountPath}")"
# shellcheck disable=SC2046
Mount "${RootMountPath}" /tmpRoot -o barrier=1,noatime ${OptPrjQuota}
+############################################################################################
+SED_PATH='/tmpRoot/usr/bin/sed'
+@@@CONFIG-MANIPULATORS-TOOLS@@@
+
+@@@CONFIG-GENERATED@@@
+
+UPSTART="/tmpRoot/usr/share/init"
+
+if ! echo; then
+ _replace_in_file '^start on' '#start on' $UPSTART/tty.conf
+ _replace_in_file "console output" "console none" $UPSTART/syno_poweroff_task.conf
+ _replace_in_file "console output" "console none" $UPSTART/burnin_loader.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevtrigger.conf
+ _replace_in_file "console output" "console none" $UPSTART/bs-poweroff.conf
+ _replace_in_file "console output" "console none" $UPSTART/udevd.conf
+else
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh late
+############################################################################################
Mkdir -p /tmpRoot/initrd
Umount /proc >/dev/null 2>&1

View File

@@ -1,5 +1,3 @@
diff --git a/etc/passwd b/etc/passwd
index 6a0344d..cf95fbd 100644
--- a/etc/passwd
+++ b/etc/passwd
@@ -1,4 +1,4 @@

View File

@@ -0,0 +1,9 @@
--- a/etc/rc
+++ b/etc/rc
@@ -469,5 +469,5 @@
echo "============ Date ============"
date
echo "=============================="
-
+/addons/addons.sh rcExit
exit 0

View File

@@ -1,11 +1,37 @@
--- a/linuxrc.syno.impl
+++ b/linuxrc.syno.impl
@@ -155,6 +155,8 @@ fi
@@ -38,6 +38,8 @@
UnknownSynoPartitionMigrationFlag="/.unknown_syno_partition_migrate"
IncompatibleRootDevice="/.incompatible_root_device"
+/addons/addons.sh early
+
UmountRoot()
{
grep "^${RootDevice}" /proc/mounts && /bin/umount -f ${Mnt}
@@ -59,5 +61,6 @@
fi
+ /addons/addons.sh jrExit
UmountRoot
exit $1
}
@@ -155,6 +158,8 @@
# insert basic USB modules for detect f401/FDT
echo "Insert basic USB modules..."
SYNOLoadModules $USB_MODULES
+SYNOLoadModules "usb-storage"
+/addons/addons.sh rd
+
+/addons/addons.sh modules
# insert Etron USB3.0 drivers
@@ -209,6 +214,8 @@
fi
fi
+/addons/addons.sh patches
+
if [ "$SupportDualhead" = "yes" ]; then
# Run HA script
/etc.defaults/AHAtasks check_stage

View File

@@ -24,7 +24,7 @@
+ _replace_in_file '^#start on' 'start on' $UPSTART/tty.conf
+fi
+
+/addons/addons.sh sys
+/addons/addons.sh late
+############################################################################################
+
Mkdir -p /tmpRoot/initrd

View File

@@ -3,8 +3,10 @@
. /opt/arpl/include/functions.sh
. /opt/arpl/include/addons.sh
set -o pipefail # Get exit code from process piped
# Sanity check
[ -f "${ORI_RDGZ_FILE}" ] || die "${ORI_RDGZ_FILE} not found!"
[ -f "${ORI_RDGZ_FILE}" ] || (die "${ORI_RDGZ_FILE} not found!" | tee -a "${LOG_FILE}")
echo -n "Patching Ramdisk"
@@ -39,22 +41,25 @@ KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
RD_COMPRESSED="`readModelKey "${MODEL}" "builds.${BUILD}.rd-compressed"`"
# Sanity check
[ -z "${PLATFORM}" -o -z "${KVER}" ] && die "ERROR: Configuration for model ${MODEL} and buildnumber ${BUILD} not found."
[ -z "${PLATFORM}" -o -z "${KVER}" ] && (die "ERROR: Configuration for model ${MODEL} and buildnumber ${BUILD} not found." | tee -a "${LOG_FILE}")
declare -A SYNOINFO
declare -A ADDONS
declare -A USERMODULES
# Read more config
# Read synoinfo and addons from config
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && SYNOINFO["${KEY}"]="${VALUE}"
done < <(readModelMap "${MODEL}" "builds.${BUILD}.synoinfo")
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && SYNOINFO["${KEY}"]="${VALUE}"
done < <(readConfigMap "synoinfo" "${USER_CONFIG_FILE}")
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && ADDONS["${KEY}"]="${VALUE}"
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
# Read modules from user config
while IFS="=" read KEY VALUE; do
[ -n "${KEY}" ] && USERMODULES["${KEY}"]="${VALUE}"
done < <(readConfigMap "modules" "${USER_CONFIG_FILE}")
# Patches
while read f; do
echo -n "."
@@ -65,7 +70,7 @@ done < <(readModelArray "${MODEL}" "builds.${BUILD}.patch")
# Patch /etc/synoinfo.conf
echo -n "."
for KEY in ${!SYNOINFO[@]}; do
sed -i "s|^${KEY}=.*|${KEY}=\"${SYNOINFO[${KEY}]}\"|" "${RAMDISK_PATH}/etc/synoinfo.conf" >"${LOG_FILE}" 2>&1 || dieLog
_set_conf_kv "${KEY}" "${SYNOINFO[${KEY}]}" "${RAMDISK_PATH}/etc/synoinfo.conf" >"${LOG_FILE}" 2>&1 || dieLog
done
# Patch /sbin/init.post
@@ -81,34 +86,65 @@ done
sed -e "/@@@CONFIG-GENERATED@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post"
rm "${TMP_PATH}/rp.txt"
# Copying LKM to /usr/lib/modules/rp.ko
echo -n "."
cp "${LKM_PATH}/rp-${PLATFORM}-${KVER}-${LKM}.ko" "${RAMDISK_PATH}/usr/lib/modules/rp.ko"
# Extract modules to ramdisk
rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules"
gzip -dc "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" | tar xf - -C "${TMP_PATH}/modules"
for F in `ls "${TMP_PATH}/modules/"*.ko`; do
M=`basename ${F}`
if arrayExistItem "${M:0:-3}" "${!USERMODULES[@]}"; then
cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}"
else
rm -f "${RAMDISK_PATH}/usr/lib/modules/${M}"
fi
done
mkdir -p "${RAMDISK_PATH}/usr/lib/firmware"
gzip -dc "${MODULES_PATH}/firmware.tgz" | tar xf - -C "${RAMDISK_PATH}/usr/lib/firmware"
# Clean
rm -rf "${TMP_PATH}/modules"
# Copying fake modprobe
echo -n "."
# Copying fake modprobe
cp "${PATCH_PATH}/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe"
# Copying LKM to /usr/lib/modules
gzip -dc "${LKM_PATH}/rp-${PLATFORM}-${KVER}-${LKM}.ko.gz" > "${RAMDISK_PATH}/usr/lib/modules/rp.ko"
# Addons
MAXDISKS=`readConfigKey "maxdisks" "${USER_CONFIG_FILE}"`
# Check if model needs Device-tree dynamic patch
DT="`readModelKey "${MODEL}" "dt"`"
[ "${DT}" = "true" ] && ADDONS['qjs-dtb']="" # Add system addon "qjs-dtb"
ADDONS['misc']="" # Add system addon "misc"
mkdir -p "${RAMDISK_PATH}/addons"
echo -n "."
#/proc/sys/kernel/syno_install_flag
mkdir -p "${RAMDISK_PATH}/addons"
echo "#!/bin/sh" > "${RAMDISK_PATH}/addons/addons.sh"
echo 'export INSMOD="/sbin/insmod"' >> "${RAMDISK_PATH}/addons/addons.sh"
echo >> "${RAMDISK_PATH}/addons/addons.sh"
echo 'echo "addons.sh called with params ${@}"' >> "${RAMDISK_PATH}/addons/addons.sh"
chmod +x "${RAMDISK_PATH}/addons/addons.sh"
# Required addons: eudev, dtbpatch/maxdisks, powersched
installAddon eudev
echo "/addons/eudev.sh \${1} " >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
if [ "${DT}" = "true" ]; then
installAddon dtbpatch
echo "/addons/dtbpatch.sh \${1} " >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
else
installAddon maxdisks
echo "/addons/maxdisks.sh \${1} ${MAXDISKS}" >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
fi
installAddon powersched
echo "/addons/powersched.sh \${1} " >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
# User addons
for ADDON in ${!ADDONS[@]}; do
PARAMS=${ADDONS[${ADDON}]}
if ! installAddon ${ADDON}; then
echo "ADDON ${ADDON} not found!" | tee "${LOG_FILE}"
echo "ADDON ${ADDON} not found!" | tee -a "${LOG_FILE}"
exit 1
fi
echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
done
chmod +x "${RAMDISK_PATH}/addons/addons.sh"
# Build modules dependencies
/opt/arpl/depmod -a -b ${RAMDISK_PATH} 2>/dev/null
# Reassembly ramdisk
echo -n "."

View File

@@ -56,8 +56,7 @@ gzip -cd "${SCRIPT_DIR}/zImage_template.gz" > "${ZIMAGE_MOD}"
dd if="${VMLINUX_MOD}" of="${ZIMAGE_MOD}" bs=16494 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=15745134 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
RUN_SIZE=$(objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh")
RUN_SIZE=`objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh"`
size_le $RUN_SIZE | dd of=$ZIMAGE_MOD bs=15745210 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=15745244 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
# cksum $ZIMAGE_MOD # https://blog.box.com/crc32-checksums-the-good-the-bad-and-the-ugly
size_le $(($((16#$(php "${SCRIPT_DIR}/crc32.php" "${ZIMAGE_MOD}"))) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog
size_le $(($((16#`crc32 "${ZIMAGE_MOD}" | awk '{print$1}'`)) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog

View File

@@ -2,8 +2,10 @@
. /opt/arpl/include/functions.sh
set -o pipefail # Get exit code from process piped
# Sanity check
[ -f "${ORI_ZIMAGE_FILE}" ] || die "${ORI_ZIMAGE_FILE} not found!"
[ -f "${ORI_ZIMAGE_FILE}" ] || (die "${ORI_ZIMAGE_FILE} not found!" | tee -a "${LOG_FILE}")
echo -n "Patching zImage"
@@ -12,15 +14,11 @@ echo -n "."
# Extract vmlinux
/opt/arpl/bzImage-to-vmlinux.sh "${ORI_ZIMAGE_FILE}" "${TMP_PATH}/vmlinux" >"${LOG_FILE}" 2>&1 || dieLog
echo -n "."
# Patch boot params
/opt/arpl/patch-boot_params-check.php "${TMP_PATH}/vmlinux" "${TMP_PATH}/vmlinux-mod1" >"${LOG_FILE}" 2>&1 || dieLog
echo -n "."
# Patch ramdisk check
/opt/arpl/patch-ramdisk-check.php "${TMP_PATH}/vmlinux-mod1" "${TMP_PATH}/vmlinux-mod2" >"${LOG_FILE}" 2>&1 || dieLog
# Patch boot params and ramdisk check
/opt/arpl/kpatch "${TMP_PATH}/vmlinux" "${TMP_PATH}/vmlinux-mod" >"${LOG_FILE}" 2>&1 || dieLog
echo -n "."
# rebuild zImage
/opt/arpl/vmlinux-to-bzImage.sh "${TMP_PATH}/vmlinux-mod2" "${MOD_ZIMAGE_FILE}" >"${LOG_FILE}" 2>&1 || dieLog
/opt/arpl/vmlinux-to-bzImage.sh "${TMP_PATH}/vmlinux-mod" "${MOD_ZIMAGE_FILE}" >"${LOG_FILE}" 2>&1 || dieLog
echo -n "."
# Update HASH of new DSM zImage
HASH="`sha256sum ${ORI_ZIMAGE_FILE} | awk '{print$1}'`"

Some files were not shown because too many files have changed in this diff Show More