# Installing executables
mkdir -p $(DESTDIR)/sbin
- cp bin/live-getty bin/live-login bin/live-new-uuid bin/live-snapshot $(DESTDIR)/sbin
+ cp bin/live-getty bin/live-login bin/live-new-uuid bin/live-snapshot bin/live-swapfile $(DESTDIR)/sbin
mkdir -p $(DESTDIR)/usr/share/live-initramfs
cp bin/live-preseed bin/live-reconfigure contrib/languagelist $(DESTDIR)/usr/share/live-initramfs
rm -f $(DESTDIR)/etc/live.conf
# Uninstalling executables
- rm -f $(DESTDIR)/sbin/live-getty $(DESTDIR)/sbin/live-login $(DESTDIR)/sbin/live-snapshot
+ rm -f $(DESTDIR)/sbin/live-getty $(DESTDIR)/sbin/live-login $(DESTDIR)/sbin/live-snapshot $(DESTDIR)/sbin/live-swapfile
rm -rf $(DESTDIR)/usr/share/live-initramfs
rm -f $(DESTDIR)/usr/share/initramfs-tools/hooks/live
rm -rf $(DESTDIR)/usr/share/initramfs-tools/scripts/live*
--- /dev/null
+#!/bin/sh
+
+# File: live-swapfile - create and use a swap file
+# Copyright: (C) 2009 Daniel Baumann <daniel@debian.org>
+# 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