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 0177e24832
Author: Coiby Xu <coxu@redhat.com>
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 <cutaylor@redhat.com>
    Cc: Jie Li <jieli@redhat.com>
    Signed-off-by: Coiby Xu <coxu@redhat.com>
    Reviewed-by: Dave Young <dyoung@redhat.com>

Signed-off-by: Coiby Xu <coxu@redhat.com>
This commit is contained in:
Coiby Xu 2023-12-05 18:01:01 +08:00
parent 767749d9da
commit 6e359f067f

View File

@ -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
}