From 689454c727c2730b6aa89ee4c4b7676900e07f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 12 Apr 2019 16:26:59 +0200 Subject: [PATCH] Do not require non-empty kernel cmdline When booting with Fedora-Server-dvd-x86_64-30-20190411.n.0.iso, /proc/cmdline is empty (libvirt, qemu host with bios, not sure if that matters), after installation to disk, anaconda would "crash" in kernel-core %posttrans, after calling kernel-install, because dracut would fail with > Could not determine the kernel command line parameters. > Please specify the kernel command line in /etc/kernel/cmdline! I guess it's legitimate, even if unusual, to have no cmdline parameters. Two changes are done in this patch: 1. do not fail if the cmdline is empty. 2. if /usr/lib/kernel/cmdline or /etc/kernel/cmdline are present, but empty, ignore /proc/cmdline. If there's explicit configuration to have empty cmdline, don't ignore it. (cherry picked from commit 38b4f4b21c3c6107d7a562fcb432237464440b91) Resolves: #1746069 --- 50-dracut.install | 4 +--- 51-dracut-rescue.install | 10 +--------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/50-dracut.install b/50-dracut.install index 139ff82e..b897db84 100755 --- a/50-dracut.install +++ b/50-dracut.install @@ -35,9 +35,7 @@ case "$COMMAND" in read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline elif [[ -f /usr/lib/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline - fi - - if ! [[ ${BOOT_OPTIONS[*]} ]]; then + else read -r -d '' -a BOOT_OPTIONS < /proc/cmdline fi diff --git a/51-dracut-rescue.install b/51-dracut-rescue.install index 0580062f..5ac34ef3 100755 --- a/51-dracut-rescue.install +++ b/51-dracut-rescue.install @@ -47,9 +47,7 @@ if [[ -f /etc/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline elif [[ -f /usr/lib/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline -fi - -if ! [[ "${BOOT_OPTIONS[@]}" ]]; then +else read -r -d '' -a line < /proc/cmdline for i in "${line[@]}"; do [[ "${i#initrd=*}" != "$i" ]] && continue @@ -57,12 +55,6 @@ if ! [[ "${BOOT_OPTIONS[@]}" ]]; then done fi -if ! [[ ${BOOT_OPTIONS[*]} ]]; then - echo "Could not determine the kernel command line parameters." >&2 - echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2 - exit 1 -fi - if [[ -d "${BOOT_DIR_ABS%/*}" ]]; then BOOT_DIR="/${MACHINE_ID}/0-rescue" BOOT_ROOT=${BOOT_DIR_ABS%$BOOT_DIR}