Add a script to automatically attach gbde devices found in fstab
(or rc.conf) at boot time, and detach them when shutting down. Not added to the Makefile to give the rcng gurus an opportunity to improve it.
This commit is contained in:
parent
51710a4597
commit
41598123b9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=116456
92
etc/rc.d/gbde
Normal file
92
etc/rc.d/gbde
Normal file
@ -0,0 +1,92 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This file, originally written by Garrett A. Wollman, is in the public
|
||||
# domain.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# PROVIDE: disks
|
||||
# KEYWORD: FreeBSD
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="gbde"
|
||||
start_precmd="find_gbde_devices start"
|
||||
stop_precmd="find_gbde_devices stop"
|
||||
start_cmd="gbde_start"
|
||||
stop_cmd="gbde_stop"
|
||||
|
||||
find_gbde_devices()
|
||||
{
|
||||
case "${gbde_devices-auto}" in
|
||||
[Aa][Uu][Tt][Oo])
|
||||
gbde_devices="";;
|
||||
*)
|
||||
return 0;;
|
||||
esac
|
||||
|
||||
case "$1" in
|
||||
start) fstab="/etc/fstab";;
|
||||
stop) fstab=$(mktemp /tmp/mtab.XXXXXX)
|
||||
mount -p >${fstab}
|
||||
esac
|
||||
|
||||
#
|
||||
# We can't use "mount -p | while ..." because when a shell loop
|
||||
# is the target of a pipe it executes in a subshell, and so can't
|
||||
# modify variables in the script.
|
||||
#
|
||||
while read device mountpt type options dump pass; do
|
||||
case "$device" in
|
||||
*.bde)
|
||||
# Ignore swap devices
|
||||
case "$type" in
|
||||
swap)
|
||||
continue;;
|
||||
esac
|
||||
|
||||
case "$options" in
|
||||
*noauto*)
|
||||
if checkyesno gbde_autoattach_all; then
|
||||
gbde_devices="${gbde_devices} ${device}"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
gbde_devices="${gbde_devices} ${device}"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
done <${fstab}
|
||||
|
||||
case "$1" in
|
||||
stop) rm -f ${fstab};;
|
||||
esac
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
gbde_start()
|
||||
{
|
||||
for device in $gbde_devices; do
|
||||
parentdev=${device%.bde}
|
||||
parent=${parentdev#/dev/}
|
||||
eval "lock=\${gbde_lock_${parent}-\"/etc/${parent}.lock\"}"
|
||||
if [ -e $lock ]; then
|
||||
echo "Configuring Disk Encryption for ${device}."
|
||||
gbde attach ${parentdev} -l ${lock}
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
gbde_stop()
|
||||
{
|
||||
for device in $gbde_devices; do
|
||||
umount ${device}
|
||||
gbde detach ${device%.bde}
|
||||
done
|
||||
}
|
||||
|
||||
load_rc_config $name
|
||||
run_rc_command "$1"
|
Loading…
Reference in New Issue
Block a user