This commit is contained in:
Ing 2023-06-23 19:50:18 +08:00
parent 1793b0f082
commit ac7f49313a
4 changed files with 130 additions and 133 deletions

View File

@ -10,58 +10,58 @@ loaderIsConfigured || die "$(TEXT "Loader is not configured!")"
# Check if machine has EFI # Check if machine has EFI
[ -d /sys/firmware/efi ] && EFI=1 || EFI=0 [ -d /sys/firmware/efi ] && EFI=1 || EFI=0
LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`" LOADER_DISK="$(blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1)"
BUS=`udevadm info --query property --name ${LOADER_DISK} | grep ID_BUS | cut -d= -f2` BUS=$(udevadm info --query property --name ${LOADER_DISK} | grep ID_BUS | cut -d= -f2)
# Print text centralized # Print text centralized
clear clear
[ -z "${COLUMNS}" ] && COLUMNS=50 [ -z "${COLUMNS}" ] && COLUMNS=50
TITLE="`printf "$(TEXT "Welcome to %s")" "${ARPL_TITLE}"`" TITLE="$(printf "$(TEXT "Welcome to %s")" "${ARPL_TITLE}")"
printf "\033[1;44m%*s\n" ${COLUMNS} "" printf "\033[1;44m%*s\n" ${COLUMNS} ""
printf "\033[1;44m%*s\033[A\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;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}"
printf "\033[1;44m%*s\033[0m\n" ${COLUMNS} "" printf "\033[1;44m%*s\033[0m\n" ${COLUMNS} ""
TITLE="BOOTING:" TITLE="BOOTING:"
[ -d "/sys/firmware/efi" ] && TITLE+=" [UEFI]" || TITLE+=" [BIOS]" [ -d "/sys/firmware/efi" ] && TITLE+=" [UEFI]" || TITLE+=" [BIOS]"
[ "${BUS}" = "usb" ] && TITLE+=" [USB flashdisk]" || TITLE+=" [SATA DoM]" [ "${BUS}" = "usb" ] && TITLE+=" [USB flashdisk]" || TITLE+=" [SATA DoM]"
printf "\033[1;33m%*s\033[0m\n" $(((${#TITLE}+${COLUMNS})/2)) "${TITLE}" printf "\033[1;33m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}"
# Check if DSM zImage changed, patch it if necessary # Check if DSM zImage changed, patch it if necessary
ZIMAGE_HASH="`readConfigKey "zimage-hash" "${USER_CONFIG_FILE}"`" ZIMAGE_HASH="$(readConfigKey "zimage-hash" "${USER_CONFIG_FILE}")"
if [ "`sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print$1}'`" != "${ZIMAGE_HASH}" ]; then if [ "$(sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print$1}')" != "${ZIMAGE_HASH}" ]; then
echo -e "\033[1;43m$(TEXT "DSM zImage changed")\033[0m" echo -e "\033[1;43m$(TEXT "DSM zImage changed")\033[0m"
/opt/arpl/zimage-patch.sh /opt/arpl/zimage-patch.sh
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "$(TEXT "Error")" \ dialog --backtitle "$(backtitle)" --title "$(TEXT "Error")" \
--msgbox "$(TEXT "zImage not patched:\n")`<"${LOG_FILE}"`" 12 70 --msgbox "$(TEXT "zImage not patched:\n")$(<"${LOG_FILE}")" 12 70
exit 1 exit 1
fi fi
fi fi
# Check if DSM ramdisk changed, patch it if necessary # Check if DSM ramdisk changed, patch it if necessary
RAMDISK_HASH="`readConfigKey "ramdisk-hash" "${USER_CONFIG_FILE}"`" RAMDISK_HASH="$(readConfigKey "ramdisk-hash" "${USER_CONFIG_FILE}")"
if [ "`sha256sum "${ORI_RDGZ_FILE}" | awk '{print$1}'`" != "${RAMDISK_HASH}" ]; then if [ "$(sha256sum "${ORI_RDGZ_FILE}" | awk '{print$1}')" != "${RAMDISK_HASH}" ]; then
echo -e "\033[1;43m$(TEXT "DSM Ramdisk changed")\033[0m" echo -e "\033[1;43m$(TEXT "DSM Ramdisk changed")\033[0m"
/opt/arpl/ramdisk-patch.sh /opt/arpl/ramdisk-patch.sh
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "$(TEXT "Error")" \ dialog --backtitle "$(backtitle)" --title "$(TEXT "Error")" \
--msgbox "$(TEXT "Ramdisk not patched:\n")`<"${LOG_FILE}"`" 12 70 --msgbox "$(TEXT "Ramdisk not patched:\n")$(<"${LOG_FILE}")" 12 70
exit 1 exit 1
fi fi
fi fi
# Load necessary variables # Load necessary variables
VID="`readConfigKey "vid" "${USER_CONFIG_FILE}"`" VID="$(readConfigKey "vid" "${USER_CONFIG_FILE}")"
PID="`readConfigKey "pid" "${USER_CONFIG_FILE}"`" PID="$(readConfigKey "pid" "${USER_CONFIG_FILE}")"
MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`" MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`" BUILD="$(readConfigKey "build" "${USER_CONFIG_FILE}")"
SN="`readConfigKey "sn" "${USER_CONFIG_FILE}"`" SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
echo -e "$(TEXT "Model:") \033[1;36m${MODEL}\033[0m" echo -e "$(TEXT "Model:") \033[1;36m${MODEL}\033[0m"
echo -e "$(TEXT "Build:") \033[1;36m${BUILD}\033[0m" echo -e "$(TEXT "Build:") \033[1;36m${BUILD}\033[0m"
if [ ! -f "${MODEL_CONFIG_PATH}/${MODEL}.yml" ] || [ -z "`readConfigKey "builds.${BUILD}" "${MODEL_CONFIG_PATH}/${MODEL}.yml"`" ]; then if [ ! -f "${MODEL_CONFIG_PATH}/${MODEL}.yml" ] || [ -z "$(readConfigKey "builds.${BUILD}" "${MODEL_CONFIG_PATH}/${MODEL}.yml")" ]; then
echo -e "\033[1;33m*** `printf "$(TEXT "The current version of arpl does not support booting %s-%s, please rebuild.")" "${MODEL}" "${BUILD}"` ***\033[0m" echo -e "\033[1;33m*** $(printf "$(TEXT "The current version of arpl does not support booting %s-%s, please rebuild.")" "${MODEL}" "${BUILD}") ***\033[0m"
exit 1 exit 1
fi fi
@ -86,41 +86,43 @@ while IFS=': ' read KEY VALUE; do
done < <(readConfigMap "cmdline" "${USER_CONFIG_FILE}") done < <(readConfigMap "cmdline" "${USER_CONFIG_FILE}")
# #
KVER=`readModelKey "${MODEL}" "builds.${BUILD}.kver"` KVER=$(readModelKey "${MODEL}" "builds.${BUILD}.kver")
if [ "${BUS}" = "ata" ]; then if [ "${BUS}" = "ata" ]; then
LOADER_DEVICE_NAME=`echo ${LOADER_DISK} | sed 's|/dev/||'` LOADER_DEVICE_NAME=$(echo ${LOADER_DISK} | sed 's|/dev/||')
SIZE=$((`cat /sys/block/${LOADER_DEVICE_NAME}/size`/2048+10)) SIZE=$(($(cat /sys/block/${LOADER_DEVICE_NAME}/size) / 2048 + 10))
# Read SATADoM type # Read SATADoM type
DOM="`readModelKey "${MODEL}" "dom"`" DOM="$(readModelKey "${MODEL}" "dom")"
fi fi
NOTSETMACS="`readConfigKey "notsetmacs" "${USER_CONFIG_FILE}"`" NOTSETMACS="$(readConfigKey "notsetmacs" "${USER_CONFIG_FILE}")"
if [ "${NOTSETMACS}" = "true" ]; then if [ "${NOTSETMACS}" = "true" ]; then
for N in `seq 1 8`; do # Currently, only up to 8 are supported. (<==> menu.sh L396, <==> lkm: MAX_NET_IFACES) # Currently, only up to 8 are supported. (<==> menu.sh L396, <==> lkm: MAX_NET_IFACES)
for N in $(seq 1 8); do
[ -n "${CMDLINE["mac${N}"]}" ] && unset CMDLINE["mac${N}"] [ -n "${CMDLINE["mac${N}"]}" ] && unset CMDLINE["mac${N}"]
done done
unset CMDLINE['netif_num'] unset CMDLINE['netif_num']
echo -e "\033[1;33m*** `printf "$(TEXT "'Not set MACs' is enabled.")"` ***\033[0m" echo -e "\033[1;33m*** $(printf "$(TEXT "'Not set MACs' is enabled.")") ***\033[0m"
else else
# Validate netif_num # Validate netif_num
MACS=() MACS=()
for N in `seq 1 8`; do # Currently, only up to 8 are supported. (<==> menu.sh L396, <==> lkm: MAX_NET_IFACES) # Currently, only up to 8 are supported. (<==> menu.sh L396, <==> lkm: MAX_NET_IFACES)
for N in $(seq 1 8); do
[ -n "${CMDLINE["mac${N}"]}" ] && MACS+=(${CMDLINE["mac${N}"]}) [ -n "${CMDLINE["mac${N}"]}" ] && MACS+=(${CMDLINE["mac${N}"]})
done done
NETIF_NUM=${#MACS[*]} NETIF_NUM=${#MACS[*]}
# set netif_num to custom mac amount, netif_num must be equal to the MACX amount, otherwise the kernel will panic. # set netif_num to custom mac amount, netif_num must be equal to the MACX amount, otherwise the kernel will panic.
CMDLINE["netif_num"]=${NETIF_NUM} # The current original CMDLINE['netif_num'] is no longer in use, Consider deleting. CMDLINE["netif_num"]=${NETIF_NUM} # The current original CMDLINE['netif_num'] is no longer in use, Consider deleting.
# real network cards amount # real network cards amount
NETRL_NUM=`ls /sys/class/net/ | grep eth | wc -l` NETRL_NUM=$(ls /sys/class/net/ | grep eth | wc -l)
if [ ${NETIF_NUM} -le ${NETRL_NUM} ]; then if [ ${NETIF_NUM} -le ${NETRL_NUM} ]; then
echo -e "\033[1;33m*** `printf "$(TEXT "Detected %s network cards, %s MACs were customized, the rest will use the original MACs.")" "${NETRL_NUM}" "${CMDLINE["netif_num"]}"` ***\033[0m" echo -e "\033[1;33m*** $(printf "$(TEXT "Detected %s network cards, %s MACs were customized, the rest will use the original MACs.")" "${NETRL_NUM}" "${CMDLINE["netif_num"]}") ***\033[0m"
ETHX=(`ls /sys/class/net/ | grep eth`) # real network cards list ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
for N in `seq $(expr ${NETIF_NUM} + 1) ${NETRL_NUM}`; do for N in $(seq $(expr ${NETIF_NUM} + 1) ${NETRL_NUM}); do
MACR="`cat /sys/class/net/${ETHX[$(expr ${N} - 1)]}/address | sed 's/://g'`" MACR="$(cat /sys/class/net/${ETHX[$(expr ${N} - 1)]}/address | sed 's/://g')"
# no duplicates # no duplicates
while [[ "${MACS[*]}" =~ "$MACR" ]]; do # no duplicates while [[ "${MACS[*]}" =~ "$MACR" ]]; do # no duplicates
MACR="${MACR:0:10}`printf "%02x" $((0x${MACR:10:2} + 1))`" MACR="${MACR:0:10}$(printf "%02x" $((0x${MACR:10:2} + 1)))"
done done
CMDLINE["mac${N}"]="${MACR}" CMDLINE["mac${N}"]="${MACR}"
done done
@ -143,10 +145,10 @@ for KEY in ${!CMDLINE[@]}; do
done done
# Escape special chars # Escape special chars
#CMDLINE_LINE=`echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g'` #CMDLINE_LINE=`echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g'`
CMDLINE_DIRECT=`echo ${CMDLINE_DIRECT} | sed 's/>/\\\\>/g'` CMDLINE_DIRECT=$(echo ${CMDLINE_DIRECT} | sed 's/>/\\\\>/g')
echo -e "$(TEXT "Cmdline:\n")\033[1;36m${CMDLINE_LINE}\033[0m" echo -e "$(TEXT "Cmdline:\n")\033[1;36m${CMDLINE_LINE}\033[0m"
DIRECT="`readConfigKey "directboot" "${USER_CONFIG_FILE}"`" DIRECT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
if [ "${DIRECT}" = "true" ]; then if [ "${DIRECT}" = "true" ]; then
grub-editenv ${GRUB_PATH}/grubenv set dsm_cmdline="${CMDLINE_DIRECT}" grub-editenv ${GRUB_PATH}/grubenv set dsm_cmdline="${CMDLINE_DIRECT}"
echo -e "\033[1;33m$(TEXT "Reboot to boot directly in DSM")\033[0m" echo -e "\033[1;33m$(TEXT "Reboot to boot directly in DSM")\033[0m"
@ -155,17 +157,17 @@ if [ "${DIRECT}" = "true" ]; then
exit 0 exit 0
else else
(/etc/init.d/S41dhcpcd restart >/dev/null 2>&1 &) || true (/etc/init.d/S41dhcpcd restart >/dev/null 2>&1 &) || true
BOOTIPWAIT="`readConfigKey "bootipwait" "${USER_CONFIG_FILE}"`" BOOTIPWAIT="$(readConfigKey "bootipwait" "${USER_CONFIG_FILE}")"
[ -z "${BOOTIPWAIT}" ] && BOOTIPWAIT=10 [ -z "${BOOTIPWAIT}" ] && BOOTIPWAIT=10
sleep ${BOOTIPWAIT} sleep ${BOOTIPWAIT}
ETHX=(`ls /sys/class/net/ | grep eth`) # real network cards list ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
echo "`printf "$(TEXT "Detected %s network cards, Waiting IP.(For reference only)")" "${#ETHX[@]}"`" echo "$(printf "$(TEXT "Detected %s network cards, Waiting IP.(For reference only)")" "${#ETHX[@]}")"
for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
COUNT=0 COUNT=0
DRIVER=`ls -ld /sys/class/net/${ETHX[${N}]}/device/driver 2>/dev/null | awk -F '/' '{print $NF}'` DRIVER=$(ls -ld /sys/class/net/${ETHX[${N}]}/device/driver 2>/dev/null | awk -F '/' '{print $NF}')
echo -en "${ETHX[${N}]}(${DRIVER}): " echo -en "${ETHX[${N}]}(${DRIVER}): "
while true; do while true; do
if [ -z "`ip link show ${ETHX[${N}]} | grep 'UP'`" ]; then if [ -z "$(ip link show ${ETHX[${N}]} | grep 'UP')" ]; then
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "DOWN")\n" echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "DOWN")\n"
break break
fi fi
@ -173,10 +175,10 @@ else
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "ERROR")\n" echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "ERROR")\n"
break break
fi fi
COUNT=$((${COUNT}+1)) COUNT=$((${COUNT} + 1))
IP=`ip route show dev ${ETHX[${N}]} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p'` IP=$(ip route show dev ${ETHX[${N}]} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p')
if [ -n "${IP}" ]; then if [ -n "${IP}" ]; then
echo -en "\r${ETHX[${N}]}(${DRIVER}): `printf "$(TEXT "Access \033[1;34mhttp://%s:5000\033[0m to connect the DSM via web.")" "${IP}"`\n" echo -en "\r${ETHX[${N}]}(${DRIVER}): $(printf "$(TEXT "Access \033[1;34mhttp://%s:5000\033[0m to connect the DSM via web.")" "${IP}")\n"
break break
fi fi
echo -n "." echo -n "."
@ -195,9 +197,8 @@ else
kexec -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog kexec -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog
fi fi
echo -e "\033[1;37m$(TEXT "Booting...")\033[0m" echo -e "\033[1;37m$(TEXT "Booting...")\033[0m"
for T in `w | grep -v "TTY" | awk -F' ' '{print $2}'` for T in $(w | grep -v "TTY" | awk -F' ' '{print $2}'); do
do echo -e "\n\033[1;43m$(TEXT "[This interface will not be operational. Please use the http://find.synology.com/ find DSM and connect.]")\033[0m\n" >"/dev/${T}" 2>/dev/null || true
echo -e "\n\033[1;43m$(TEXT "[This interface will not be operational. Please use the http://find.synology.com/ find DSM and connect.]")\033[0m\n" > "/dev/${T}" 2>/dev/null || true
done done
#poweroff #poweroff
kexec -f -e kexec -f -e

View File

@ -8,19 +8,17 @@ set -e
CNT=3 CNT=3
while true; do while true; do
[ ${CNT} -eq 0 ] && break [ ${CNT} -eq 0 ] && break
LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`" LOADER_DISK="$(blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1)"
[ -n "${LOADER_DISK}" ] && break [ -n "${LOADER_DISK}" ] && break
CNT=$((${CNT}-1)) CNT=$((${CNT} - 1))
sleep 1 sleep 1
done done
[ -z "${LOADER_DISK}" ] && die "$(TEXT "Loader disk not found!")" [ -z "${LOADER_DISK}" ] && die "$(TEXT "Loader disk not found!")"
NUM_PARTITIONS=$(blkid | grep "${LOADER_DISK}[0-9]\+" | cut -d: -f1 | wc -l) NUM_PARTITIONS=$(blkid | grep "${LOADER_DISK}[0-9]\+" | cut -d: -f1 | wc -l)
[ $NUM_PARTITIONS -lt 3 ] && die "$(TEXT "Loader disk seems to be damaged!")" [ $NUM_PARTITIONS -lt 3 ] && die "$(TEXT "Loader disk seems to be damaged!")"
[ $NUM_PARTITIONS -gt 3 ] && die "$(TEXT "There are multiple loader disks, please insert only one loader disk!")" [ $NUM_PARTITIONS -gt 3 ] && die "$(TEXT "There are multiple loader disks, please insert only one loader disk!")"
# Check partitions and ignore errors # Check partitions and ignore errors
fsck.vfat -aw ${LOADER_DISK}1 >/dev/null 2>&1 || true fsck.vfat -aw ${LOADER_DISK}1 >/dev/null 2>&1 || true
fsck.ext2 -p ${LOADER_DISK}2 >/dev/null 2>&1 || true fsck.ext2 -p ${LOADER_DISK}2 >/dev/null 2>&1 || true
@ -31,19 +29,19 @@ mkdir -p ${SLPART_PATH}
mkdir -p ${CACHE_PATH} mkdir -p ${CACHE_PATH}
mkdir -p ${DSMROOT_PATH} mkdir -p ${DSMROOT_PATH}
# Mount the partitions # Mount the partitions
mount ${LOADER_DISK}1 ${BOOTLOADER_PATH} || die "`printf "$(TEXT "Can't mount %s")" "${BOOTLOADER_PATH}"`" mount ${LOADER_DISK}1 ${BOOTLOADER_PATH} || die "$(printf "$(TEXT "Can't mount %s")" "${BOOTLOADER_PATH}")"
mount ${LOADER_DISK}2 ${SLPART_PATH} || die "`printf "$(TEXT "Can't mount %s")" "${SLPART_PATH}"`" mount ${LOADER_DISK}2 ${SLPART_PATH} || die "$(printf "$(TEXT "Can't mount %s")" "${SLPART_PATH}")"
mount ${LOADER_DISK}3 ${CACHE_PATH} || die "`printf "$(TEXT "Can't mount %s")" "${CACHE_PATH}"`" mount ${LOADER_DISK}3 ${CACHE_PATH} || die "$(printf "$(TEXT "Can't mount %s")" "${CACHE_PATH}")"
# Although i18n.sh is included in functions.sh, but i18n.sh dependent ${BOOTLOADER_PATH}/${LOADER_DISK}1, so need to call it again. # Although i18n.sh is included in functions.sh, but i18n.sh dependent ${BOOTLOADER_PATH}/${LOADER_DISK}1, so need to call it again.
. /opt/arpl/include/i18n.sh . /opt/arpl/include/i18n.sh
# Shows title # Shows title
clear clear
TITLE="`printf "$(TEXT "Welcome to %s")" "${ARPL_TITLE}"`" TITLE="$(printf "$(TEXT "Welcome to %s")" "${ARPL_TITLE}")"
printf "\033[1;44m%*s\n" $COLUMNS "" printf "\033[1;44m%*s\n" $COLUMNS ""
printf "\033[1;44m%*s\033[A\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;32m%*s\033[0m\n" $(((${#TITLE} + $COLUMNS) / 2)) "${TITLE}"
printf "\033[1;44m%*s\033[0m\n" $COLUMNS "" printf "\033[1;44m%*s\033[0m\n" $COLUMNS ""
# Move/link SSH machine keys to/from cache volume # Move/link SSH machine keys to/from cache volume
@ -55,7 +53,7 @@ rm -rf ~/.bash_history
ln -s ${CACHE_PATH}/.bash_history ~/.bash_history ln -s ${CACHE_PATH}/.bash_history ~/.bash_history
touch ~/.bash_history touch ~/.bash_history
if ! grep -q "menu.sh" ~/.bash_history; then if ! grep -q "menu.sh" ~/.bash_history; then
echo "menu.sh " >> ~/.bash_history echo "menu.sh " >>~/.bash_history
fi fi
# Check if exists directories into P3 partition, if yes remove and link it # Check if exists directories into P3 partition, if yes remove and link it
if [ -d "${CACHE_PATH}/model-configs" ]; then if [ -d "${CACHE_PATH}/model-configs" ]; then
@ -69,7 +67,7 @@ if [ -d "${CACHE_PATH}/patch" ]; then
fi fi
# Get first MAC address # Get first MAC address
ETHX=(`ls /sys/class/net/ | grep eth`) # real network cards list ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
# If user config file not exists, initialize it # If user config file not exists, initialize it
if [ ! -f "${USER_CONFIG_FILE}" ]; then if [ ! -f "${USER_CONFIG_FILE}" ]; then
@ -98,13 +96,13 @@ if [ ! -f "${USER_CONFIG_FILE}" ]; then
fi fi
for N in $(seq 1 ${#ETHX[@]}); do for N in $(seq 1 ${#ETHX[@]}); do
MACR="`cat /sys/class/net/${ETHX[$(expr ${N} - 1)]}/address | sed 's/://g'`" MACR="$(cat /sys/class/net/${ETHX[$(expr ${N} - 1)]}/address | sed 's/://g')"
# Set custom MAC if defined # Set custom MAC if defined
MACF="`readConfigKey "cmdline.mac${N}" "${USER_CONFIG_FILE}"`" MACF="$(readConfigKey "cmdline.mac${N}" "${USER_CONFIG_FILE}")"
if [ -n "${MACF}" -a "${MACF}" != "${MACR}" ]; then if [ -n "${MACF}" -a "${MACF}" != "${MACR}" ]; then
MAC="${MACF:0:2}:${MACF:2:2}:${MACF:4:2}:${MACF:6:2}:${MACF:8:2}:${MACF:10:2}" MAC="${MACF:0:2}:${MACF:2:2}:${MACF:4:2}:${MACF:6:2}:${MACF:8:2}:${MACF:10:2}"
echo "`printf "$(TEXT "Setting %s MAC to %s")" "${ETHX[$(expr ${N} - 1)]}" "${MAC}"`" echo "$(printf "$(TEXT "Setting %s MAC to %s")" "${ETHX[$(expr ${N} - 1)]}" "${MAC}")"
ip link set dev ${ETHX[$(expr ${N} - 1)]} address ${MAC} >/dev/null 2>&1 && \ ip link set dev ${ETHX[$(expr ${N} - 1)]} address ${MAC} >/dev/null 2>&1 &&
(/etc/init.d/S41dhcpcd restart >/dev/null 2>&1 &) || true (/etc/init.d/S41dhcpcd restart >/dev/null 2>&1 &) || true
fi fi
# Initialize with real MAC # Initialize with real MAC
@ -113,14 +111,13 @@ for N in $(seq 1 ${#ETHX[@]}); do
ethtool -s ${ETHX[$(expr ${N} - 1)]} wol g 2>/dev/null ethtool -s ${ETHX[$(expr ${N} - 1)]} wol g 2>/dev/null
done done
# Get the VID/PID if we are in USB # Get the VID/PID if we are in USB
VID="0x0000" VID="0x0000"
PID="0x0000" PID="0x0000"
BUS=`udevadm info --query property --name ${LOADER_DISK} | grep BUS | cut -d= -f2` BUS=$(udevadm info --query property --name ${LOADER_DISK} | grep BUS | cut -d= -f2)
if [ "${BUS}" = "usb" ]; then if [ "${BUS}" = "usb" ]; then
VID="0x`udevadm info --query property --name ${LOADER_DISK} | grep ID_VENDOR_ID | cut -d= -f2`" VID="0x$(udevadm info --query property --name ${LOADER_DISK} | grep ID_VENDOR_ID | cut -d= -f2)"
PID="0x`udevadm info --query property --name ${LOADER_DISK} | grep ID_MODEL_ID | cut -d= -f2`" PID="0x$(udevadm info --query property --name ${LOADER_DISK} | grep ID_MODEL_ID | cut -d= -f2)"
elif [ "${BUS}" != "ata" ]; then elif [ "${BUS}" != "ata" ]; then
die "$(TEXT "Loader disk neither USB or DoM")" die "$(TEXT "Loader disk neither USB or DoM")"
fi fi
@ -139,18 +136,18 @@ fi
echo ")" echo ")"
# Check if partition 3 occupies all free space, resize if needed # Check if partition 3 occupies all free space, resize if needed
LOADER_DEVICE_NAME=`echo ${LOADER_DISK} | sed 's|/dev/||'` LOADER_DEVICE_NAME=$(echo ${LOADER_DISK} | sed 's|/dev/||')
SIZEOFDISK=`cat /sys/block/${LOADER_DEVICE_NAME}/size` SIZEOFDISK=$(cat /sys/block/${LOADER_DEVICE_NAME}/size)
ENDSECTOR=$((`fdisk -l ${LOADER_DISK} | awk '/'${LOADER_DEVICE_NAME}3'/{print$3}'`+1)) ENDSECTOR=$(($(fdisk -l ${LOADER_DISK} | awk '/'${LOADER_DEVICE_NAME}3'/{print$3}') + 1))
if [ ${SIZEOFDISK} -ne ${ENDSECTOR} ]; then if [ ${SIZEOFDISK} -ne ${ENDSECTOR} ]; then
echo -e "\033[1;36m`printf "$(TEXT "Resizing %s")" "${LOADER_DISK}3"`\033[0m" echo -e "\033[1;36m$(printf "$(TEXT "Resizing %s")" "${LOADER_DISK}3")\033[0m"
echo -e "d\n\nn\n\n\n\n\nn\nw" | fdisk "${LOADER_DISK}" >"${LOG_FILE}" 2>&1 || dieLog echo -e "d\n\nn\n\n\n\n\nn\nw" | fdisk "${LOADER_DISK}" >"${LOG_FILE}" 2>&1 || dieLog
resize2fs ${LOADER_DISK}3 >"${LOG_FILE}" 2>&1 || dieLog resize2fs ${LOADER_DISK}3 >"${LOG_FILE}" 2>&1 || dieLog
fi fi
# Load keymap name # Load keymap name
LAYOUT="`readConfigKey "layout" "${USER_CONFIG_FILE}"`" LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
KEYMAP="`readConfigKey "keymap" "${USER_CONFIG_FILE}"`" KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")"
# Loads a keymap if is valid # Loads a keymap if is valid
if [ -f /usr/share/keymaps/i386/${LAYOUT}/${KEYMAP}.map.gz ]; then if [ -f /usr/share/keymaps/i386/${LAYOUT}/${KEYMAP}.map.gz ]; then
@ -174,13 +171,13 @@ if [ ${BOOT} -eq 1 ]; then
fi fi
# Wait for an IP # Wait for an IP
echo "`printf "$(TEXT "Detected %s network cards, Waiting IP.")" "${#ETHX[@]}"`" echo "$(printf "$(TEXT "Detected %s network cards, Waiting IP.")" "${#ETHX[@]}")"
for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
COUNT=0 COUNT=0
DRIVER=`ls -ld /sys/class/net/${ETHX[${N}]}/device/driver 2>/dev/null | awk -F '/' '{print $NF}'` DRIVER=$(ls -ld /sys/class/net/${ETHX[${N}]}/device/driver 2>/dev/null | awk -F '/' '{print $NF}')
echo -en "${ETHX[${N}]}(${DRIVER}): " echo -en "${ETHX[${N}]}(${DRIVER}): "
while true; do while true; do
if [ -z "`ip link show ${ETHX[${N}]} | grep 'UP'`" ]; then if [ -z "$(ip link show ${ETHX[${N}]} | grep 'UP')" ]; then
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "DOWN")\n" echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "DOWN")\n"
break break
fi fi
@ -188,10 +185,10 @@ for N in $(seq 0 $(expr ${#ETHX[@]} - 1)); do
echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "ERROR")\n" echo -en "\r${ETHX[${N}]}(${DRIVER}): $(TEXT "ERROR")\n"
break break
fi fi
COUNT=$((${COUNT}+1)) COUNT=$((${COUNT} + 1))
IP=`ip route show dev ${ETHX[${N}]} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p'` IP=$(ip route show dev ${ETHX[${N}]} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p')
if [ -n "${IP}" ]; then if [ -n "${IP}" ]; then
echo -en "\r${ETHX[${N}]}(${DRIVER}): `printf "$(TEXT "Access \033[1;34mhttp://%s:7681\033[0m to configure the loader via web terminal.")" "${IP}"`\n" echo -en "\r${ETHX[${N}]}(${DRIVER}): $(printf "$(TEXT "Access \033[1;34mhttp://%s:7681\033[0m to configure the loader via web terminal.")" "${IP}")\n"
break break
fi fi
echo -n "." echo -n "."
@ -208,7 +205,7 @@ echo -e "$(TEXT "Default SSH Root password is") \033[1;31marpl\033[0m"
echo echo
# Check memory # Check memory
RAM=`free -m | awk '/Mem:/{print$2}'` RAM=$(free -m | awk '/Mem:/{print$2}')
if [ ${RAM} -le 3500 ]; then if [ ${RAM} -le 3500 ]; then
echo -e "\033[1;33m$(TEXT "You have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of memory.")\033[0m\n" echo -e "\033[1;33m$(TEXT "You have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of memory.")\033[0m\n"
fi fi

View File

@ -14,27 +14,26 @@ echo -n "Patching Ramdisk"
rm -f "${MOD_RDGZ_FILE}" rm -f "${MOD_RDGZ_FILE}"
# Check disk space left # Check disk space left
LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`" LOADER_DISK="$(blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1)"
LOADER_DEVICE_NAME=`echo ${LOADER_DISK} | sed 's|/dev/||'` LOADER_DEVICE_NAME=$(echo ${LOADER_DISK} | sed 's|/dev/||')
SPACELEFT=`df --block-size=1 | awk '/'${LOADER_DEVICE_NAME}'3/{print$4}'` SPACELEFT=$(df --block-size=1 | awk '/'${LOADER_DEVICE_NAME}'3/{print$4}')
[ ${SPACELEFT} -le 268435456 ] && rm -rf "${CACHE_PATH}/dl" [ ${SPACELEFT} -le 268435456 ] && rm -rf "${CACHE_PATH}/dl"
# Unzipping ramdisk # Unzipping ramdisk
echo -n "." echo -n "."
rm -rf "${RAMDISK_PATH}" # Force clean rm -rf "${RAMDISK_PATH}" # Force clean
mkdir -p "${RAMDISK_PATH}" mkdir -p "${RAMDISK_PATH}"
(cd "${RAMDISK_PATH}"; xz -dc < "${ORI_RDGZ_FILE}" | cpio -idm) >/dev/null 2>&1 (cd "${RAMDISK_PATH}"; xz -dc <"${ORI_RDGZ_FILE}" | cpio -idm) >/dev/null 2>&1
# Check if DSM buildnumber changed # Check if DSM buildnumber changed
. "${RAMDISK_PATH}/etc/VERSION" . "${RAMDISK_PATH}/etc/VERSION"
MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`" MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`" BUILD="$(readConfigKey "build" "${USER_CONFIG_FILE}")"
LKM="`readConfigKey "lkm" "${USER_CONFIG_FILE}"`" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
SN="`readConfigKey "sn" "${USER_CONFIG_FILE}"`" SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
LAYOUT="`readConfigKey "layout" "${USER_CONFIG_FILE}"`" LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
KEYMAP="`readConfigKey "keymap" "${USER_CONFIG_FILE}"`" KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")"
if [ ${BUILD} -ne ${buildnumber} ]; then if [ ${BUILD} -ne ${buildnumber} ]; then
echo -e "\033[A\n\033[1;32mBuild number changed from \033[1;31m${BUILD}\033[1;32m to \033[1;31m${buildnumber}\033[0m" echo -e "\033[A\n\033[1;32mBuild number changed from \033[1;31m${BUILD}\033[1;32m to \033[1;31m${buildnumber}\033[0m"
@ -46,12 +45,12 @@ fi
echo -n "." echo -n "."
# Read model data # Read model data
UNIQUE=`readModelKey "${MODEL}" "unique"` UNIQUE=$(readModelKey "${MODEL}" "unique")
PLATFORM="`readModelKey "${MODEL}" "platform"`" PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`" KVER="$(readModelKey "${MODEL}" "builds.${BUILD}.kver")"
PAT_URL="`readModelKey "${MODEL}" "builds.${BUILD}.pat.url"`" PAT_URL="$(readModelKey "${MODEL}" "builds.${BUILD}.pat.url")"
PAT_MD5_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.md5-hash"`" PAT_MD5_HASH="$(readModelKey "${MODEL}" "builds.${BUILD}.pat.md5-hash")"
RD_COMPRESSED="`readModelKey "${MODEL}" "builds.${BUILD}.rd-compressed"`" RD_COMPRESSED="$(readModelKey "${MODEL}" "builds.${BUILD}.rd-compressed")"
# Sanity check # Sanity check
[ -z "${PLATFORM}" -o -z "${KVER}" ] && (die "ERROR: Configuration for model ${MODEL} and buildnumber ${BUILD} not found." | tee -a "${LOG_FILE}") [ -z "${PLATFORM}" -o -z "${KVER}" ] && (die "ERROR: Configuration for model ${MODEL} and buildnumber ${BUILD} not found." | tee -a "${LOG_FILE}")
@ -77,7 +76,7 @@ done < <(readConfigMap "modules" "${USER_CONFIG_FILE}")
while read f; do while read f; do
echo -n "." echo -n "."
echo "Patching with ${f}" >"${LOG_FILE}" 2>&1 echo "Patching with ${f}" >"${LOG_FILE}" 2>&1
(cd "${RAMDISK_PATH}" && patch -p1 < "${PATCH_PATH}/${f}") >>"${LOG_FILE}" 2>&1 || dieLog (cd "${RAMDISK_PATH}" && patch -p1 <"${PATCH_PATH}/${f}") >>"${LOG_FILE}" 2>&1 || dieLog
done < <(readModelArray "${MODEL}" "builds.${BUILD}.patch") done < <(readModelArray "${MODEL}" "builds.${BUILD}.patch")
# Patch /etc/synoinfo.conf # Patch /etc/synoinfo.conf
@ -90,16 +89,16 @@ _set_conf_kv "SN" "${SN}" "${RAMDISK_PATH}/etc/synoinfo.conf" >"${LOG_FILE}" 2>&
# Patch /sbin/init.post # Patch /sbin/init.post
echo -n "." echo -n "."
grep -v -e '^[\t ]*#' -e '^$' "${PATCH_PATH}/config-manipulators.sh" > "${TMP_PATH}/rp.txt" grep -v -e '^[\t ]*#' -e '^$' "${PATCH_PATH}/config-manipulators.sh" >"${TMP_PATH}/rp.txt"
sed -e "/@@@CONFIG-MANIPULATORS-TOOLS@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post" sed -e "/@@@CONFIG-MANIPULATORS-TOOLS@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post"
rm "${TMP_PATH}/rp.txt" rm "${TMP_PATH}/rp.txt"
touch "${TMP_PATH}/rp.txt" touch "${TMP_PATH}/rp.txt"
for KEY in ${!SYNOINFO[@]}; do for KEY in ${!SYNOINFO[@]}; do
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc/synoinfo.conf'" >> "${TMP_PATH}/rp.txt" echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc/synoinfo.conf'" >>"${TMP_PATH}/rp.txt"
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc.defaults/synoinfo.conf'" >> "${TMP_PATH}/rp.txt" echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc.defaults/synoinfo.conf'" >>"${TMP_PATH}/rp.txt"
done done
echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc/synoinfo.conf'" >> "${TMP_PATH}/rp.txt" echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc/synoinfo.conf'" >>"${TMP_PATH}/rp.txt"
echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc.defaults/synoinfo.conf'" >> "${TMP_PATH}/rp.txt" echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc.defaults/synoinfo.conf'" >>"${TMP_PATH}/rp.txt"
sed -e "/@@@CONFIG-GENERATED@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post" sed -e "/@@@CONFIG-GENERATED@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post"
rm "${TMP_PATH}/rp.txt" rm "${TMP_PATH}/rp.txt"
@ -108,8 +107,8 @@ echo -n "."
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules" mkdir -p "${TMP_PATH}/modules"
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
for F in `ls "${TMP_PATH}/modules/"*.ko`; do for F in $(ls "${TMP_PATH}/modules/"*.ko); do
M=`basename ${F}` M=$(basename ${F})
if arrayExistItem "${M:0:-3}" "${!USERMODULES[@]}"; then if arrayExistItem "${M:0:-3}" "${!USERMODULES[@]}"; then
cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}" cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}"
else else
@ -125,36 +124,36 @@ echo -n "."
# Copying fake modprobe # Copying fake modprobe
cp "${PATCH_PATH}/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe" cp "${PATCH_PATH}/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe"
# Copying LKM to /usr/lib/modules # Copying LKM to /usr/lib/modules
gzip -dc "${LKM_PATH}/rp-${PLATFORM}-${KVER}-${LKM}.ko.gz" > "${RAMDISK_PATH}/usr/lib/modules/rp.ko" gzip -dc "${LKM_PATH}/rp-${PLATFORM}-${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko"
# Addons # Addons
#MAXDISKS=`readConfigKey "maxdisks" "${USER_CONFIG_FILE}"` #MAXDISKS=`readConfigKey "maxdisks" "${USER_CONFIG_FILE}"`
# Check if model needs Device-tree dynamic patch # Check if model needs Device-tree dynamic patch
DT="`readModelKey "${MODEL}" "dt"`" DT="$(readModelKey "${MODEL}" "dt")"
echo -n "." echo -n "."
mkdir -p "${RAMDISK_PATH}/addons" mkdir -p "${RAMDISK_PATH}/addons"
echo "#!/bin/sh" > "${RAMDISK_PATH}/addons/addons.sh" echo "#!/bin/sh" >"${RAMDISK_PATH}/addons/addons.sh"
echo 'echo "addons.sh called with params ${@}"' >> "${RAMDISK_PATH}/addons/addons.sh" echo 'echo "addons.sh called with params ${@}"' >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export PLATFORM=${PLATFORM}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export PLATFORM=${PLATFORM}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export MODEL=${MODEL}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export MODEL=${MODEL}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export BUILD=${BUILD}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export BUILD=${BUILD}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export MLINK=${PAT_URL}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export MLINK=${PAT_URL}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export MCHECKSUM=${PAT_MD5_HASH}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export MCHECKSUM=${PAT_MD5_HASH}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LAYOUT=${LAYOUT}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export LAYOUT=${LAYOUT}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export KEYMAP=${KEYMAP}" >> "${RAMDISK_PATH}/addons/addons.sh" echo "export KEYMAP=${KEYMAP}" >>"${RAMDISK_PATH}/addons/addons.sh"
chmod +x "${RAMDISK_PATH}/addons/addons.sh" chmod +x "${RAMDISK_PATH}/addons/addons.sh"
# Required addons: eudev, disks, wol # Required addons: eudev, disks, wol
installAddon eudev installAddon eudev
echo "/addons/eudev.sh \${1} " >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/eudev.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
installAddon disks installAddon disks
echo "/addons/disks.sh \${1} ${DT} ${UNIQUE}" >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/disks.sh \${1} ${DT} ${UNIQUE}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
[ -f "${USER_UP_PATH}/${MODEL}.dts" ] && cp "${USER_UP_PATH}/${MODEL}.dts" "${RAMDISK_PATH}/addons/model.dts" [ -f "${USER_UP_PATH}/${MODEL}.dts" ] && cp "${USER_UP_PATH}/${MODEL}.dts" "${RAMDISK_PATH}/addons/model.dts"
installAddon wol installAddon wol
echo "/addons/wol.sh \${1} " >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/wol.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
installAddon localrss installAddon localrss
echo "/addons/localrss.sh \${1} " >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/localrss.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
# User addons # User addons
for ADDON in ${!ADDONS[@]}; do for ADDON in ${!ADDONS[@]}; do
PARAMS=${ADDONS[${ADDON}]} PARAMS=${ADDONS[${ADDON}]}
@ -162,34 +161,34 @@ for ADDON in ${!ADDONS[@]}; do
echo "ADDON ${ADDON} not found!" | tee -a "${LOG_FILE}" echo "ADDON ${ADDON} not found!" | tee -a "${LOG_FILE}"
exit 1 exit 1
fi fi
echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >> "${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
done done
[ "2" = "${BUILD:0:1}" ] && sed -i 's/function //g' `find "${RAMDISK_PATH}/addons/" -type f -name "*.sh"` [ "2" = "${BUILD:0:1}" ] && sed -i 's/function //g' $(find "${RAMDISK_PATH}/addons/" -type f -name "*.sh")
# Enable Telnet # Enable Telnet
echo "inetd" >> "${RAMDISK_PATH}/addons/addons.sh" echo "inetd" >>"${RAMDISK_PATH}/addons/addons.sh"
# Build modules dependencies # Build modules dependencies
/opt/arpl/depmod -a -b ${RAMDISK_PATH} 2>/dev/null /opt/arpl/depmod -a -b ${RAMDISK_PATH} 2>/dev/null
# Network card configuration file # Network card configuration file
for N in `seq 0 7`; do for N in $(seq 0 7); do
echo -e "DEVICE=eth${N}\nBOOTPROTO=dhcp\nONBOOT=yes\nIPV6INIT=dhcp\nIPV6_ACCEPT_RA=1" > "${RAMDISK_PATH}/etc/sysconfig/network-scripts/ifcfg-eth${N}" echo -e "DEVICE=eth${N}\nBOOTPROTO=dhcp\nONBOOT=yes\nIPV6INIT=dhcp\nIPV6_ACCEPT_RA=1" >"${RAMDISK_PATH}/etc/sysconfig/network-scripts/ifcfg-eth${N}"
done done
# Reassembly ramdisk # Reassembly ramdisk
echo -n "." echo -n "."
if [ "${RD_COMPRESSED}" == "true" ]; then if [ "${RD_COMPRESSED}" == "true" ]; then
(cd "${RAMDISK_PATH}" && find . | cpio -o -H newc -R root:root | xz -9 --format=lzma > "${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog (cd "${RAMDISK_PATH}" && find . | cpio -o -H newc -R root:root | xz -9 --format=lzma >"${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog
else else
(cd "${RAMDISK_PATH}" && find . | cpio -o -H newc -R root:root > "${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog (cd "${RAMDISK_PATH}" && find . | cpio -o -H newc -R root:root >"${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog
fi fi
# Clean # Clean
rm -rf "${RAMDISK_PATH}" rm -rf "${RAMDISK_PATH}"
# Update SHA256 hash # Update SHA256 hash
RAMDISK_HASH="`sha256sum ${ORI_RDGZ_FILE} | awk '{print$1}'`" RAMDISK_HASH="$(sha256sum ${ORI_RDGZ_FILE} | awk '{print$1}')"
writeConfigKey "ramdisk-hash" "${RAMDISK_HASH}" "${USER_CONFIG_FILE}" writeConfigKey "ramdisk-hash" "${RAMDISK_HASH}" "${USER_CONFIG_FILE}"
echo echo

View File

@ -21,6 +21,6 @@ echo -n "."
/opt/arpl/vmlinux-to-bzImage.sh "${TMP_PATH}/vmlinux-mod" "${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 "." echo -n "."
# Update HASH of new DSM zImage # Update HASH of new DSM zImage
HASH="`sha256sum ${ORI_ZIMAGE_FILE} | awk '{print$1}'`" HASH="$(sha256sum ${ORI_ZIMAGE_FILE} | awk '{print$1}')"
writeConfigKey "zimage-hash" "${HASH}" "${USER_CONFIG_FILE}" writeConfigKey "zimage-hash" "${HASH}" "${USER_CONFIG_FILE}"
echo echo