2019-08-21 16:44:16 +03:00

93 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
# see also http://www.altlinux.org/Autoinstall
message() { echo "vm-profile: $*" >>/tmp/vm-profile.log; }
mem="$(sed -n '/^MemTotal/s/[^0-9]//gp' /proc/meminfo)" # in kB
max_disk="$(sort -rn /sys/block/[hs]d*/size | head -1)" # in 512-byte sectors
# feel free to suggest better defaults
if [ "$mem" -le 262144 ]; then
swap="$[ 2*$mem ]"
elif [ "$mem" -le 524288 ]; then
swap="$mem"
else
swap=1048576
fi
# don't do RAID in a VM, reduce swap to a minimum
if grep -qE '(101300b8)|(80eebeef)|(14ad0405)' /proc/bus/pci/devices; then
methods='plain'
swap=131072
else
methods='raid plain'
fi
if [ "$max_disk" -le 20971520 ]; then
base=1048576 # less than 10G HDD, choose 1G partitions
elif [ "$max_disk" -le 52428800 ]; then
base=2097152 # 2G up to 25G HDD
elif [ "$max_disk" -le 209715200 ]; then
base=10485760 # 10G up to 100G HDD
else
base=20971520 # 20G otherwise
fi
message "mem=$mem k"
message "swap=$swap k"
message "max_disk=$max_disk"
message "base=$base k"
# EVMS deals with sectors
swap="$[ 2*$swap ]"
base="$[ 2*$base ]"
# The Plan:
# - provide a few more or less equivalent server partitioning profiles
# - give larger swap to build servers (RAM sized so tmpfs can get swapped out)
cat > /var/cache/alterator/vm-profile.scm << _EOF_
((rootonly
(title . "Minimal server (rootfs only /)")
(action . trivial)
(actiondata
("swap" (size . $swap) (fsim . "SWAPFS") (methods $methods))
("/" (size $base . #t) (fsim . "Ext2/3") (methods $methods))))
(kvm
(title . "KVM Server (large /var/lib/libvirt/images)")
(action . trivial)
(actiondata
("swap" (size . $[2*$swap]) (fsim . "SWAPFS") (methods $methods))
("/" (size $base . $[2*$base]) (fsim . "Ext2/3") (methods $methods))
("/var/lib/libvirt/images" (size $base . #t) (fsim . "Ext2/3") (methods $methods))))
(docker
(title . "Docker Server (large /var/lib/docker)")
(action . trivial)
(actiondata
("swap" (size . $swap) (fsim . "SWAPFS") (methods $methods))
("/" (size $base . $[2*$base]) (fsim . "Ext2/3") (methods $methods))
("/var/lib/docker" (size $base . #t) (fsim . "Ext2/3") (methods $methods))))
(lxd
(title . "LXD Server (large /var/lib/lxd)")
(action . trivial)
(actiondata
("swap" (size . $swap) (fsim . "SWAPFS") (methods $methods))
("/" (size $base . $[2*$base]) (fsim . "Ext2/3") (methods $methods))
("/var/lib/lxd" (size $base . #t) (fsim . "Ext2/3") (methods $methods))))
(srv
(title . "Generic server (large /srv)")
(action . trivial)
(actiondata
("swap" (size . $swap) (fsim . "SWAPFS") (methods $methods))
("/" (size $base . $[2*$base]) (fsim . "Ext2/3") (methods $methods))
("/var" (size $base . $[2*$base]) (fsim . "Ext2/3") (methods $methods))
("/srv" (size $base . #t) (fsim . "Ext2/3") (methods $methods))))
(var
(title . "Generic server (large /var)")
(action . trivial)
(actiondata
("swap" (size . $swap) (fsim . "SWAPFS") (methods $methods))
("/" (size $base . $[2*$base]) (fsim . "Ext2/3") (methods $methods))
("/var" (size $base . #t) (fsim . "Ext2/3") (methods $methods)))))
_EOF_