#!/bin/bash function setup_drive { local drive="$1" parted -s "$drive" -- \ mklabel gpt \ unit MiB \ mkpart '"EFI system partition"' fat32 1 1024 \ set 1 esp on \ set 1 legacy_boot on \ mkpart '"root unused"' ext4 1025 2048 \ mkpart '"root unused"' ext4 2049 3072 \ mkpart '"root unused"' ext4 3073 4096 \ mkpart Encrypted ext4 4097 -1 until [ -b "$drive"1 ] || [ -b "$drive"p1 ]; do sleep 1 done } function rename_partition { local drive="$1" local partition="$2" local new_label="$3" parted -s "$drive" -- name "$partition" '"'"$new_label"'"' } function drive_list { drives="$(lsblk -nd -o NAME,TYPE \ /dev/nvme+([0-9])n+([0-9]) /dev/sd+([a-z]) | \ grep ' disk' |cut -d\ -f1)" } function partition_list { local drive="$1" partitions="$(parted -m "$drive" -- print| \ awk -F: \ '{if (NR > 2) print $1 }'|xargs echo)" } function find_unused { local drive="$1" unused="$(parted -m "$drive" -- print|awk -F: \ '{if (NR > 2 && $1 >= 2 && $6 == "root unused") { print $1 }}'|head -1)" } function find_oldest { local drive="$1" local current="$(grep -E ^serial: /etc/cloud/build.info |cut -d\ -f2)" oldest="$(parted -m "$drive" -- print|awk -F: \ -v current="root_$current" \ 'BEGIN {min="zzzzz"} {if (NR > 2 && $1 >= 2 && $1 <= 4 && $6 < min && $6 != "root unused" && $6 != current) { min=$6; part=$1 }} END {print part}')" } function find_newest { local drive="$1" newest="$(parted -m "$drive" -- print|awk -F: \ 'BEGIN {max=""} {if (NR > 2 && $1 >= 2 && $1 <= 4 && $6 > max && $6 != "root unused") { max=$6; part=$1 }} END {print part}')" } function version_from_partnum { local drive="$1" local partnum="$2" version="$(parted -m "$drive" -- print|awk -F: \ -v partnum="$partnum" \ '{if (NR > 2 && $1 == partnum && $6 != "root unused") { print $6 }}')" version="$(echo "$version"|cut -d_ -f2-)" } # vim: set ft=sh: