[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