diff --git a/install b/install old mode 100644 new mode 100755 index 070932c..d4bed54 --- a/install +++ b/install @@ -1,31 +1,52 @@ #!/bin/bash +# +# shellcheck disable=SC1091,SC1117,SC2016,SC2046,SC2086 +# +# Copyright (c) 2015-2019 OpenMediaVault Plugin Developers +# Copyright (c) 2017-2019 Armbian Developers +# +# This file is licensed under the terms of the GNU General Public +# License version 2. This program is licensed "as is" without any +# warranty of any kind, whether express or implied. +# +# Ideas/code used from: +# https://github.com/armbian/config/blob/master/debian-software +# https://forum.openmediavault.org/index.php/Thread/25062-Install-OMV5-on-Debian-10-Buster/ declare -l codename declare -l omvCodename declare -l omvInstall="" declare -i version +defaultGovSearch="^CONFIG_CPU_FREQ_DEFAULT_GOV_" +ioniceCron="/etc/cron.d/make_nas_processes_faster" +ioniceScript="/usr/sbin/omv-ionice" omvKey="/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" omvRepo="http://packages.openmediavault.org/public" omvSources="/etc/apt/sources.list.d/openmediavault.list" +smbOptions="min receivefile size = 16384\nwrite cache size = 524288\ngetwd cache = yes\nsocket options = TCP_NODELAY IPTOS_LOWDELAY" url="https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/" export DEBIAN_FRONTEND=noninteractive export APT_LISTCHANGES_FRONTEND=none export LANG=C.UTF-8 +if [ -f /etc/armbian-release ]; then + . /etc/armbian-release +fi + codename="$(lsb_release --codename --short)" case ${codename} in - jessie) - omvCodename="erasmus" - version=3 - ;; stretch) + confCmd="omv-mkconf" + ntp="ntp" omvCodename="arrakis" version=4 ;; buster) + confCmd="omv-salt deploy run" + ntp="chrony" omvCodename="usul" version=5 ;; @@ -36,6 +57,12 @@ case ${codename} in esac echo "${omvCodename} :: ${version}" +hostname=$( /etc/default/cpufrequtils +GOVERNOR="ondemand" +MIN_SPEED="${MIN_SPEED}" +MAX_SPEED="${MAX_SPEED}" +EOF +fi + +if [ -f "/etc/default/cpufrequtils" ]; then + . /etc/default/cpufrequtils +else + # set cpufreq settings if no defaults + if [ -f "/proc/config.gz" ]; then + defaultGov="$(zgrep "${defaultGovSearch}" /proc/config.gz | sed -e "s/${defaultGovSearch}\(.*\)=y/\1/")" + elif [ -f "/boot/config-$(uname -r)" ]; then + defaultGov="$(grep "${defaultGovSearch}" /boot/config-$(uname -r) | sed -e "s/${defaultGovSearch}\(.*\)=y/\1/")" + fi + if [ -z "${DEFAULT_GOV}" ]; then + defaultGov="ondemand" + fi + GOVERNOR=${defaultGov,,} + MIN_SPEED="0" + MAX_SPEED="0" +fi + +# set defaults in /etc/default/openmediavault +omv_set_default "OMV_CPUFREQUTILS_GOVERNOR" "${GOVERNOR}" +omv_set_default "OMV_CPUFREQUTILS_MINSPEED" "${MIN_SPEED}" +omv_set_default "OMV_CPUFREQUTILS_MAXSPEED" "${MAX_SPEED}" + +# update config files +for service in samba flashmemory ssh ${ntp} timezone monit rrdcached collectd cpufrequtils ; do + ${confCmd} ${service} +done + +# Add a cron job to make NAS processes more snappy and silence rsyslog +cat << EOF > /etc/rsyslog.d/omv-armbian.conf +:msg, contains, "do ionice -c1" ~ +:msg, contains, "action " ~ +:msg, contains, "netsnmp_assert" ~ +:msg, contains, "Failed to initiate sched scan" ~ +EOF +systemctl restart rsyslog + +# add taskset to ionice cronjob for biglittle boards +case ${BOARD} in + odroidxu4|bananapim3|nanopifire3|nanopct3plus|nanopim3) + taskset='; taskset -c -p 4-7 ${srv}' + ;; + *rk3399*|*edge*|nanopct4|nanopim4|nanopineo4|renegade-elite|rockpi-4*|rockpro64) + taskset='; taskset -c -p 4-5 ${srv}' + ;; + odroidn2) + taskset='; taskset -c -p 2-5 ${srv}' + ;; +esac + +# create ionice script +cat << EOF > ${ioniceScript} +#!/bin/sh + +for srv in \$(pgrep "ftpd|nfsiod|smbd"); do + ionice -c1 -p \${srv} ${taskset}; +done +EOF +chmod 755 ${ioniceScript} + +# create ionice cronjob +cat << EOF > ${ioniceCron} +* * * * * root ${ioniceScript} >/dev/null 2>&1 +EOF +chmod 600 ${ioniceCron} + exit 0