aboutsummaryrefslogtreecommitdiff
path: root/rc.boot
diff options
context:
space:
mode:
authorCem Keylan <cem@ckyln.com>2020-03-02 13:36:29 +0300
committerCem Keylan <cem@ckyln.com>2020-03-02 13:36:29 +0300
commit633608ead6cd30f416050c121ae06f3500367603 (patch)
treefe5ac63bf1fb4c8142f547ec159bd92f9067c8b0 /rc.boot
parent33a56bf63d38681ed9e00a941f4767c028a8fc63 (diff)
downloadinit-633608ead6cd30f416050c121ae06f3500367603.tar.gz
add parse_crypttab to rc.lib
Diffstat (limited to 'rc.boot')
-rwxr-xr-xrc.boot47
1 files changed, 3 insertions, 44 deletions
diff --git a/rc.boot b/rc.boot
index 89c7405..fec899f 100755
--- a/rc.boot
+++ b/rc.boot
@@ -48,50 +48,9 @@ out "Remounting rootfs as ro..."; {
mount -o remount,ro / || emergency_shell
}
-out "Activating encrypted devices (if any exist)..."; {
- [ -e /etc/crypttab ] && [ -x /bin/cryptsetup ] && {
- exec 3<&0
-
- while read -r name dev pass opts err; do
- [ "${name##\#*}" ] || continue
-
- # Break on invalid crypttab.
- [ "$err" ] && {
- printf 'error: A valid crypttab has only 4 columns.\n'
- break
- }
-
- # Turn 'UUID=*' lines into device names.
- [ "${dev##UUID*}" ] || dev=$(blkid -l -o device -t "$dev")
-
- # Parse options by turning list into a pseudo array.
- IFS=,
- set -- $opts
- IFS=$old_ifs
-
- copts="cryptsetup luksOpen"
-
- # Create an argument list (no other way to do this in sh).
- for opt; do case $opt in
- discard) copts="$copts --allow-discards" ;;
- readonly|read-only) copts="$copts -r" ;;
- tries=*) copts="$copts -T ${opt##*=}" ;;
- esac; done
-
- # If password is 'none', '-' or empty ask for it.
- case $pass in
- none|-|"") $copts "$dev" "$name" <&3 ;;
- *) $copts -d "$pass" "$dev" "$name" ;;
- esac
- done < /etc/crypttab
-
- exec 3>&-
-
- [ "$copts" ] && [ -x /bin/vgchance ] && {
- out "Activating LVM devices for dm-crypt..."
- vgchange --sysinit -a y || emergency_shell
- }
- }
+[ -e /etc/crypttab ] && [ -x /bin/cryptsetup ] && {
+ out "Activating encrypted devices..."
+ parse_crypttab
}
out "Checking filesystems..."; {