[Pkg-sysvinit-devel] Bug#388525: initscripts: support disabling of swap via bootoption noswap

Michael Prokop mika at grml.org
Wed Sep 20 22:43:01 UTC 2006


Package: initscripts
Version: 2.86.ds1-20
Severity: wishlist
Tags: patch


As discussed on #pkg-sysvinit (with pere and mbiebl) it would be
great to be able to control use of swap-partitions before the system
boots up.

Adding support for a bootoption "noswap" would provide the option to
disable the use of swap-partitions/-files before booting the system
at all or manually editing /etc/fstab.

Use cases for disabling swap before system startup are for example
corrupt swap-partitions/files, the use of external usb/firewire
devices or even (under certain circumstances of course) forensic
investigations.

There are two init scripts inside the initscripts package which have
to be adjusted: /etc/init.d/checkroot.sh and /etc/init.d/mountall.sh
I've created (tested) patches against the two files which implement
the requested feature.

If you do need any further information or testers please feel free to
contact me.

regards,
-mika-
-------------- next part --------------
--- /etc/init.d/mountall.sh.orig	2006-09-21 00:10:45.000000000 +0200
+++ /etc/init.d/mountall.sh	2006-09-21 00:11:06.000000000 +0200
@@ -17,6 +17,11 @@
 . /lib/lsb/init-functions
 . /lib/init/mount-functions.sh
 
+# check for bootoption 'noswap' and do not activate swap partitions/files then
+if [ -r /proc/cmdline ] ; then
+   grep -q ' noswap' /proc/cmdline && NOSWAP=yes || NOSWAP=no
+fi
+
 do_start() {
 	#
 	# Mount local file systems in /etc/fstab.
@@ -76,15 +81,20 @@
 	#
 	# Ignore 255 status due to swap already being enabled
 	#
-	if [ "$VERBOSE" = no ]
+	if [ "$NOSWAP" = yes ]
 	then
-		log_action_begin_msg "Activating swapfile swap"
-		swapon -a -e 2>/dev/null || :  # Stifle "Device or resource busy"
-		log_action_end_msg 0
+		[ "$VERBOSE" = no ] || log_warning_msg "Not activating swap as requested via bootoption noswap."
 	else
-		log_daemon_msg "Will now activate swapfile swap"
-		swapon -a -e -v
-		log_action_end_msg $?
+		if [ "$VERBOSE" = no ]
+		then
+			log_action_begin_msg "Activating swapfile swap"
+			swapon -a -e 2>/dev/null || :  # Stifle "Device or resource busy"
+			log_action_end_msg 0
+		else
+			log_daemon_msg "Will now activate swapfile swap"
+			swapon -a -e -v
+			log_action_end_msg $?
+		fi
 	fi
 }
 
-------------- next part --------------
--- /etc/init.d/checkroot.sh.orig	2006-09-20 23:34:26.000000000 +0200
+++ /etc/init.d/checkroot.sh	2006-09-20 23:35:27.000000000 +0200
@@ -19,6 +19,11 @@
 . /lib/lsb/init-functions
 . /lib/init/mount-functions.sh
 
+# check for bootoption 'noswap' and do not activate swap partitions/files then
+if [ -r /proc/cmdline ] ; then
+   grep -q ' noswap' /proc/cmdline && NOSWAP=yes || NOSWAP=no
+fi
+
 do_start () {
 	#
 	# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to
@@ -102,14 +107,20 @@
 	ENABLE_SWAP=no
 	case "$KERNEL" in
 	  Linux)
-		if [ "$swap_on_lv" = yes ]
-		then
-			[ "$VERBOSE" = no ] || log_warning_msg "Not activating swap on logical volume."
-		elif [ "$swap_on_file" = yes ]
+	  	if [ "$NOSWAP" = yes ]
 		then
-			[ "$VERBOSE" = no ] || log_warning_msg "Not activating swap on swapfile."
+			[ "$VERBOSE" = no ] || log_warning_msg "Not activating swap as requested via bootoption noswap."
+			ENABLE_SWAP=no
 		else
-			ENABLE_SWAP=yes
+			if [ "$swap_on_lv" = yes ]
+			then
+				[ "$VERBOSE" = no ] || log_warning_msg "Not activating swap on logical volume."
+			elif [ "$swap_on_file" = yes ]
+			then
+				[ "$VERBOSE" = no ] || log_warning_msg "Not activating swap on swapfile."
+			else
+				ENABLE_SWAP=yes
+			fi
 		fi
 		;;
 	  *)


More information about the Pkg-sysvinit-devel mailing list