This file is indexed.

/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