From 5887a55c5d329fba01c167a5dbd4aa3b4e12d253 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Mon, 18 Jan 2021 20:55:16 -0500 Subject: loads linux kernel, panics unpacking initrd --- src/partvi | 56 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-) (limited to 'src/partvi') diff --git a/src/partvi b/src/partvi index aa0d36b..dca9722 100755 --- a/src/partvi +++ b/src/partvi @@ -2,6 +2,41 @@ shopt -s nullglob PATH=/sbin:$PATH +: ${GRUB_CONFIG:=../conf/grub.cfg} +samizdat_linux_dir=/ + +if [ ! "$GPG_INPUT_DIR" ] +then + for d in $GPG_INPUT_DIR /root/.gnupg /cdrom/gnupghome + do + $sudo [ -d "$d" ] || continue + GPG_INPUT_DIR=$d + break + done +fi + + +add_initrd() +{ + initrd_suffix=.samizdat + $sudo mkdir -p "$mnt"/linux + $sudo rsync -aL --info=STATS "${1}vmlinuz${2}" "$mnt"/linux/vmlinuz + $sudo rsync -aL --info=STATS "${1}initrd.img${2}${2:+$initrd_suffix}" "$mnt"/linux/initrd.img +} + +add_grub_cfg() +{ + $sudo mkdir -p "$mnt"/grub + $sudo cp -aL "$GRUB_CONFIG" "$mnt"/grub +} + +install_boot_dir() +{ + local mnt="$1" + add_grub_cfg + add_initrd "$samizdat_linux_dir"/ "${version_suffix}" +} + msg() { printf '%s: %s: %s\n' "$0" "$1" "$2" >&2; } die() { msg Error "${*:-Exiting on fatal error.}"; exit 1; } warn() { msg Warning "${*:-Something is wrong.}"; } @@ -97,8 +132,8 @@ build_partition_image() esac case "$type" in + bios-grub) ;; efi-system-partition) mkfs.fat -F 32 -I "$tmp" || die "mkfs.vfat failed" ;; - bios-grub) ;; # mkfs.fat -F 32 -I "$tmp" || die "mkfs.vfat failed" ;; boot|samizdat-keys) mkfs.btrfs -q "$tmp" || die "mkfs.btrfs failed" ;; dm-verity-data) partuuid=${root_hash:0:32} @@ -296,20 +331,23 @@ do require_var type case "$type" in dm-verity-hashes|partition-table|bios-grub) ;; - efi-system-partition|boot) + efi-system-partition|boot|samizdat-keys) mkdir -p "$mnt" loudly $sudo mount "$dev" "$mnt" - if [ "$type" = 'boot' ] - then + case "$type" in + boot) BOOT_DIR=$mnt - else + install_boot_dir "$mnt" + ;; + samizdat-keys) + $sudo rsync -a --info=STATS "$GPG_INPUT_DIR"/ "$mnt"/gnupghome/ + ;; + efi-system-partition) EFI_DIR=$mnt - fi + ;; + esac ;; - *) mkdir -p "$mnt" - loudly $sudo mount "$dev" "$mnt" - ;; *) notice "Not mounting $name" ;; esac done -- cgit v1.2.3