# then waits endlessly for them on bootup, after the /dev/mapper disks
# have already been created and exist. todo: create a simple repro
# for this in a vm and report it upstream.
-pi nfs-common
-s dd of=/root/imount <<'EOF'
+if has_btrfs || home_network; then
+ pi nfs-common
+ s dd of=/root/imount <<'EOF'
#!/bin/bash
[[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@"
set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-for dir in /i /mnt/iroot /w /k /kr; do
+for dir in /i /mnt/iroot /k /kr; do
if ! mountpoint $dir &>/dev/null && \
awk '{print $2}' /etc/fstab | grep -xF $dir &>/dev/null; then
if awk '{print $3}' /etc/fstab | grep -xF nfs &>/dev/null; then
fi
done
EOF
-s chmod +x /root/imount
+ s chmod +x /root/imount
-s dd of=/etc/systemd/system/imount.service <<'EOF'
+ s dd of=/etc/systemd/system/imount.service <<'EOF'
[Unit]
Description=Mount /i and related mountpoints
[Install]
WantedBy=multi-user.target
EOF
-sudo systemctl daemon-reload # needed if the file was already there
-sudo systemctl enable imount.service
-sudo systemctl start imount.service
-
+ sudo systemctl daemon-reload # needed if the file was already there
+ sudo systemctl enable imount.service
+ sudo systemctl start imount.service
+fi
dir=/nocow
-if ! mountpoint $dir; then
- subvol=/mnt/root/nocow
- if [[ ! -e $subvol ]]; then
- s btrfs subvolume create $subvol
- s chown root:1000 $subvol
- s chattr +C $subvol
- fi
+if has_btrfs; then
+ if ! mountpoint $dir; then
+ subvol=/mnt/root/nocow
+ if [[ ! -e $subvol ]]; then
+ s btrfs subvolume create $subvol
+ s chown root:1000 $subvol
+ s chattr +C $subvol
+ fi
- first_root_crypt=$(awk '$2 == "/" {print $1}' /etc/mtab)
- tu /etc/fstab <<EOF
+ first_root_crypt=$(awk '$2 == "/" {print $1}' /etc/mtab)
+ tu /etc/fstab <<EOF
$first_root_crypt /nocow btrfs noatime,subvol=nocow 0 0
EOF
- s mkdir -p $dir
- s chown ian:ian $dir
- s mount $dir
+ s mkdir -p $dir
+ s chown ian:ian $dir
+ s mount $dir
+ fi
+else
+ sudo mkdir -p $dir
fi
-
# ssh and probably some other things care about parent directory
# ownership, and ssh doesn\'t allow any group writable parent
# directories, so we are forced to use a directory structure similar