From 0730ac61e8e674c5751ff8fa3857184326a40460 Mon Sep 17 00:00:00 2001 From: Richard Yao Date: Sun, 15 Jul 2012 08:47:00 -0400 Subject: [PATCH] Import encswap init script from FreeBSD The FreeBSD encswap init script has been adapted to function in OpenRC. It should function identically to its FreeBSD counterpart. --- init.d/Makefile | 4 ++-- init.d/encswap.in | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 init.d/encswap.in diff --git a/init.d/Makefile b/init.d/Makefile index a34ee90a..d192749e 100644 --- a/init.d/Makefile +++ b/init.d/Makefile @@ -22,8 +22,8 @@ NET_LO-FreeBSD= net.lo0 SRCS-FreeBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \ rpcbind.in savecore.in syslogd.in # These are FreeBSD specific -SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in ipfw.in mixer.in nscd.in \ - powerd.in syscons.in +SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \ + mixer.in nscd.in powerd.in syscons.in NET_LO-Linux= net.lo SRCS-Linux= devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \ diff --git a/init.d/encswap.in b/init.d/encswap.in new file mode 100644 index 00000000..a03fe581 --- /dev/null +++ b/init.d/encswap.in @@ -0,0 +1,46 @@ +#!@PREFIX@/sbin/runscript +# Copyright 1992-2012 FreeBSD Project +# Released under the 2-clause BSD license +# $Header: $ + +depend() { + before swap +} + +start() { + while read device mountpoint type options rest ; do + case ":${device}:${type}:${options}" in + :#*) + continue + ;; + *.bde:swap:sw) + passphrase=`dd if=/dev/random count=1 2>/dev/null | md5 -q` + device="${device%.bde}" + gbde init "${device}" -P "${passphrase}" || return 1 + gbde attach "${device}" -p "${passphrase}" || return 1 + ;; + *.eli:swap:sw) + device="${device%.eli}" + geli onetime ${geli_swap_flags} "${device}" || return 1 + ;; + esac + done < /etc/fstab +} + +stop() { + while read device mountpoint type options rest ; do + case ":${device}:${type}:${options}" in + :#*) + continue + ;; + *.bde:swap:sw) + device="${device%.bde}" + gbde detach "${device}" + ;; + *.eli:swap:sw) + # Nothing here, because geli swap devices should be + # created with the auto-detach-on-last-close option. + ;; + esac + done < /etc/fstab +}