/bin/live-swapfile is in live-boot 4.0.2-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | #!/bin/sh
# File: live-swapfile - create and use a swap file
# Copyright: (C) 2009 Daniel Baumann <mail@daniel-baumann.ch>
# License: GPL-3+
set -e
# Options
_SWAP_DIRECTORY="${_SWAP_DIRECTORY:-/live/swap}"
_SWAP_FILE="${_SWAP_FILE:-swapfile.img}"
_SWAP_SIZE="${_SWAP_SIZE:-auto}"
_SWAP_FACTOR="${_SWAP_FACTOR:-2}"
_SWAP_PURGE="${_SWAP_PURGE:-true}"
_FORCE="${_FORCE:-true}"
case "${1}" in
add)
# Reading size of physical memory
_MEM_TOTAL_KB="$(awk '/^MemTotal: / { print $2 }' /proc/meminfo)"
_MEM_TOTAL_MB="$(expr ${_MEM_TOTAL_KB} / 1024)"
echo "Found ${_MEM_TOTAL_MB} MB physical memory."
# Setting size of new swapfile
if [ -z "${_SWAP_SIZE}" ] || [ "${_SWAP_SIZE}" = "auto" ]
then
_SWAP_SIZE_KB="$(expr ${_MEM_TOTAL_KB} '*' ${_SWAP_FACTOR})"
_SWAP_SIZE_MB="$(expr ${_SWAP_SIZE_KB} / 1024)"
else
_SWAP_SIZE_MB="${_SWAP_SIZE}"
fi
echo "Requesting ${_SWAP_SIZE_MB} MB swapfile."
# Reading size of old swapfile
if [ -e "${_SWAP_DIRECTORY}/${_SWAP_FILE}" ]
then
_SWAP_FILESIZE="$(ls -hl ${_SWAP_DIRECTORY}/${_SWAP_FILE} | awk '{ print $5 }')"
echo "Found ${_SWAP_FILESIZE} MB swapfile."
fi
# Creating new swap file
if [ "${_SWAP_FILESIZE}" != "${_SWAP_SIZE_MB}M" ]
then
if [ "${_FORCE}" = "true" ]
then
# Removing old swapfile
rm -f "${_SWAP_DIRECTORY}/${_SWAP_FILE}"
echo "Creating ${_SWAP_SIZE_MB} MB swapfile."
mkdir -p "${_SWAP_DIRECTORY}"
# Unfortunately, swapon does not support files
# with holes, therefore we cannot preallocate.
dd if=/dev/zero of="${_SWAP_DIRECTORY}/${_SWAP_FILE}" bs=1024k count="${_SWAP_SIZE_MB}"
else
echo "Exit."
return 1
fi
fi
echo "Enabling ${_SWAP_DIRECTORY}/${_SWAP_FILE}."
mkswap "${_SWAP_DIRECTORY}/${_SWAP_FILE}"
swapon "${_SWAP_DIRECTORY}/${_SWAP_FILE}"
;;
rm|remove)
if grep -qs "${_SWAP_DIRECTORY}/${_SWAP_FILE}" /proc/swaps
then
echo "Disabling ${_SWAP_DIRECTORY}/${_SWAP_FILE}."
swapoff "${_SWAP_DIRECTORY}/${_SWAP_FILE}"
fi
if [ "${_SWAP_PURGE}" = "true" ]
then
echo "Removing ${_SWAP_DIRECTORY}/${_SWAP_FILE}."
rm -f "${_SWAP_DIRECTORY}/${_SWAP_FILE}"
__DIRECTORY="${_SWAP_DIRECTORY}"
while [ "${__DIRECTORY}" != "/" ]
do
rmdir --ignore-fail-on-non-empty "${__DIRECTORY}"
__DIRECTORY="$(dirname ${__DIRECTORY})"
done
fi
;;
*)
echo "Usage: ${0} {add|remove}"
exit 1
;;
esac
|