mirror of
https://github.com/fbelavenuto/arpl.git
synced 2025-12-24 23:12:05 +08:00
Compare commits
42 Commits
v0.4-alpha
...
v1.0-beta2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1335ff30a2 | ||
|
|
ebc92d686a | ||
|
|
5f7807f941 | ||
|
|
7b15e734a6 | ||
|
|
7f76a8c85a | ||
|
|
f2fd6dd4fb | ||
|
|
c7cc1ed8f6 | ||
|
|
caa131b4de | ||
|
|
689effd9d1 | ||
|
|
a989fb307f | ||
|
|
02563f4f1b | ||
|
|
649b594600 | ||
|
|
cbc550799d | ||
|
|
d9db774dce | ||
|
|
b6efcc6589 | ||
|
|
0edc57af1d | ||
|
|
d22a70a407 | ||
|
|
6a492b1cea | ||
|
|
e89c326598 | ||
|
|
0568615f1f | ||
|
|
341a94e0ff | ||
|
|
3606fb645e | ||
|
|
f9831c066e | ||
|
|
c1920c76ab | ||
|
|
98c7c67b23 | ||
|
|
18ee7e55ab | ||
|
|
25b62d3e6c | ||
|
|
858c8ea847 | ||
|
|
6b5ad4be4e | ||
|
|
7a1eb5cbdb | ||
|
|
1ac0ddaee5 | ||
|
|
1712f61995 | ||
|
|
0bbedf2bbc | ||
|
|
deb2cd1884 | ||
|
|
eed06af75f | ||
|
|
e4332d44fa | ||
|
|
2fb04769ba | ||
|
|
1a7f847334 | ||
|
|
cd44a7eb64 | ||
|
|
2313062eec | ||
|
|
52eab13d15 | ||
|
|
a19a1dd1a5 |
21
.github/workflows/main.yml
vendored
21
.github/workflows/main.yml
vendored
@@ -27,6 +27,7 @@ jobs:
|
||||
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
|
||||
@@ -47,7 +48,7 @@ jobs:
|
||||
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
|
||||
@@ -84,7 +85,7 @@ jobs:
|
||||
echo "Building..."
|
||||
make BR2_EXTERNAL=../external
|
||||
cd -
|
||||
#qemu-img convert -O vmdk arpl.img arpl.vmdk
|
||||
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 and generate checksum
|
||||
@@ -92,8 +93,13 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.img.zip" arpl.img
|
||||
zip -9 "arpl-${{ steps.build.outputs.VERSION }}.vmdk.zip" arpl*.vmdk
|
||||
(cd .buildroot/output/images && sha256sum bzImage rootfs.cpio.xz) >> sha256sum
|
||||
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
|
||||
@@ -112,7 +118,6 @@ jobs:
|
||||
with:
|
||||
files: |
|
||||
arpl-${{ steps.build.outputs.VERSION }}.img.zip
|
||||
arpl-${{ steps.build.outputs.VERSION }}.vmdk.zip
|
||||
.buildroot/output/images/bzImage
|
||||
.buildroot/output/images/rootfs.cpio.xz
|
||||
sha256sum
|
||||
arpl-${{ steps.build.outputs.VERSION }}.vmdk-dyn.zip
|
||||
arpl-${{ steps.build.outputs.VERSION }}.vmdk-flat.zip
|
||||
update.zip
|
||||
|
||||
5
TODO
5
TODO
@@ -1,7 +1,6 @@
|
||||
A fazer
|
||||
- Checar NVME no modelo DS920+, DS918+
|
||||
- J4125, HP G7 N40L desligando (#110 #160)
|
||||
- Checar módulo tg3 no próprio loader (BCM57780 [1025:033d]) (#31)
|
||||
- Checar módulo tg3 no próprio loader (BCM57780 [14e4:1692]) (#31)
|
||||
|
||||
Concluidos:
|
||||
- Generalizar código dos addons
|
||||
@@ -34,3 +33,5 @@ Concluidos:
|
||||
- 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)
|
||||
|
||||
@@ -7,16 +7,20 @@ 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 ""
|
||||
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..."
|
||||
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}"`"
|
||||
if [ "`sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print$1}'`" != "${ZIMAGE_HASH}" ]; then
|
||||
@@ -88,7 +92,7 @@ fi
|
||||
# Validate netif_num
|
||||
NETIF_NUM=${CMDLINE["netif_num"]}
|
||||
MACS=0
|
||||
for N in `seq 1 4`; do
|
||||
for N in `seq 1 9`; do
|
||||
[ -n "${CMDLINE["mac${N}"]}" ] && MACS=$((${MACS}+1))
|
||||
done
|
||||
if [ ${NETIF_NUM} -ne ${MACS} ]; then
|
||||
@@ -109,7 +113,7 @@ for KEY in ${!CMDLINE[@]}; do
|
||||
done
|
||||
# Escape special chars
|
||||
CMDLINE_LINE=`echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g'`
|
||||
|
||||
grub-editenv ${GRUB_PATH}/grubenv set dsm_cmdline="${CMDLINE_LINE}"
|
||||
echo -e "Cmdline:\n\033[1;36m${CMDLINE_LINE}\033[0m"
|
||||
|
||||
# Wait for an IP
|
||||
@@ -129,11 +133,17 @@ while true; do
|
||||
echo -n "."
|
||||
done
|
||||
|
||||
DIRECT="`readConfigKey "directboot" "${USER_CONFIG_FILE}"`"
|
||||
if [ "${DIRECT}" = "true" ]; then
|
||||
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 -w
|
||||
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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
ARPL_VERSION="0.4-alpha12"
|
||||
ARPL_VERSION="1.0-beta2"
|
||||
|
||||
# Define paths
|
||||
TMP_PATH="/tmp"
|
||||
@@ -8,6 +8,7 @@ RAMDISK_PATH="${TMP_PATH}/ramdisk"
|
||||
LOG_FILE="${TMP_PATH}/log.txt"
|
||||
|
||||
USER_CONFIG_FILE="${BOOTLOADER_PATH}/user-config.yml"
|
||||
GRUB_PATH="${BOOTLOADER_PATH}/grub"
|
||||
|
||||
ORI_ZIMAGE_FILE="${SLPART_PATH}/zImage"
|
||||
ORI_RDGZ_FILE="${SLPART_PATH}/rd.gz"
|
||||
|
||||
22
files/board/arpl/overlayfs/opt/arpl/include/modules.sh
Normal file
22
files/board/arpl/overlayfs/opt/arpl/include/modules.sh
Normal 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"
|
||||
}
|
||||
@@ -69,6 +69,7 @@ MACF=`echo ${MAC} | sed 's/://g'`
|
||||
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}"
|
||||
@@ -82,6 +83,7 @@ if [ ! -f "${USER_CONFIG_FILE}" ]; then
|
||||
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}"
|
||||
|
||||
@@ -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
|
||||
@@ -22,6 +23,7 @@ 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}"`"
|
||||
|
||||
###############################################################################
|
||||
@@ -61,6 +63,8 @@ function backtitle() {
|
||||
function modelMenu() {
|
||||
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
|
||||
@@ -126,6 +130,8 @@ function buildMenu() {
|
||||
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}"
|
||||
# Delete synoinfo and reload model/build synoinfo
|
||||
@@ -142,6 +148,11 @@ function buildMenu() {
|
||||
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 "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}"
|
||||
DIRTY=1
|
||||
@@ -314,7 +325,7 @@ function cmdlineMenu() {
|
||||
while IFS="=" read KEY VALUE; do
|
||||
[ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}"
|
||||
done < <(readConfigMap "cmdline" "${USER_CONFIG_FILE}")
|
||||
echo "a \"Add/edit an cmdline item\"" > "${TMP_PATH}/menu"
|
||||
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"
|
||||
@@ -445,7 +456,7 @@ function synoinfoMenu() {
|
||||
[ -n "${KEY}" ] && SYNOINFO["${KEY}"]="${VALUE}"
|
||||
done < <(readConfigMap "synoinfo" "${USER_CONFIG_FILE}")
|
||||
|
||||
echo "a \"Add/edit an synoinfo item\"" > "${TMP_PATH}/menu"
|
||||
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"
|
||||
@@ -518,6 +529,85 @@ function synoinfoMenu() {
|
||||
done
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# 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() {
|
||||
@@ -666,6 +756,8 @@ function extractDsmFiles() {
|
||||
echo "OK"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Where the magic happens!
|
||||
function make() {
|
||||
clear
|
||||
PLATFORM="`readModelKey "${MODEL}" "platform"`"
|
||||
@@ -797,35 +889,37 @@ function updateMenu() {
|
||||
fi
|
||||
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
|
||||
--infobox "Downloading last version ${TAG}" 0 0
|
||||
# Download checksum
|
||||
STATUS=`curl --insecure -s -w "%{http_code}" -L "https://github.com/fbelavenuto/arpl/releases/download/${TAG}/sha256sum" -o /tmp/sha256sum`
|
||||
# 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 checksums" 0 0
|
||||
--msgbox "Error downloading update file" 0 0
|
||||
continue
|
||||
fi
|
||||
STATUS=`curl --insecure -s -w "%{http_code}" -L "https://github.com/fbelavenuto/arpl/releases/download/${TAG}/bzImage" -o /tmp/bzImage`
|
||||
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
|
||||
unzip -oq /tmp/update.zip -d /tmp
|
||||
if [ $? -ne 0 ]; then
|
||||
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
|
||||
--msgbox "Error downloading bzImage" 0 0
|
||||
--msgbox "Error extracting update file" 0 0
|
||||
continue
|
||||
fi
|
||||
STATUS=`curl --insecure -s -w "%{http_code}" -L "https://github.com/fbelavenuto/arpl/releases/download/${TAG}/rootfs.cpio.xz" -o /tmp/rootfs.cpio.xz`
|
||||
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
|
||||
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
|
||||
--msgbox "Error downloading rootfs.cpio.xz" 0 0
|
||||
continue
|
||||
fi
|
||||
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
|
||||
--infobox "Installing new files" 0 0
|
||||
# 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
|
||||
mv /tmp/bzImage "${ARPL_BZIMAGE_FILE}"
|
||||
mv /tmp/rootfs.cpio.xz "${ARPL_RAMDISK_FILE}"
|
||||
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
|
||||
@@ -954,10 +1048,14 @@ while true; do
|
||||
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"
|
||||
@@ -976,9 +1074,14 @@ while true; do
|
||||
i) synoinfoMenu; NEXT="l" ;;
|
||||
l) [ "${LKM}" = "dev" ] && LKM='prod' || LKM='dev'
|
||||
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
|
||||
NEXT="d"
|
||||
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 ;;
|
||||
|
||||
@@ -5,8 +5,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
intel_iommu: igfx_off
|
||||
HddEnableDynamicPower: 1
|
||||
|
||||
@@ -5,8 +5,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
SMBusHddDynamicPower: 1
|
||||
syno_hdd_powerup_seq: 0
|
||||
|
||||
@@ -7,8 +7,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
SMBusHddDynamicPower: 1
|
||||
vender_format_version: 2
|
||||
|
||||
@@ -8,7 +8,6 @@ synoinfo: &synoinfo
|
||||
usbportcfg: "0x8700"
|
||||
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
|
||||
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
|
||||
small_info_path: "https://example.com/null"
|
||||
cmdline: &cmdline
|
||||
syno_hdd_powerup_seq: 0
|
||||
HddHotplug: 0
|
||||
|
||||
@@ -8,8 +8,6 @@ synoinfo: &synoinfo
|
||||
usbportcfg: "0x8700"
|
||||
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
|
||||
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
syno_hdd_powerup_seq: 0
|
||||
HddHotplug: 0
|
||||
|
||||
@@ -9,8 +9,6 @@ synoinfo: &synoinfo
|
||||
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
|
||||
small_info_path: "https://example.com/null" # https://update7.synology.com/smallupdate
|
||||
security_version_server: "https://example.com/smallupdate" # https://update7.synology.com/securityVersion
|
||||
cmdline: &cmdline
|
||||
syno_hdd_powerup_seq: 0
|
||||
HddHotplug: 0
|
||||
|
||||
@@ -9,8 +9,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
syno_hdd_powerup_seq: 0
|
||||
HddHotplug: 0
|
||||
|
||||
@@ -5,8 +5,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
intel_iommu: "igfx_off"
|
||||
HddEnableDynamicPower: 1
|
||||
|
||||
@@ -6,8 +6,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
intel_iommu: "igfx_off"
|
||||
HddEnableDynamicPower: 1
|
||||
|
||||
@@ -10,8 +10,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
syno_hdd_powerup_seq: 0
|
||||
HddHotplug: 0
|
||||
|
||||
@@ -7,8 +7,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
syno_hdd_powerup_seq: 0
|
||||
HddHotplug: 0
|
||||
|
||||
@@ -5,8 +5,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
cmdline: &cmdline
|
||||
intel_iommu: igfx_off
|
||||
SMBusHddDynamicPower: 1
|
||||
|
||||
@@ -5,8 +5,6 @@ synoinfo: &synoinfo
|
||||
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"
|
||||
small_info_path: "https://example.com/null"
|
||||
security_version_server: "https://example.com/smallupdate"
|
||||
support_bde_internal_10g: "no"
|
||||
esataportcfg: "0x0"
|
||||
cmdline: &cmdline
|
||||
|
||||
1
files/board/arpl/overlayfs/opt/arpl/modinfo
Symbolic link
1
files/board/arpl/overlayfs/opt/arpl/modinfo
Symbolic link
@@ -0,0 +1 @@
|
||||
kmod
|
||||
@@ -45,6 +45,7 @@ RD_COMPRESSED="`readModelKey "${MODEL}" "builds.${BUILD}.rd-compressed"`"
|
||||
|
||||
declare -A SYNOINFO
|
||||
declare -A ADDONS
|
||||
declare -A USERMODULES
|
||||
|
||||
# Read synoinfo and addons from config
|
||||
while IFS="=" read KEY VALUE; do
|
||||
@@ -54,6 +55,11 @@ 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 "."
|
||||
@@ -84,15 +90,17 @@ echo -n "."
|
||||
# Extract modules to ramdisk
|
||||
rm -rf "${TMP_PATH}/modules"
|
||||
mkdir -p "${TMP_PATH}/modules"
|
||||
gzip -dc "${CACHE_PATH}/modules/${PLATFORM}-${KVER}.tgz" | tar xf - -C "${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}`
|
||||
# Skip existent modules
|
||||
# [ -f "${RAMDISK_PATH}/usr/lib/modules/${M}" ] || mv "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}"
|
||||
cp "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}"
|
||||
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 "${CACHE_PATH}/modules/firmware.tgz" | tar xf - -C "${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"
|
||||
|
||||
@@ -113,7 +121,7 @@ echo "#!/bin/sh" > "${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 eudev and dtbpatch/maxdisks
|
||||
# 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
|
||||
@@ -123,6 +131,8 @@ 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}]}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
set root=(hd0,msdos1)
|
||||
search --set=root --label "ARPL1"
|
||||
set prefix=($root)'/grub'
|
||||
configfile $prefix/grub.cfg
|
||||
|
||||
Binary file not shown.
@@ -5,16 +5,18 @@ insmod test
|
||||
terminal_input console
|
||||
terminal_output console
|
||||
|
||||
set default="0"
|
||||
set default="boot"
|
||||
set timeout="5"
|
||||
set timeout_style="menu"
|
||||
|
||||
insmod loadenv
|
||||
if [ -s $prefix/grubenv ]; then
|
||||
set have_grubenv=true
|
||||
load_env
|
||||
fi
|
||||
if [ "${next_entry}" ] ; then
|
||||
if [ "${default}" ]; then
|
||||
set default="${default}"
|
||||
fi
|
||||
if [ "${next_entry}" ]; then
|
||||
set default="${next_entry}"
|
||||
set next_entry=
|
||||
save_env next_entry
|
||||
@@ -36,14 +38,6 @@ else
|
||||
insmod vga
|
||||
fi
|
||||
|
||||
insmod font
|
||||
if loadfont ${prefix}/fonts/unicode.pf2; then
|
||||
insmod gfxterm
|
||||
set gfxmode=auto
|
||||
set gfxpayload=keep
|
||||
terminal_output gfxterm
|
||||
fi
|
||||
|
||||
insmod serial
|
||||
if serial --unit=0 --speed=115200; then
|
||||
terminal_input --append serial_com0
|
||||
@@ -53,6 +47,16 @@ fi
|
||||
insmod search
|
||||
search --set=root --label "ARPL3"
|
||||
if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
|
||||
if [ "${default}" = "direct" ]; then
|
||||
set timeout="1"
|
||||
menuentry 'Boot DSM kernel directly' --id direct {
|
||||
echo "Loading DSM kernel..."
|
||||
linux /zImage-dsm ${dsm_cmdline}
|
||||
echo "Loading DSM initramfs..."
|
||||
initrd /initrd-dsm
|
||||
echo "Booting..."
|
||||
}
|
||||
fi
|
||||
menuentry 'Boot DSM' --id boot {
|
||||
echo "Loading kernel..."
|
||||
linux /bzImage-arpl console=ttyS0,115200n8 quiet net.ifnames=0 biosdevname=0
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
version: 1
|
||||
name: i915
|
||||
description: "Intel iGPU Drivers (10th Gen)"
|
||||
available-for:
|
||||
apollolake-4.4.180:
|
||||
install-script: "install.sh"
|
||||
copy: "apollolake-4.4.180"
|
||||
geminilake-4.4.180:
|
||||
install-script: "install.sh"
|
||||
copy: "geminilake-4.4.180"
|
||||
BIN
files/board/arpl/p3/addons/powersched/all.tgz
Normal file
BIN
files/board/arpl/p3/addons/powersched/all.tgz
Normal file
Binary file not shown.
16
files/board/arpl/p3/addons/powersched/manifest.yml
Normal file
16
files/board/arpl/p3/addons/powersched/manifest.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
version: 1
|
||||
name: powersched
|
||||
system: true
|
||||
description: "Utility to configure RTC according to DSM power schedule"
|
||||
compile-script: compile.sh
|
||||
all:
|
||||
install-script: "install.sh"
|
||||
copy: "all"
|
||||
available-for:
|
||||
bromolow-3.10.108:
|
||||
apollolake-4.4.180:
|
||||
broadwell-4.4.180:
|
||||
broadwellnk-4.4.180:
|
||||
denverton-4.4.180:
|
||||
geminilake-4.4.180:
|
||||
v1000-4.4.180:
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
11
img-gen.sh
11
img-gen.sh
@@ -80,9 +80,16 @@ echo "Version: ${VERSION}"
|
||||
echo "Building... Drink a coffee and wait!"
|
||||
make BR2_EXTERNAL=../external -j`nproc`
|
||||
cd -
|
||||
#qemu-img convert -O vmdk -o adapter_type=lsilogic -o compat6 arpl.img arpl.vmdk
|
||||
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
|
||||
[ -x test.sh ] && ./test.sh
|
||||
rm -f *.zip
|
||||
zip -9 "arpl-${VERSION}.img.zip" arpl.img
|
||||
zip -9 "arpl-${VERSION}.vmdk.zip" arpl*.vmdk
|
||||
zip -9 "arpl-${VERSION}.vmdk-dyn.zip" arpl-dyn.vmdk
|
||||
zip -9 "arpl-${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
|
||||
rm -f sha256sum
|
||||
|
||||
5
update-list.yml
Normal file
5
update-list.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
replace:
|
||||
".buildroot/output/images/bzImage": "/mnt/p3/bzImage-arpl"
|
||||
".buildroot/output/images/rootfs.cpio.xz": "/mnt/p3/initrd-arpl"
|
||||
"files/board/arpl/p1/grub/grub.cfg": "/mnt/p1/grub/grub.cfg"
|
||||
remove:
|
||||
Reference in New Issue
Block a user