137 lines
5.5 KiB
Bash
137 lines
5.5 KiB
Bash
#!/bin/bash
|
|
|
|
# arguments: $RELEASE $LINUXFAMILY $BOARD $BUILD_DESKTOP
|
|
#
|
|
# This is the image customization script
|
|
#
|
|
# NOTE: It is copied to /tmp directory inside the image
|
|
# and executed there inside chroot environment
|
|
# so don't reference any files that are not already installed
|
|
|
|
RELEASE=$1
|
|
LINUXFAMILY=$2
|
|
BOARD=$3
|
|
BUILD_DESKTOP=$4
|
|
|
|
Main() {
|
|
case $RELEASE in
|
|
jessie)
|
|
# your code here
|
|
# InstallOpenMediaVault # uncomment to get an OMV 3 image
|
|
;;
|
|
xenial)
|
|
# your code here
|
|
;;
|
|
stretch)
|
|
# your code here
|
|
;;
|
|
esac
|
|
} # Main
|
|
|
|
InstallOpenMediaVault() {
|
|
# use this routine to create a Debian Jessie based fully functional
|
|
# OpenMediaVault 3 OS image. Use of mainline kernel highly recommended!
|
|
# After exchanging userpatches/customize-image.sh or at least uncommenting
|
|
# InstallOpenMediaVault line above you would then run this for a NEO 2
|
|
# for example: ./compile.sh RELEASE=jessie BRANCH=dev BOARD=nanopineo2
|
|
#
|
|
# Please note that this variant changes Armbian default security
|
|
# policies since you end up with root password 'openmediavault' which
|
|
# you have to change yourself later.
|
|
#
|
|
# This routine is based on idea/code courtesy Benny Stark. For fixes,
|
|
# discussion and feature requests please refer to
|
|
# https://forum.armbian.com/index.php?/topic/2644-openmediavault-3x-customize-imagesh/
|
|
|
|
echo root:openmediavault | chpasswd
|
|
rm /root/.not_logged_in_yet
|
|
cp -p /etc/default/cpufrequtils /etc/default/cpufrequtils.bak
|
|
locale-gen "en_US.UTF-8"
|
|
locale-gen "C"
|
|
export LANG=C
|
|
export LC_ALL="en_US.UTF-8"
|
|
|
|
#Add OMV source.list and Update System
|
|
cat > /etc/apt/sources.list.d/openmediavault.list <<- EOF
|
|
# deb http://packages.openmediavault.org/public erasmus main
|
|
deb https://openmediavault.github.io/packages/ erasmus main
|
|
## Uncomment the following line to add software from the proposed repository.
|
|
# deb http://packages.openmediavault.org/public erasmus-proposed main
|
|
deb https://openmediavault.github.io/packages/ erasmus-proposed main
|
|
|
|
## This software is not part of OpenMediaVault, but is offered by third-party
|
|
## developers as a service to OpenMediaVault users.
|
|
# deb http://packages.openmediavault.org/public erasmus partner
|
|
EOF
|
|
|
|
# Add OMV and OMV Plugin developer keys
|
|
debconf-apt-progress -- apt-get update
|
|
apt-get --yes --force-yes --allow-unauthenticated install openmediavault-keyring
|
|
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7AA630A1EDEE7D73
|
|
|
|
# install debconf-utils, postfix and OMV
|
|
debconf-set-selections <<< "postfix postfix/mailname string openmediavault"
|
|
debconf-set-selections <<< "postfix postfix/main_mailer_type string 'No configuration'"
|
|
apt-get --yes --force-yes --allow-unauthenticated --fix-missing --no-install-recommends \
|
|
-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install \
|
|
debconf-utils postfix
|
|
# move newaliases temporarely out of the way (see Ubuntu bug 1531299)
|
|
cp -p /usr/bin/newaliases /usr/bin/newaliases.bak && ln -sf /bin/true /usr/bin/newaliases
|
|
# set hostname
|
|
read HOSTNAME </etc/hostname
|
|
sed -i -e "s/^::1 localhost.*/::1 ${HOSTNAME} localhost ip6-localhost ip6-loopback/" \
|
|
-e "s/^127.0.0.1 localhost.*/127.0.0.1 ${HOSTNAME} localhost/" /etc/hosts
|
|
sed -i -e "s/^mydestination =.*/mydestination = ${HOSTNAME}, localhost.localdomain, localhost/" \
|
|
-e "s/^myhostname =.*/myhostname = ${HOSTNAME}/" /etc/postfix/main.cf
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get --yes --force-yes --allow-unauthenticated --fix-missing --no-install-recommends \
|
|
-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install \
|
|
openmediavault
|
|
|
|
#install OMV extras
|
|
FILE=$(mktemp)
|
|
wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all3.deb -qO $FILE && dpkg -i $FILE && rm $FILE
|
|
/usr/sbin/omv-update
|
|
# use folder2ram instead of log2ram with OMV
|
|
apt-get -y install openmediavault-flashmemory
|
|
sed -i -e '/<flashmemory>/,/<\/flashmemory>/ s/<enable>0/<enable>1/' \
|
|
-e '/<ssh>/,/<\/ssh>/ s/<enable>0/<enable>1/' /etc/openmediavault/config.xml
|
|
/usr/sbin/omv-mkconf flashmemory
|
|
systemctl disable log2ram
|
|
/sbin/folder2ram -enablesystemd
|
|
sed -i 's|-j /var/lib/rrdcached/journal/ ||' /etc/init.d/rrdcached
|
|
|
|
#FIX TFTPD ipv4
|
|
[ -f /etc/default/tftpd-hpa ] && sed -i 's/--secure/--secure --ipv4/' /etc/default/tftpd-hpa
|
|
|
|
# rootfs resize to 4GB max and adding omv-initsystem to firstrun -- q&d but shouldn't matter
|
|
echo 8388608s >/root/.rootfs_resize
|
|
sed -i '/systemctl\ disable\ firstrun/i \
|
|
\tmv /usr/bin/newaliases.bak /usr/bin/newaliases \
|
|
\texport DEBIAN_FRONTEND=noninteractive \
|
|
\tapt-get install -f || exit 0 \
|
|
\t/usr/sbin/omv-initsystem \
|
|
\tmv /etc/default/cpufrequtils.bak /etc/default/cpufrequtils' /etc/init.d/firstrun
|
|
sed -i '/systemctl\ disable\ firstrun/a \
|
|
\tsync && sleep 30 && reboot' /etc/init.d/firstrun
|
|
|
|
# some performance tuning
|
|
sed -i '/^exit\ 0/i \
|
|
echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \
|
|
sleep 0.1 \
|
|
echo 1 >/sys/devices/system/cpu/cpufreq/ondemand/io_is_busy \
|
|
echo 25 >/sys/devices/system/cpu/cpufreq/ondemand/up_threshold \
|
|
echo 10 >/sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor \
|
|
' /etc/rc.local
|
|
echo '* * * * * root for i in `pgrep "smbd|afpd|cnid"` ; do ionice -c1 -p $i ; done >/dev/null 2>&1' \
|
|
>/etc/cron.d/make_samba_and_netatalk_faster
|
|
chmod 600 /etc/cron.d/make_samba_and_netatalk_faster
|
|
|
|
# add SATA port multiplier hint if appropriate
|
|
[ "${LINUXFAMILY}" = "sunxi" ] && \
|
|
echo -e "#\n# If you want to use a SATA PM add \"ahci_sunxi.enable_pmp=1\" to bootargs above" \
|
|
>>/boot/boot.cmd
|
|
} # InstallOpenMediaVault
|
|
|
|
Main "$@"
|