From 6535dbeb4c025fe68c4c2700149dc49de0ba553c Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Tue, 18 Jun 2019 22:30:10 -0400 Subject: avoid hard-coded IP address for nbd server --- initramfs-tools/scripts/samizdat | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) (limited to 'initramfs-tools/scripts/samizdat') diff --git a/initramfs-tools/scripts/samizdat b/initramfs-tools/scripts/samizdat index 1e333f4..0abe902 100644 --- a/initramfs-tools/scripts/samizdat +++ b/initramfs-tools/scripts/samizdat @@ -1,5 +1,8 @@ klogd -c1 # TODO: This should be even earlier. Can it go on the kernel command line? +. common.sh +debug_log samizdat.init + mountroot() { openvt -c 13 sh @@ -7,15 +10,17 @@ mountroot() mkfifo "$MENUFIFO" samizdat_install_udev_rules - if [ "${nbdroot%%,*}" ]; then + if [ "$nbdroot" ]; then + configure_networking + export ROOTSERVER + (. common.sh - sh /scripts/local-top/nbd >/dev/null 2>&1; + debug_log samizdat.nbd + . /scripts/local-top/nbd bootdone nbd-script) & - fi - if ! cdrom_has_keys && keys_via_network; then bootwait nbd-script - wait_for_gnupghome_tar "$tftp_key_server" + wait_for_gnupghome_tar fi bootwait samizdat-gpg @@ -31,38 +36,17 @@ cdrom_has_keys() [ -d /cdrom/gnupghome ] } -# Sets $tftp_key_server or returns false. -keys_via_network() -{ - [ "${nbdroot%%,*}" ] || return - local arg cmdline - read cmdline < /proc/cmdline - for arg in $cmdline; do - case "$arg" in - netkeys) - tftp_key_server="${nbdroot%%/*}" - return 0 - ;; - netkeys=*) - tftp_key_server="${arg#netkeys=}" - return 0 - ;; - esac - done - return 1 -} - wait_for_gnupghome_tar() { - local tftp_server="$1" [ -e /gnupghome.tar ] && return echo -n Waiting to receive GPG keys through the network... - (while ! tftp -g -r gnupghome.tar -l /gnupghome.tar.$$ "$tftp_server" 2>/dev/null; do + (while ! tftp -g -r gnupghome.tar -l /gnupghome.tar.$$ "$ROOTSERVER" 2>/run/initramfs/samizdat/log/tftp.$$.log; do sleep 1; echo -n . done mv /gnupghome.tar.$$ /gnupghome.tar) echo ' done.' + (sleep 5; echo ) & (. common.sh && . btrfs-create.sh && init_gpg) } -- cgit v1.2.3