[SCM] Debian Live initramfs hook branch, master, updated. 1.157.1-1-8-g3422eba

Daniel Baumann daniel at debian.org
Thu Apr 9 14:16:23 UTC 2009


The following commit has been merged in the master branch:
commit 3422eba9f407e45db5795a758775b7db8c9dcc72
Author: Daniel Baumann <daniel at debian.org>
Date:   Thu Apr 9 16:14:20 2009 +0200

    Initial commit for having support for swapfiles.

diff --git a/Makefile b/Makefile
index 40ce7af..e01ae9b 100644
--- a/Makefile
+++ b/Makefile
@@ -29,7 +29,7 @@ install: test build
 
 	# 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
@@ -76,7 +76,7 @@ uninstall:
 	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*
diff --git a/bin/live-swapfile b/bin/live-swapfile
new file mode 100755
index 0000000..7d6d885
--- /dev/null
+++ b/bin/live-swapfile
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# File: live-swapfile - create and use a swap file
+# Copyright: (C) 2009 Daniel Baumann <daniel at 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}"
+
+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
+			# 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}"
+		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

-- 
Debian Live initramfs hook



More information about the debian-live-changes mailing list