summaryrefslogtreecommitdiff
path: root/bin/yoda
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2020-06-01 21:47:22 +0200
committerMarc Vertes <mvertes@free.fr>2020-06-01 21:47:22 +0200
commitd5aa393bc951a7609aab3c3c22c473a9637ea983 (patch)
treee4c0d721ff8e1ed77cbda5a2a78700b6196a0241 /bin/yoda
parentb87761ba92a15794d3cf8a65cf7feddfc088cd6f (diff)
update
Diffstat (limited to 'bin/yoda')
-rwxr-xr-xbin/yoda34
1 files changed, 24 insertions, 10 deletions
diff --git a/bin/yoda b/bin/yoda
index a847d8f..4aa1667 100755
--- a/bin/yoda
+++ b/bin/yoda
@@ -35,6 +35,16 @@ skip() {
return 1
}
+# return 1 if any of the required commands is missing
+prereq() {
+ ok='ok'
+ for cmd in cryptsetup dd fdisk mkfs.fat mkfs.ext4 mount pacstrap genfstab arch-chroot
+ do
+ command -v "$cmd" >/dev/null || { ok=''; echo "$cmd not found"; }
+ done
+ test "$ok"
+}
+
# Step 0: Prepare by wiping all data and randomize (very long).
step0() {
cryptsetup open --type plain -d /dev/urandom "$dev" to_be_wiped
@@ -64,13 +74,13 @@ EOT
# Step 2: Encrypt root partition.
step2() {
rootpart="/dev/mapper/$par"
- cryptsetup -y -v luksFormat ${dev}2
- cryptsetup open ${dev}2 $par
+ cryptsetup -y -v luksFormat ${dev}${ppref}2
+ cryptsetup open ${dev}${ppref}2 $par
}
# Step 3: Format partitions.
step3() {
- mkfs.fat -F32 "${dev}1"
+ mkfs.fat -F32 "${dev}${ppref}1"
yes | mkfs.ext4 "$rootpart"
}
@@ -78,7 +88,7 @@ step3() {
step4() {
mount "$rootpart" /mnt
mkdir /mnt/boot
- mount ${dev}1 /mnt/boot
+ mount ${dev}${ppref}1 /mnt/boot
trap cleanup EXIT
}
@@ -161,8 +171,8 @@ EOT
DNSSEC=no
EOT
- packages="linux linux-firmware intel-ucode amd-ucode sudo vi wireless_tools
-wpa_supplicant openssh arch-install-scripts"
+ packages="linux linux-firmware intel-ucode amd-ucode sof-firmware \
+ dosfstools sudo vi wireless_tools wpa_supplicant openssh arch-install-scripts"
arch-chroot /mnt << EOT
locale-gen
@@ -181,6 +191,7 @@ EOT
echo "$user ALL=(ALL) ALL" > "/mnt/etc/sudoers.d/01_$user"
fi
+ mkdir -p /mnt/etc/wpa_supplicant
cat /etc/wpa_supplicant/wpa_supplicant*.conf > /mnt/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
cat > /mnt/boot/loader/loader.conf << \EOT
@@ -190,10 +201,10 @@ console-mode max
EOT
if skip 2; then
- uid=$(blkid -p -s UUID -o value "${dev}2")
+ uid=$(blkid -p -s UUID -o value "${dev}${ppref}2")
rdopt="root=/dev/disk/by-uuid/$uid"
else
- uid=$(blkid -p -s UUID -o value "${dev}2")
+ uid=$(blkid -p -s UUID -o value "${dev}${ppref}2")
rdopt="rd.luks.name=$uid=root root=/dev/mapper/root"
fi
cat > /mnt/boot/loader/entries/arch.conf << EOT
@@ -202,7 +213,7 @@ linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /amd-ucode.img
initrd /initramfs-linux.img
-option $rdopt net.ifnames=0 rw
+options $rdopt net.ifnames=0 rw
EOT
}
@@ -229,9 +240,12 @@ shift $((OPTIND - 1))
[ "$(id -u)" = 0 ] || die "not root"
[ "$1" ] && dev=$1 || die 'no device'
par=${dev##*/}root
-rootpart="${dev}2"
+case $dev in (*nvme*) ppref='p';; esac
+rootpart="${dev}${ppref}2"
myself=$(type -p $0)
+prereq || exit 1
+
echo -n "Device $dev will be completely erased. Continue ? Y/N "
read -r resp && [ "$resp" = 'Y' ] || exit