0a0b0a1f30
Upstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1663651 Steps to reproduce: - Full disk encryption, - Luks key is encrypted with gpg - luks key is embedded in initramfs - cmdline is: rd.luks.key=/etc/luks/key.gpg:/ - add_dracutmodules+=" dash " - omit_dracutmodues+=" bash " - build dracut Expectation: - the system should boot with new initramfs Actual: - The system failed to pick the key in initramfs - replace dash by bash and system can pick up the correct key Root Cause: There's some bashism inside runtime script, which uses == instead of = to compare. While we're at it, also fix template xlint
89 lines
3.3 KiB
Diff
89 lines
3.3 KiB
Diff
From 033921aa8346516d92ffe74fc1244089b9d61454 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
|
|
<congdanhqx@gmail.com>
|
|
Date: Sun, 6 Jan 2019 11:48:02 +0700
|
|
Subject: [PATCH] remove bashism in various boot scripts
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
When using dash as initramfs shell, the boot process is broken.
|
|
|
|
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1663651
|
|
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
|
|
---
|
|
modules.d/90crypt/crypt-lib.sh | 2 +-
|
|
modules.d/90crypt/parse-keydev.sh | 2 +-
|
|
modules.d/91crypt-gpg/crypt-gpg-lib.sh | 2 +-
|
|
modules.d/95dcssblk/parse-dcssblk.sh | 2 +-
|
|
modules.d/98syslog/rsyslogd-start.sh | 2 +-
|
|
5 files changed, 5 insertions(+), 5 deletions(-)
|
|
|
|
diff --git modules.d/90crypt/crypt-lib.sh modules.d/90crypt/crypt-lib.sh
|
|
index bbf485e0..688ea251 100755
|
|
--- modules.d/90crypt/crypt-lib.sh
|
|
+++ modules.d/90crypt/crypt-lib.sh
|
|
@@ -191,7 +191,7 @@ readkey() {
|
|
local device="$3"
|
|
|
|
# No mounting needed if the keyfile resides inside the initrd
|
|
- if [ "/" == "$keydev" ]; then
|
|
+ if [ "/" = "$keydev" ]; then
|
|
local mntp=/
|
|
else
|
|
# This creates a unique single mountpoint for *, or several for explicitly
|
|
diff --git modules.d/90crypt/parse-keydev.sh modules.d/90crypt/parse-keydev.sh
|
|
index a45b2fb5..04813414 100755
|
|
--- modules.d/90crypt/parse-keydev.sh
|
|
+++ modules.d/90crypt/parse-keydev.sh
|
|
@@ -18,7 +18,7 @@ if getargbool 1 rd.luks -n rd_NO_LUKS && \
|
|
fi
|
|
|
|
# A keydev of '/' is treated as the initrd itself
|
|
- if [ "/" == "$keydev" ]; then
|
|
+ if [ "/" = "$keydev" ]; then
|
|
[ -z "$luksdev" ] && luksdev='*'
|
|
echo "$luksdev:$keydev:$keypath" >> /tmp/luks.keys
|
|
continue
|
|
diff --git modules.d/91crypt-gpg/crypt-gpg-lib.sh modules.d/91crypt-gpg/crypt-gpg-lib.sh
|
|
index b85ed2b8..c051b430 100755
|
|
--- modules.d/91crypt-gpg/crypt-gpg-lib.sh
|
|
+++ modules.d/91crypt-gpg/crypt-gpg-lib.sh
|
|
@@ -53,7 +53,7 @@ gpg_decrypt() {
|
|
--tries 3 --tty-echo-off
|
|
|
|
# Clean up the smartcard gpg-agent
|
|
- if [ "${useSmartcard}" == "1" ]; then
|
|
+ if [ "${useSmartcard}" = "1" ]; then
|
|
GNUPGHOME="$gpghome" gpg-connect-agent 1>/dev/null killagent /bye
|
|
fi
|
|
|
|
diff --git modules.d/95dcssblk/parse-dcssblk.sh modules.d/95dcssblk/parse-dcssblk.sh
|
|
index 8f174408..27ac1d8d 100644
|
|
--- modules.d/95dcssblk/parse-dcssblk.sh
|
|
+++ modules.d/95dcssblk/parse-dcssblk.sh
|
|
@@ -2,7 +2,7 @@
|
|
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
|
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
|
dcssblk_arg=$(getarg rd.dcssblk=)
|
|
-if [ $? == 0 ];then
|
|
+if [ $? = 0 ];then
|
|
info "Loading dcssblk segments=$dcssblk_arg"
|
|
modprobe dcssblk segments=$dcssblk_arg
|
|
fi
|
|
diff --git modules.d/98syslog/rsyslogd-start.sh modules.d/98syslog/rsyslogd-start.sh
|
|
index c64f2121..86ad50ea 100755
|
|
--- modules.d/98syslog/rsyslogd-start.sh
|
|
+++ modules.d/98syslog/rsyslogd-start.sh
|
|
@@ -38,7 +38,7 @@ rsyslog_config() {
|
|
[ -f /tmp/syslog.conf ] && read conf < /tmp/syslog.conf
|
|
[ -z "$conf" ] && conf="/etc/rsyslog.conf" && echo "$conf" > /tmp/syslog.conf
|
|
|
|
-if [ $type == "rsyslogd" ]; then
|
|
+if [ $type = "rsyslogd" ]; then
|
|
template=/etc/templates/rsyslog.conf
|
|
if [ -n "$server" ]; then
|
|
rsyslog_config "$server" "$template" "$filters" > $conf
|
|
--
|
|
2.20.1
|
|
|