# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+PS4='+ $LINENO '
set -eE -o pipefail
trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+if [[ $EUID != 0 ]]; then
+ echo "$0: error: need to run as root" >&2
+ exit 1
+fi
+
# for calling outside of FAI:
# # need to redep and set that location so that we get luks keys
# export FAI=/srv/fai/config
wipe=true
fi
-## ignore disks that are mounted, eg when running from fai-cd
-declare -A disk_excludes
-while read -r l; do
- eval "$l"
- if [[ ! $PKNAME ]]; then
- PKNAME="$KNAME"
- fi
- if [[ $MOUNTPOINT ]]; then
- disk_excludes[$PKNAME]=true
- fi
-done < <(lsblk -nP -o KNAME,MOUNTPOINT,PKNAME)
+if ((`nproc` > 2)); then
+ mopts=,compress=zstd
+fi
+declare -A disk_excludes
+if ! ifclass USE_MOUNTED; then
+ ## ignore disks that are mounted, eg when running from fai-cd
+ while read -r l; do
+ eval "$l"
+ if [[ ! $PKNAME ]]; then
+ PKNAME="$KNAME"
+ fi
+ if [[ $MOUNTPOINT ]]; then
+ disk_excludes[$PKNAME]=true
+ fi
+ done < <(lsblk -nP -o KNAME,MOUNTPOINT,PKNAME)
+fi
hdds=()
ssds=()
else
boot_vol=boot_$DISTRO
fi
-if $wipe; then
- if [[ -e /mnt/$boot_vol ]]; then
- btrfs subvolume delete /mnt/$boot_vol
- fi
+if $wipe && [[ -e /mnt/$boot_vol ]]; then
+ btrfs subvolume delete /mnt/$boot_vol
+fi
+if [[ ! -e /mnt/$boot_vol ]]; then
btrfs subvolume create $boot_vol
fi
cd /
else
# note, fai creates the mountpoints listed here
cat > /tmp/fai/fstab <<EOF
-$first_root_crypt / btrfs noatime,subvol=root_$DISTRO 0 0
-$first_root_crypt /mnt/root btrfs nofail,noatime,subvolid=0 0 0
+$first_root_crypt / btrfs noatime,subvol=root_$DISTRO$mopts 0 0
+$first_root_crypt /mnt/root btrfs nofail,noatime,subvolid=0$mopts 0 0
$first_boot_dev /boot btrfs nofail,noatime,subvol=$boot_vol 0 0
$first_boot_dev /mnt/boot btrfs nofail,noatime,subvolid=0 0 0
EOF