X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=distro-begin;h=a7622848af7171f3437c9f02dcba2c3eb2ef2f1a;hb=c2bf18a9e27233fc9b57450455969fc9e53508b8;hp=bbd94f2afdd68bf641bf326e0bddb5b4c7397779;hpb=7828c7fd662aca1327c45854614237ca9a942a00;p=distro-setup diff --git a/distro-begin b/distro-begin index bbd94f2..a762284 100755 --- a/distro-begin +++ b/distro-begin @@ -583,13 +583,14 @@ s mkdir -p /mnt/iroot # 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 /w; 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 @@ -600,9 +601,9 @@ for dir in /i /mnt/iroot /w /k /kr; do 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 @@ -611,32 +612,39 @@ Type=oneshot ExecStart=/root/imount [Install] +# note /kr needs networking, this target is the simplest way to +# time it when the network should be up, but not do something +# dumb like delay startup until the network is up. It happens +# at some time after network.target 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 <