From 6e359f067f22b6c7c7db8b9cb5adbfdf569451be Mon Sep 17 00:00:00 2001 From: Coiby Xu Date: Tue, 5 Dec 2023 18:01:01 +0800 Subject: [PATCH] Use the same /etc/resolve.conf in kdump initrd if it's managed manually Resolves: https://issues.redhat.com/browse/RHEL-11897 Upstream: Fedora Conflict: None commit 0177e24832e8d3e5ea2e033c55b616bdd0cf3e9b Author: Coiby Xu Date: Tue Nov 7 08:28:59 2023 +0800 Use the same /etc/resolve.conf in kdump initrd if it's managed manually Resolves: https://issues.redhat.com/browse/RHEL-11897 Some users may choose to manage /etc/resolve.conf manually [1] by setting dns=none or use a symbolic link resolve.conf [2]. In this case, network dumping will not work because DNS resolution fails. Use the same /etc/resolve.conf in kdump initrd to fix this problem. [1] https://bugzilla.gnome.org/show_bug.cgi?id=690404 [2] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/manually-configuring-the-etc-resolv-conf-file_configuring-and-managing-networking Fixes: 63c3805c ("Set up kdump network by directly copying NM connection profile to initrd") Reported-by: Curtis Taylor Cc: Jie Li Signed-off-by: Coiby Xu Reviewed-by: Dave Young Signed-off-by: Coiby Xu --- dracut-module-setup.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh index b74447f..3898dac 100755 --- a/dracut-module-setup.sh +++ b/dracut-module-setup.sh @@ -576,6 +576,33 @@ kdump_collect_netif_usage() { fi } +kdump_install_resolv_conf() { + local _resolv_conf=/etc/resolv.conf _nm_conf_dir=/etc/NetworkManager/conf.d + + # Some users may choose to manage /etc/resolve.conf manually [1] + # by setting dns=none or use a symbolic link resolve.conf [2]. + # So resolve.conf should be installed to kdump initrd as well. To prevent + # NM frome overwritting the user-configured resolve.conf in kdump initrd, + # also set dns=none for NM. + # + # Note: + # 1. When resolv.conf is managed by systemd-resolved.service, it could also be a + # symbolic link. So exclude this case by teling if systemd-resolved is enabled. + # + # 2. It's harmless to blindly copy /etc/resolve.conf to the initrd because + # by default in initramfs this file will be overwritten by + # NetworkManager. If user manages it via a symbolic link, it's still + # preserved because NM won't touch a symbolic link file. + # + # [1] https://bugzilla.gnome.org/show_bug.cgi?id=690404 + # [2] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/manually-configuring-the-etc-resolv-conf-file_configuring-and-managing-networking + systemctl -q is-enabled systemd-resolved && return 0 + inst "$_resolv_conf" + if NetworkManager --print-config | grep -qs "^dns=none"; then + echo "[main]\ndns=none" > "$_nm_conf_dir"/90-dns-none.conf + fi +} + # Setup dracut to bring up network interface that enable # initramfs accessing giving destination kdump_install_net() { @@ -588,6 +615,7 @@ kdump_install_net() { kdump_setup_znet kdump_install_nm_netif_allowlist "$_netifs" kdump_install_nic_driver "$_netifs" + kdump_install_resolv_conf fi }