Last active
December 22, 2019 14:50
-
-
Save curiousercreative/42afaec4f2ee722a20ba2ac399d37df8 to your computer and use it in GitHub Desktop.
Configuration for a fresh Ubuntu 18.04 Rock64 install. Adds a user, sets timezone, installs zfs, samba, configures disk power management, etc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# Read this script and modify it before running. It's not tested as is and is not | |
# meant to be run unsupervised. | |
# | |
hostname='YOUR_DESIRED_HOSTNAME' | |
user='YOUR_USERNAME' | |
hdd_spindown_timeout=1800 | |
kernel=$(uname -r) | |
tz='America/New_York' | |
zpool_name='pool0' | |
zpool_mount_point='some path' | |
###### with bionic already installed, ssh as rock64, pass rock64 | |
# gain superuser privilege | |
sudo su | |
# set timezone | |
timedatectl set-timezone $tz | |
# adduser | |
adduser "$user" | |
# add to sudo group | |
usermod -aG sudo "$user" | |
###### login as user | |
# generate ssh folder and keys | |
ssh-keygen -t rsa -b 4096 -C "rock64" | |
# add your remote host key to authorized_keys | |
touch ~/.ssh/authorized_keys | |
chmod 600 ~/.ssh/authorized_keys | |
vi ~/.ssh/authorized_keys | |
# gain superuser access | |
sudo su | |
# lock default rock64 account | |
passwd -l rock64 | |
# update hostname | |
hostnamectl set-hostname "$hostname" | |
# install packages | |
apt update && apt upgrade -y | |
apt install -y \ | |
zfsutils-linux zfs-dkms spl \ | |
samba \ | |
debhelper hdparm unzip | |
#### fix for kernel module builds | |
#### https://forum.armbian.com/topic/6789-build-zfs-on-rk3328/?tab=comments#comment-53681 | |
# copy kernel source | |
# NOTE: you may need to change these paths for your kernel version | |
wget -qO- https://github.com/ayufan-rock64/linux-kernel/archive/4.4.190-1233-rockchip-ayufan.tar.gz | tar xvz -C /usr/src | |
# copy kernel source tools + scripts folder for builds to work | |
# NOTE: you may need to change these paths for your kernel version | |
rsync -a "/usr/src/linux-kernel-4.4.190-1233-rockchip-ayufan/tools/" "/usr/src/linux-headers-$(uname -r)/tools/" | |
rsync -a "/usr/src/linux-kernel-4.4.190-1233-rockchip-ayufan/scripts/" "/usr/src/linux-headers-$(uname -r)/scripts/" | |
# comment out selinux | |
# NOTE: read instructions at link, this sed command doesn't work | |
# sed -i 's/subdir\-\$\(CONFIG_SECURITY_SELINUX\)/#subdir-$(CONFIG_SECURITY_SELINUX)/' "/usr/src/linux-headers-$(uname -r)/scripts/Makefile" | |
# make kernel scripts | |
# NOTE: you may need to change these paths for your kernel version | |
cd "/usr/src/linux-headers-$(uname -r)/" | |
make scripts -j4 | |
#### fix for spl kernel module | |
#### https://forum.armbian.com/topic/6789-build-zfs-on-rk3328/?tab=comments#comment-53681 | |
# remove some KUID lines | |
# NOTE: read instructions at link, didn't get a chance to script it | |
vi /var/lib/dkms/spl/0.7.5/source/configure | |
# NOTE: path may vary based on spl/zfs version | |
dkms build spl/0.7.5 | |
dkms install --force spl/0.7.5 | |
modprobe spl | |
dkms build zfs/0.7.5 | |
# this next one failed a few times before succeeding | |
dkms install --force zfs/0.7.5 | |
modprobe zfs | |
# attempt to install again | |
apt install -y \ | |
zfsutils-linux zfs-dkms spl \ | |
samba \ | |
debhelper hdparm | |
# create directory to mount | |
mkdir -p some/path | |
chmod 755 some/path | |
# create or import zpool | |
# zpool import some_pool | |
#### configure samba | |
#### https://www.computerbeginnersguides.com/blog/2018/04/27/install-and-configure-samba-in-ubuntu-18-04-bionic-beaver/ | |
smbpasswd -a "$user" | |
# add share | |
cat <<EOF >> /etc/samba/smb.conf | |
[NAME OF SHARE] | |
path = PATH TO SHARE | |
available = yes | |
valid users = $user | |
read only = no | |
browseable = yes | |
public = no | |
writable = yes | |
access based share enum = yes | |
EOF | |
#### HDD Power management | |
## Allow disks to standby after 5 minutes of inactivty | |
# NOTE: this may be all you need depending on your disks + enclosure, but for my use case | |
# this doesn't spin the disks down, just uses less power | |
cat <<EOF >> /etc/rc.local | |
#!/bin/bash | |
hdparm -B127 -S60 /dev/sda | |
hdparm -B127 -S60 /dev/sdb | |
exit 0 | |
EOF | |
chmod u+x /etc/rc.local | |
## Spin down disks after 30 minutes of inactivity using hd-idle | |
# download, extract and install | |
wget https://github.com/h31/hd-idle/archive/master.zip \ | |
&& unzip master.zip \ | |
&& cd hd-idle-master \ | |
&& dpkg-buildpackage \ | |
&& dpkg -i ../hd-idle_*.deb | |
# configure hd-idle to start on boot | |
sed -i 's/START_HD_IDLE=.*/START_HD_IDLE=true/' /etc/default/hd-idle | |
# configure hd-idle to not spin down disks by default, but spin down our curiouser-backup after 30 minutes | |
# NOTE: you'll want to edit the next command to target your disks and for your desired timeout | |
echo 'HD_IDLE_OPTS="-i 0 -a sda -i $hdd_spindown_timeout -a sdb -i $hdd_spindown_timeout -l /var/log/hd-idle.log"' >> /etc/default/hd-idle | |
# blacklist UAS driver for unstable devices (OWC Mercury Elite Pro Dual below) | |
echo "options usb-storage quirks=1e91:a3a6:u" > /etc/modprobe.d/rk3328-usb-storage-quirks.conf | |
#### Reboot | |
systemctl reboot |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment