From e98c4babea202d692a5dac8c05efc64a44e8aedc Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Tue, 19 Apr 2016 14:39:53 -0400 Subject: cause the grok-block hooks to run --- old-school/menu-select | 112 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100755 old-school/menu-select (limited to 'old-school/menu-select') diff --git a/old-school/menu-select b/old-school/menu-select new file mode 100755 index 0000000..0cc0c67 --- /dev/null +++ b/old-school/menu-select @@ -0,0 +1,112 @@ +#!/bin/sh +# usage: +# $0 boot-ram - use memory-only overlay +# $0 boot-new [dev name] [loop file] [megabytes] - create new luks-encrypted overlay +# $0 boot-overwrite [dev name] [loop file] [megabytes] - overwrite with new luks overlay +# $0 boot-luks [dev name] [loop file] - boot existing luks-encrypted overlay +# $0 boot-gpg [key id] [gnupg homedir] [???] - boot any device signed with the key + +. lvm-create.sh +. common.sh +exec 4>&1 +debug_log + +error() +{ + local sleep=3 + + clear >&4 + echo "error -- ${*:-:(}" >&4 + + if [ $sleep -gt 0 ]; then + echo "will try again in $sleep seconds..." >&4 + sleep $sleep + fi + bootmenu do_trigger no_panic + exit +} + +badopts= +fs= +while [ $# -ge 1 ]; do + case $1 in + --fs=*) fs="${1#--fs=}"; shift; continue ;; + --*) echo "error: unknown option $1"; badopts=true; shift; continue ;; + esac + break +done +[ -z "$badopts" ] || error 'usage error' + +[ $# -ge 2 -o "$1" = 'boot-ram' ] || error 'usage error' + +remountrw() +{ + local fs="$1" dev="$2" loopfile="$3" + if [ "$fs" = hfsplus ]; then + mountpoint="/mnt/${dev##*/}" + umount "$dev" || error + fsck.hfsplus -q "$dev" || error + mount -o force "$dev" "$mountpoint" || error + else + mount -o remount,rw "$dev" || error + fi +} + +hwclock_to_system() +{ + local fs="$1" UTC=UTC + case "$fs" in ntfs|vfat) UTC=LOCAL ;; esac + printf '0.0 0 0.0\n0\n%s' $UTC > /etc/adjtime + hwclock --hctosys +} + +case "$1" in + boot-ram) + modprobe squashfs || true + find_squashfs_root | mountsquashes || error + mkdir /overlay || error + mount -t tmpfs tmpfs /overlay || error + mkdir /overlay/gpg || error + ln -s /overlay/gpg /gpg + + init_gpg || error + bootdone squashfs-root rw-overlay + ;; + boot-overwrite|boot-new|boot-luks) + dev="$2" + loopfile="$3" + megs="$4" + + [ "$1" != 'boot-new' -o ! -e "$loopfile" ] || error + + remountrw "$fs" "$dev" "$loopfile" || error + + hwclock_to_system "$fs" + + if [ "$1" = 'boot-overwrite' ]; then + rm "$loopfile" "$loopfile"k + fi + + init_gpg || error + + if [ "$1" = 'boot-luks' ]; then + open_samizdat "$loopfile" "$loopfile"k || error + exit + fi + + start_meter "Allocating ${megs}MB in '$loopfile' on $dev..." + + if init_samizdat "$loopfile" "$megs" "$loopfile"k; then + stop_meter done. + else + stop_meter error! + rm "$loopfile" "$loopfile"k + error + fi + ;; + *) + error "Unimplemented boot command: $*" + ;; +esac + +# vim:ts=2 sw=2 et -- cgit v1.2.3