From 10e5efaa69c9f0c254db13a84d3312ebaebde5dc Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Thu, 17 Oct 2019 00:19:12 -0400 Subject: fixup! avoid initrd race condition --- initramfs-tools/scripts/samizdat | 52 +--------------------------------------- src/initrd/common.sh | 15 ++++++++++++ 2 files changed, 16 insertions(+), 51 deletions(-) diff --git a/initramfs-tools/scripts/samizdat b/initramfs-tools/scripts/samizdat index 4658278..85fbc7b 100644 --- a/initramfs-tools/scripts/samizdat +++ b/initramfs-tools/scripts/samizdat @@ -1,3 +1,4 @@ +#!/bin/sh klogd -c1 # TODO: This should be even earlier. Can it go on the kernel command line? . common.sh @@ -64,21 +65,6 @@ wait_for_gnupghome_tar() (. common.sh && . btrfs-create.sh && init_gpg) } -samizdat_install_udev_rules() -{ - local target=/etc/udev/rules.d/z00_blockdev_mountroot.rules - [ -e "$target" ] && return - mkdir -p /etc/udev/rules.d - echo 'ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/grok-block $env{DEVNAME}"' \ - > "$target" - - # 'udevadm trigger --action=add' does not work here; need to restard udevd - # first. not sure why - samizdat_restart_udev - - udevadm trigger -s block --action add -} - samizdat_restart_udev() { local LOG_DIR=/run/initramfs/samizdat/log @@ -88,39 +74,3 @@ samizdat_restart_udev() udevadm hwdb --update # rule is not executed by 'udevadm trigger' otherwise. not sure why } - -# TODO: do not duplicate these functions from common.sh - -export MENUFIFO=/menu.fifo - -addmenu() -{ - cat <>$MENUFIFO # mind the tabs -setItem "$1" "dummy" "$2" "$3" -END -} - -menutitle() -{ - printf 'setTitle "%s"\n' "$1" >>$MENUFIFO - printf 'setWelcomeText "%s"\n' "$2" >>$MENUFIFO -} - -bootmenu() -{ - OpenVT -f -c 7 -- dynmenu "$MENUFIFO" && - chvt 7 && - menutitle 'Samizdat\n\nAs the Internet develops there are\ntransitions in the management arrangements.\nThe time has come to take\na small step in one of those transitions.' 'Choose an installation target.' -# menutitle 'Samizdat\nfreedom from surveillance\nno trusted authorities' 'Choose an installation target.' - addmenu "ramdisk" "[ Boot to RAM without installing anything ]" "menu-select boot-ram" -} - -bootwait() -{ - mkdir -p /bootwait - local i=$#; while [ $i -gt 0 ]; do - i=$((i-1)) - local f="$1"; shift; set -- "$@" "/bootwait/$f" - done - wait_for_files "$@" -} diff --git a/src/initrd/common.sh b/src/initrd/common.sh index c38fb77..17c9359 100644 --- a/src/initrd/common.sh +++ b/src/initrd/common.sh @@ -36,6 +36,21 @@ force_grok_block() udevadm trigger --subsystem-match=block --action=add } +samizdat_install_udev_rules() +{ + local target=/etc/udev/rules.d/z00_blockdev_mountroot.rules + [ -e "$target" ] && return + mkdir -p /etc/udev/rules.d + echo 'ACTION=="add", SUBSYSTEM=="block", RUN+="/bin/grok-block $env{DEVNAME}"' \ + > "$target" + + # 'udevadm trigger --action=add' does not work here; need to restard udevd + # first. not sure why + samizdat_restart_udev + + udevadm trigger -s block --action add +} + bootmenu() { local do_trigger="$1" no_panic="$2" -- cgit v1.2.3