#!/bin/bash -x
+# Copyright (C) 2016 Ian Kelling
-# see t.org for how to call
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
-set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
-cd $(dirname $(readlink -f "$BASH_SOURCE"))
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-export hostname="$1"
+x="$(readlink -f "$BASH_SOURCE")"; source "${x%/*}/bash-trace"
+cd ${x%/*}
+
+export HOSTNAME="$1"
mirror=$2
-TPPASS="$(cat /root/shadow/traci-simple)"
(( $# >= 1 )) || { echo "$0: error: need 1 or 2 arguments"; exit 1; }
-mv /root/devbyid /usr/bin
-
rm -f /etc/pacman.d/mirrorlist
# https://wiki.archlinux.org/index.php/Mirrors#Sorting_mirrors
. /a/bin/fai/fai-wrapper
export LUKS_DIR=/root/luks
-export HOSTNAME=$hostname
export DISTRO=arch
partition_script=/a/bin/fai/fai/config/hooks/partition.DEFAULT
chmod +x $partition_script
# to be idempotent if we fail after partitioning
already_partitioned=true
mount_out=$(mount)
-for dir in /mnt{,/home,/boot,/q}; do
+for dir in /mnt{,/home,/boot,/a}; do
regex=" on $dir "
if [[ ! $mount_out =~ $regex ]]; then
already_partitioned=false
export swapn=2
export BOOT_DEVICE
export ROOT_PARTITIONS
-sed -ri "/^crypt_dev_\S+$rootn /d" /tmp/fai/crypttab
+sed -ri --follow-symlinks "/^crypt_dev_\S+$rootn /d" /tmp/fai/crypttab
if ! $already_partitioned; then
mount -o subvol=root_$DISTRO $ROOT_PARTITION /mnt
- mkdir -p /mnt/{q,home,boot}
- mount -o subvol=q $ROOT_PARTITION /mnt/q
+ mkdir -p /mnt/boot
mount -o subvol=boot_$DISTRO $BOOT_PARTITION /mnt/boot
fi
# https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Keyfiles
-cp /root/luks/host-$hostname /mnt/crypto_keyfile.bin
+cp /root/luks/host-$HOSTNAME /mnt/crypto_keyfile.bin
chmod 600 /mnt/crypto_keyfile.bin
pacstrap /mnt base
cp /tmp/fai/{fstab,crypttab} /mnt/etc
cp /a/bin/fai/encrypt /mnt/usr/lib/initcpio/hooks
-# not needed anymore
-#cp /usr/bin/devbyid /mnt/root
cp -r /root/.ssh /mnt/root
mkdir -p $mountpoint
mount -o bind $source $mountpoint
}
-bindmount /a /mnt/a
bindmount /root/shadow /mnt/q/root/shadow
+bindmount /a /mnt/a
mkdir -p /mnt/etc/ssh
cp /etc/ssh/ssh_host_* /mnt/etc/ssh
ln -s /run/systemd/resolve/resolv.conf /mnt/etc/resolv.conf
# not necsesary, but makes reboot go fast.
-#umount -R /mnt; sleep 1
+umount -R /mnt; sleep 1
# causes 255 exit code, so doing this from the caller script.
# reboot now