#!/bin/sh -e Usage() { >&2 echo "Usage: $0 hostname [vgname]" exit 1 } die() { >&2 echo "died: $*" exit 1 } msg() { >&2 printf '\e[34;1m%s\e[0m\n' "$*" } lv_exists() { true && lvs --noheadings --options lv_name "$1" case $? in 0) return 0 ;; 5) return 1 ;; *) die "Error while determining, if lv «$1» exists" ;; esac } alias blkuuid="blkid -ovalue -sUUID" blkfstype="blkid -ovalue -sTYPE" [ X = X"$1" ] && Usage [ X-h = X"$1" ] && Usage [ X--help = X"$1" ] && Usage hostname="$1" #vgname="${2:-${hostname}sd}" disc="/dev/mmcblk1" pvpath="${disc}p2" echo "Hostname: «$hostname»" #echo "VG-name: «$vgname»" echo msg "Install needed tools..." apt update apt install -y lvm2 xfsprogs msg "Set Hostname «$hostname»..." oldhostname=`cat /etc/hostname` sed -i -e "s/$oldhostname/$hostname/g" /etc/hosts echo "$hostname" > /etc/hostname vgname="`pvs --noheadings --options vg_name "$pvpath" | sed -e 's/^ *//'`" # renaming does not work, because blockdevices will not be created. # vgknodes, vgscan --mknodes tested. #if [ "X$oldvgname" = "X$vgname" ] #then # msg "VG already named «$vgname»." #else # msg "Rename VG in «$vgname»..." # vgrename "$oldvgname" "$vgname" #fi msg "Expand PV «$pvpath»..." parted -ms "$disc" -- resizepart 2 -4MB print pvresize "$pvpath" msg "Expand root-LV..." lvextend -rL4G "$vgname/root" if lv_exists "$vgname/swap" then msg "LV «swap» already exists." else msg "Prepare swap-LV..." lvcreate -nswap -L2G "$vgname" mkswap "/dev/$vgname/swap" echo "UUID=`blkuuid /dev/$vgname/swap` swap swap sw 0 0" >>/etc/fstab fi if lv_exists "$vgname/home" then msg "LV «home» already exists" else msg "Prepare home-LV..." lvcreate -nhome -L4G "$vgname" mkfs.xfs "/dev/$vgname/home" echo "UUID=`blkuuid /dev/$vgname/home` /home xfs defaults 0 0" >>/etc/fstab fi msg "Install Updates..." apt dist-upgrade -y msg "ok"