Advertisement
Guest User

Install OMV on ARM boards

a guest
Dec 2nd, 2017
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.01 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. distribution=$(lsb_release -cs)
  4.  
  5. case $distribution in
  6. jessie)
  7. OMV_Name="erasmus"
  8. OMV_EXTRAS_URL="https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/openmediavault-omvextrasorg_latest_all3.deb"
  9. ;;
  10. stretch)
  11. OMV_Name="arrakis"
  12. OMV_EXTRAS_URL="https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/openmediavault-omvextrasorg_latest_all4.deb"
  13. ;;
  14. *)
  15. OMV_Name="stoneburner"
  16. OMV_EXTRAS_URL="https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/openmediavault-omvextrasorg_latest_all.deb"
  17. ;;
  18. esac
  19.  
  20. export APT_LISTCHANGES_FRONTEND=none
  21. if [ -f /etc/armbian-release ]; then
  22. . /etc/armbian-release
  23. else
  24. sed -i "s/^# en_US.UTF-8/en_US.UTF-8/" /etc/locale.gen
  25. locale-gen
  26. fi
  27.  
  28. # preserve cpufrequtils settings:
  29. if [ -f /etc/default/cpufrequtils ]; then
  30. . /etc/default/cpufrequtils
  31. fi
  32.  
  33. cat > /etc/apt/sources.list.d/openmediavault.list << EOF
  34. deb https://openmediavault.github.io/packages/ ${OMV_Name} main
  35. ## Uncomment the following line to add software from the proposed repository.
  36. deb https://openmediavault.github.io/packages/ ${OMV_Name}-proposed main
  37. ## This software is not part of OpenMediaVault, but is offered by third-party
  38. ## developers as a service to OpenMediaVault users.
  39. # deb https://openmediavault.github.io/packages/ ${OMV_Name} partner
  40. EOF
  41.  
  42. debconf-apt-progress -- apt-get update
  43.  
  44. read HOSTNAME </etc/hostname
  45. read TZ </etc/timezone
  46. debconf-set-selections <<< "postfix postfix/mailname string ${HOSTNAME}"
  47. debconf-set-selections <<< "postfix postfix/main_mailer_type string 'No configuration'"
  48. SPACE_NEEDED=$(apt-get --assume-no --allow-unauthenticated --fix-missing --no-install-recommends install openmediavault postfix dirmngr 2>/dev/null | awk -F" " '/additional disk space will be used/ {print $4}')
  49. SPACE_AVAIL=$(df -k / | awk -F" " '/\/$/ {printf ("%0.0f",$4/1200); }')
  50. if [ ${SPACE_AVAIL} -lt ${SPACE_NEEDED} ]; then
  51. dialog --backtitle "$backtitle" --title "No space left on device" --msgbox "\nOpenMediaVault needs ${SPACE_NEEDED} MB for installation while only ${SPACE_AVAIL} MB are available." 7 52
  52. exit 1
  53. fi
  54. apt-get --allow-unauthenticated install openmediavault-keyring
  55. apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7AA630A1EDEE7D73
  56. debconf-apt-progress -- apt-get -y --allow-unauthenticated --fix-missing --no-install-recommends \
  57. -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install openmediavault postfix dirmngr
  58. FILE="${TEMP_DIR}/omv_extras.deb"; wget "$OMV_EXTRAS_URL" -qO $FILE && dpkg -i $FILE ; rm $FILE
  59. # /usr/sbin/omv-update
  60. debconf-apt-progress -- apt-get update
  61. debconf-apt-progress -- apt-get --yes --force-yes --fix-missing --auto-remove --allow-unauthenticated \
  62. --show-upgraded --option DPkg::Options::="--force-confold" dist-upgrade
  63.  
  64. # Install flashmemory plugin and netatalk by default, use nice logo for the latter,
  65. # disable OMV monitoring by default
  66. . /usr/share/openmediavault/scripts/helper-functions
  67. debconf-apt-progress -- apt-get -y --fix-missing --no-install-recommends --auto-remove install openmediavault-flashmemory openmediavault-netatalk
  68. AFP_Options="mimic model = Macmini"
  69. SMB_Options="min receivefile size = 16384\nwrite cache size = 524288\ngetwd cache = yes\nsocket options = TCP_NODELAY IPTOS_LOWDELAY"
  70. xmlstarlet ed -L -u "/config/services/afp/extraoptions" -v "$(echo -e "${AFP_Options}")" ${OMV_CONFIG_FILE}
  71. xmlstarlet ed -L -u "/config/services/smb/extraoptions" -v "$(echo -e "${SMB_Options}")" ${OMV_CONFIG_FILE}
  72. xmlstarlet ed -L -u "/config/services/flashmemory/enable" -v "1" ${OMV_CONFIG_FILE}
  73. xmlstarlet ed -L -u "/config/services/ssh/enable" -v "1" ${OMV_CONFIG_FILE}
  74. xmlstarlet ed -L -u "/config/services/ssh/permitrootlogin" -v "1" ${OMV_CONFIG_FILE}
  75. xmlstarlet ed -L -u "/config/system/time/ntp/enable" -v "1" ${OMV_CONFIG_FILE}
  76. xmlstarlet ed -L -u "/config/system/time/timezone" -v "${TZ}" ${OMV_CONFIG_FILE}
  77. xmlstarlet ed -L -u "/config/system/network/dns/hostname" -v "${HOSTNAME}" ${OMV_CONFIG_FILE}
  78. /usr/sbin/omv-rpc -u admin "perfstats" "set" '{"enable":false}'
  79. /usr/sbin/omv-rpc -u admin "config" "applyChanges" '{ "modules": ["monit","rrdcached","collectd"],"force": true }'
  80. sed -i 's|-j /var/lib/rrdcached/journal/ ||' /etc/init.d/rrdcached
  81. systemctl status log2ram >/dev/null 2>&1 && (systemctl disable log2ram ; rm /etc/cron.daily/log2ram)
  82. /sbin/folder2ram -enablesystemd 2>/dev/null
  83.  
  84. # Prevent accidentally destroying board performance by clicking around in OMV UI since
  85. # OMV sets 'powersave' governor when touching 'Power Management' settings.
  86. if [ ! -f /etc/default/cpufrequtils ]; then
  87. DEFAULT_GOV="$(zgrep "^CONFIG_CPU_FREQ_DEFAULT_GOV_" /proc/config.gz 2>/dev/null | sed 's/CONFIG_CPU_FREQ_DEFAULT_GOV_//')"
  88. if [ -n "${DEFAULT_GOV}" ]; then
  89. GOVERNOR=$(cut -f1 -d= <<<"${DEFAULT_GOV}" | tr '[:upper:]' '[:lower:]')
  90. else
  91. GOVERNOR=ondemand
  92. fi
  93. MIN_SPEED="0"
  94. MAX_SPEED="0"
  95. fi
  96. echo -e "OMV_CPUFREQUTILS_GOVERNOR=${GOVERNOR}" >>/etc/default/openmediavault
  97. echo -e "OMV_CPUFREQUTILS_MINSPEED=${MIN_SPEED}" >>/etc/default/openmediavault
  98. echo -e "OMV_CPUFREQUTILS_MAXSPEED=${MAX_SPEED}" >>/etc/default/openmediavault
  99. for i in netatalk samba flashmemory ssh ntp timezone monit rrdcached collectd cpufrequtils ; do
  100. /usr/sbin/omv-mkconf $i
  101. done
  102.  
  103. # Hardkernel Cloudshell 1 and 2 fixes, read the whole thread for details:
  104. # https://forum.openmediavault.org/index.php/Thread/17855
  105. lsusb | grep -q -i "05e3:0735" && sed -i "/exit 0/i echo 20 > /sys/class/block/sda/queue/max_sectors_kb" /etc/rc.local
  106. if [ "X${BOARD}" = "Xodroidxu4" ]; then
  107. HMP_Fix='; taskset -c -p 4-7 $i '
  108. apt install -y i2c-tools
  109. /usr/sbin/i2cdetect -y 1 | grep -q "60: 60"
  110. if [ $? - eq 0 ]; then
  111. add-apt-repository -y ppa:kyle1117/ppa
  112. sed -i 's/jessie/xenial/' /etc/apt/sources.list.d/kyle1117-ppa-jessie.list
  113. apt install -y -q cloudshell-lcd odroid-cloudshell cloudshell2-fan &
  114. lsusb -v | awk -F"__" '/RANDOM_/ {print $2}' | head -n1 | while read ; do
  115. echo "ATTRS{idVendor}==\"152d\", ATTRS{idProduct}==\"0561\", KERNEL==\"sd*\", ENV{DEVTYPE}==\"disk\", SYMLINK=\"disk/by-id/\$env{ID_BUS}-CloudShell2-${REPLY}-\$env{ID_MODEL}\"" >> /etc/udev/rules.d/99-cloudshell2.rules
  116. echo "ATTRS{idVendor}==\"152d\", ATTRS{idProduct}==\"0561\", KERNEL==\"sd*\", ENV{DEVTYPE}==\"partition\", SYMLINK=\"disk/by-id/\$env{ID_BUS}-CloudShell2-${REPLY}-\$env{ID_MODEL}-part%n\"" >> /etc/udev/rules.d/99-cloudshell2.rules
  117. done
  118. fi
  119. fi
  120.  
  121. # Add a cron job to make NAS processes more snappy
  122. systemctl status rsyslog >/dev/null 2>&1
  123. if [ $? -eq 0 ]; then
  124. echo ':msg, contains, "do ionice -c1" ~' >/etc/rsyslog.d/omv-armbian.conf
  125. systemctl restart rsyslog
  126. fi
  127. echo "* * * * * root for i in \`pgrep \"ftpd|nfsiod|smbd|afpd|cnid\"\` ; do ionice -c1 -p \$i ${HMP_Fix}; done >/dev/null 2>&1" >/etc/cron.d/make_nas_processes_faster
  128. chmod 600 /etc/cron.d/make_nas_processes_faster
  129.  
  130. /usr/sbin/omv-initsystem
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement