Add ability to grow root partition + filesystem

This commit is contained in:
c0de 2022-12-15 22:52:52 -06:00
parent 21076fd535
commit f8b5d82ac5
4 changed files with 41 additions and 2 deletions

View File

@ -82,6 +82,20 @@ build {
destination = "/mnt/etc/systemd/network/99-dhcp-wildcard.network" destination = "/mnt/etc/systemd/network/99-dhcp-wildcard.network"
} }
provisioner "file" {
source = "files/grow-root"
destination = "/usr/local/sbin/grow-root"
}
provisioner "shell" {
inline = ["chmod +x /usr/local/sbin/grow-root"]
}
provisioner "file" {
source = "files/grow-root.service"
destination = "/etc/systemd/system/grow-root.service"
}
provisioner "shell" { provisioner "shell" {
pause_before = "10s" pause_before = "10s"
scripts = [ scripts = [

16
files/grow-root Normal file
View File

@ -0,0 +1,16 @@
#!/bin/bash
dev="$(findmnt -nfvo SOURCE -- "/")"
# If it's a partition, expand that first using growpart.
if [ "$(lsblk -ndo TYPE -- "$dev")" = part ]; then
disk="$(lsblk -ndpo PKNAME -- "$dev")"
partnum="${dev##*[!0-9]}"
growpart "$disk" "$partnum" || { [ $? -ne 1 ] && exit 1; }
fi
# Inform kernel of new partition
partprobe
# Expand the filesystem.
resize2fs -- "$dev" || exit 1

9
files/grow-root.service Normal file
View File

@ -0,0 +1,9 @@
[Unit]
Description=Grows the root partition and filesystem to match disk size
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/grow-root
[Install]
WantedBy=multi-user.target

View File

@ -4,8 +4,8 @@ set -eux
pacman-key --init pacman-key --init
# Install the system # Install the system
pacstrap -K /mnt base linux linux-firmware rng-tools grub sudo \ pacstrap -K /mnt base linux linux-firmware rng-tools grub parted sudo \
openssh ufw git vim python-pip nomad nomad-driver-nspawn openssh ufw git vim cloud-utils python-pip nomad nomad-driver-nspawn
# Clear the cache # Clear the cache
arch-chroot /mnt pacman -Scc --noconfirm arch-chroot /mnt pacman -Scc --noconfirm