Initial commit
This commit is contained in:
54
mount_cryptroot
Normal file
54
mount_cryptroot
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This script generates two scripts in the initramfs output,
|
||||
# /root/mount_cryptroot.sh and /root/.profile
|
||||
|
||||
|
||||
ALLOW_SHELL=0
|
||||
# Set this to 1 before running update-initramfs if you want
|
||||
# to allow authorized users to type Ctrl-C to drop to a
|
||||
# root shell (useful for debugging, potential for abuse.)
|
||||
#
|
||||
# (Note that even with ALLOW_SHELL=0 it may still be possible
|
||||
# to achieve a root shell.)
|
||||
#
|
||||
|
||||
if [ -z ${DESTDIR} ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
SCRIPT="${DESTDIR}/root/mount_cryptroot.sh"
|
||||
cat > "${SCRIPT}" << 'EOF'
|
||||
#!/bin/sh
|
||||
CMD=
|
||||
while [ -z "$CMD" -o -z "`pidof askpass plymouth`" ]; do
|
||||
CMD=`ps -o args | grep cryptsetup | grep -i open | grep -v grep`
|
||||
sleep 0.1
|
||||
done
|
||||
while [ -n "`pidof askpass plymouth`" ]; do
|
||||
$CMD && kill -9 `pidof askpass plymouth` && echo "Success"
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x "${SCRIPT}"
|
||||
|
||||
# Run mount_cryptroot by default and close the login session afterwards
|
||||
# If ALLOW_SHELL is set to 1, you can press Ctrl-C to get to an interactive prompt
|
||||
cat > "${DESTDIR}/root/.profile" << EOF
|
||||
ctrl_c_exit() {
|
||||
exit 1
|
||||
}
|
||||
ctrl_c_shell() {
|
||||
# Ctrl-C during .profile appears to mangle terminal settings
|
||||
reset
|
||||
}
|
||||
if [ "$ALLOW_SHELL" == "1" ]; then
|
||||
echo "Unlocking rootfs... Type Ctrl-C for a shell."
|
||||
trap ctrl_c_shell INT
|
||||
else
|
||||
echo "Unlocking rootfs..."
|
||||
trap ctrl_c_exit INT
|
||||
fi
|
||||
/root/mount_cryptroot.sh && exit 1 || echo "Run ./mount_cryptroot.sh to try unlocking again"
|
||||
trap INT
|
||||
EOF
|
||||
Reference in New Issue
Block a user