dracut: patch for better dash compatibility
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
This commit is contained in:
parent
74221b038d
commit
0a0b0a1f30
|
@ -0,0 +1,89 @@
|
||||||
|
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
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
# Template file for 'dracut'
|
# Template file for 'dracut'
|
||||||
pkgname=dracut
|
pkgname=dracut
|
||||||
version=048
|
version=048
|
||||||
revision=2
|
revision=3
|
||||||
build_style=configure
|
build_style=configure
|
||||||
configure_args="--prefix=/usr --sysconfdir=/etc"
|
configure_args="--prefix=/usr --sysconfdir=/etc"
|
||||||
|
conf_files="/etc/dracut.conf"
|
||||||
hostmakedepends="asciidoc pkg-config"
|
hostmakedepends="asciidoc pkg-config"
|
||||||
makedepends="libkmod-devel"
|
makedepends="libkmod-devel"
|
||||||
depends="bash coreutils cpio psmisc"
|
depends="bash coreutils cpio psmisc"
|
||||||
conf_files="/etc/dracut.conf"
|
short_desc="Low-level tool for generating an initramfs/initrd image"
|
||||||
homepage="http://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html"
|
|
||||||
short_desc="A new initramfs infrastructure"
|
|
||||||
maintainer="Juan RP <xtraeme@voidlinux.org>"
|
maintainer="Juan RP <xtraeme@voidlinux.org>"
|
||||||
license="GPL-2.0-or-later, LGPL-2.0-or-later"
|
license="GPL-2.0-or-later, LGPL-2.0-or-later"
|
||||||
|
homepage="http://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html"
|
||||||
distfiles="${KERNEL_SITE}/utils/boot/${pkgname}/${pkgname}-${version}.tar.xz"
|
distfiles="${KERNEL_SITE}/utils/boot/${pkgname}/${pkgname}-${version}.tar.xz"
|
||||||
checksum=0750d6b71b7f95d8dfa338404372bfeb0e5c30e7fe2a21ba55c6dbf3dbcf6a79
|
checksum=0750d6b71b7f95d8dfa338404372bfeb0e5c30e7fe2a21ba55c6dbf3dbcf6a79
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue