25 lines
657 B
Bash
Executable File
25 lines
657 B
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
swapfile="/mnt/data/swapfile"
|
|
# Swap space in 4k blocks
|
|
swapsize="$(awk '/MemTotal/{ print int($2 * 0.33 / 4) }' /proc/meminfo)"
|
|
|
|
|
|
if [ ! -s "${swapfile}" ] || [ "$(stat "${swapfile}" -c '%s')" -lt $((swapsize * 4096)) ]; then
|
|
# Check free space (in 4k blocks)
|
|
if [ "$(stat -f /mnt/data -c '%f')" -lt "${swapsize}" ]; then
|
|
echo "[WARNING] Not enough space to allocate swapfile"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[INFO] Creating swapfile of size $((swapsize *4))k"
|
|
umask 0077
|
|
dd if=/dev/zero of="${swapfile}" bs=4k count="${swapsize}"
|
|
fi
|
|
|
|
if ! swaplabel "${swapfile}" > /dev/null 2>&1; then
|
|
/usr/lib/systemd/systemd-makefs swap "${swapfile}"
|
|
fi
|
|
|