|
|
|
@ -1,5 +1,20 @@
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
_save_kdump_netifs() {
|
|
|
|
|
local _name
|
|
|
|
|
|
|
|
|
|
if [[ -n $2 ]]; then
|
|
|
|
|
_name=$2
|
|
|
|
|
else
|
|
|
|
|
_name=$1
|
|
|
|
|
fi
|
|
|
|
|
unique_netifs[$1]=$_name
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_get_kdump_netifs() {
|
|
|
|
|
echo -n "${!unique_netifs[@]}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
kdump_module_init() {
|
|
|
|
|
if ! [[ -d "${initdir}/tmp" ]]; then
|
|
|
|
|
mkdir -p "${initdir}/tmp"
|
|
|
|
@ -42,6 +57,14 @@ depends() {
|
|
|
|
|
_dep="$_dep ssh-client"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if is_lvm2_thinp_dump_target; then
|
|
|
|
|
if grep -q lvmthinpool-monitor <<< $(dracut --list-modules); then
|
|
|
|
|
add_opt_module lvmthinpool-monitor
|
|
|
|
|
else
|
|
|
|
|
dwarning "Required lvmthinpool-monitor modules is missing! Please upgrade dracut >= 057."
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$(uname -m)" = "s390x" ]; then
|
|
|
|
|
_dep="$_dep znet"
|
|
|
|
|
fi
|
|
|
|
@ -300,11 +323,35 @@ kdump_setup_ifname() {
|
|
|
|
|
echo "$_ifname"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
kdump_install_nm_netif_allowlist() {
|
|
|
|
|
local _netif _except_netif _netif_allowlist _netif_allowlist_nm_conf
|
|
|
|
|
|
|
|
|
|
for _netif in $1; do
|
|
|
|
|
_per_mac=$(kdump_get_perm_addr "$_netif")
|
|
|
|
|
if [[ "$_per_mac" != 'not set' ]]; then
|
|
|
|
|
_except_netif="mac:$_per_mac"
|
|
|
|
|
else
|
|
|
|
|
_except_netif="interface-name:${unique_netifs[${_netif}]}"
|
|
|
|
|
fi
|
|
|
|
|
_netif_allowlist="${_netif_allowlist}except:${_except_netif};"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
_netif_allowlist_nm_conf=${initdir}/tmp/netif_allowlist_nm_conf
|
|
|
|
|
cat << EOF > "$_netif_allowlist_nm_conf"
|
|
|
|
|
[device-others]
|
|
|
|
|
match-device=${_netif_allowlist}
|
|
|
|
|
managed=false
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
inst "$_netif_allowlist_nm_conf" "/etc/NetworkManager/conf.d/10-kdump-netif_allowlist.conf"
|
|
|
|
|
rm -f "$_netif_allowlist_nm_conf"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
kdump_setup_bridge() {
|
|
|
|
|
local _netdev=$1
|
|
|
|
|
local _brif _dev _mac _kdumpdev
|
|
|
|
|
for _dev in `ls /sys/class/net/$_netdev/brif/`; do
|
|
|
|
|
_kdumpdev=$_dev
|
|
|
|
|
_kdumpdev=""
|
|
|
|
|
if kdump_is_bond "$_dev"; then
|
|
|
|
|
kdump_setup_bond "$_dev"
|
|
|
|
|
elif kdump_is_team "$_dev"; then
|
|
|
|
@ -316,6 +363,8 @@ kdump_setup_bridge() {
|
|
|
|
|
_kdumpdev=$(kdump_setup_ifname $_dev)
|
|
|
|
|
echo -n " ifname=$_kdumpdev:$_mac" >> ${initdir}/etc/cmdline.d/41bridge.conf
|
|
|
|
|
fi
|
|
|
|
|
_save_kdump_netifs "$_dev" "$_kdumpdev"
|
|
|
|
|
[[ -z $_kdumpdev ]] && _kdumpdev=$_dev
|
|
|
|
|
_brif+="$_kdumpdev,"
|
|
|
|
|
done
|
|
|
|
|
echo " bridge=$_netdev:$(echo $_brif | sed -e 's/,$//')" >> ${initdir}/etc/cmdline.d/41bridge.conf
|
|
|
|
@ -327,6 +376,7 @@ kdump_setup_bond() {
|
|
|
|
|
for _dev in `cat /sys/class/net/$_netdev/bonding/slaves`; do
|
|
|
|
|
_mac=$(kdump_get_perm_addr $_dev)
|
|
|
|
|
_kdumpdev=$(kdump_setup_ifname $_dev)
|
|
|
|
|
_save_kdump_netifs "$_dev" "$_kdumpdev"
|
|
|
|
|
echo -n " ifname=$_kdumpdev:$_mac" >> ${initdir}/etc/cmdline.d/42bond.conf
|
|
|
|
|
_slaves+="$_kdumpdev,"
|
|
|
|
|
done
|
|
|
|
@ -345,6 +395,7 @@ kdump_setup_team() {
|
|
|
|
|
for _dev in `teamnl $_netdev ports | awk -F':' '{print $2}'`; do
|
|
|
|
|
_mac=$(kdump_get_perm_addr $_dev)
|
|
|
|
|
_kdumpdev=$(kdump_setup_ifname $_dev)
|
|
|
|
|
_save_kdump_netifs "$_dev" "$_kdumpdev"
|
|
|
|
|
echo -n " ifname=$_kdumpdev:$_mac" >> ${initdir}/etc/cmdline.d/44team.conf
|
|
|
|
|
_slaves+="$_kdumpdev,"
|
|
|
|
|
done
|
|
|
|
@ -379,6 +430,7 @@ kdump_setup_vlan() {
|
|
|
|
|
_kdumpdev="$(kdump_setup_ifname $_phydev)"
|
|
|
|
|
echo " vlan=$(kdump_setup_ifname $_netdev):$_kdumpdev ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf
|
|
|
|
|
fi
|
|
|
|
|
_save_kdump_netifs "$_phydev" "$_kdumpdev"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# find online znet device
|
|
|
|
@ -420,10 +472,13 @@ kdump_setup_znet() {
|
|
|
|
|
|
|
|
|
|
source_ifcfg_file $_netdev
|
|
|
|
|
|
|
|
|
|
[[ -z "$NETTYPE" ]] && return
|
|
|
|
|
[[ -z "$SUBCHANNELS" ]] && return
|
|
|
|
|
|
|
|
|
|
for i in $OPTIONS; do
|
|
|
|
|
_options=${_options},$i
|
|
|
|
|
done
|
|
|
|
|
echo rd.znet=${NETTYPE},${SUBCHANNELS}${_options} rd.znet_ifname=$_netdev:${SUBCHANNELS} > ${initdir}/etc/cmdline.d/30znet.conf
|
|
|
|
|
echo rd.znet=${NETTYPE},${SUBCHANNELS}${_options} rd.znet_ifname=$(kdump_setup_ifname $_netdev):${SUBCHANNELS} > ${initdir}/etc/cmdline.d/30znet.conf
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Setup dracut to bringup a given network interface
|
|
|
|
@ -477,6 +532,7 @@ kdump_setup_netdev() {
|
|
|
|
|
_ifname_opts=" ifname=$kdumpnic:$_netmac"
|
|
|
|
|
echo "$_ifname_opts" >> $_ip_conf
|
|
|
|
|
fi
|
|
|
|
|
_save_kdump_netifs "$_netdev" "$_kdumpdev"
|
|
|
|
|
|
|
|
|
|
kdump_setup_dns "$_netdev"
|
|
|
|
|
|
|
|
|
@ -765,7 +821,7 @@ kdump_check_iscsi_targets () {
|
|
|
|
|
# If our prerequisites are not met, fail anyways.
|
|
|
|
|
type -P iscsistart >/dev/null || return 1
|
|
|
|
|
|
|
|
|
|
kdump_check_setup_iscsi() (
|
|
|
|
|
kdump_check_setup_iscsi() {
|
|
|
|
|
local _dev
|
|
|
|
|
_dev=$1
|
|
|
|
|
|
|
|
|
@ -775,7 +831,7 @@ kdump_check_iscsi_targets () {
|
|
|
|
|
cd ..
|
|
|
|
|
done
|
|
|
|
|
[[ -d iscsi_session ]] && kdump_setup_iscsi_device "$PWD"
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
|
|
|
|
for_each_host_dev_and_slaves_all kdump_check_setup_iscsi
|
|
|
|
@ -941,7 +997,8 @@ kdump_install_systemd_conf() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
install() {
|
|
|
|
|
local arch
|
|
|
|
|
declare -A unique_netifs
|
|
|
|
|
local arch _netifs
|
|
|
|
|
|
|
|
|
|
kdump_module_init
|
|
|
|
|
kdump_install_conf
|
|
|
|
@ -993,6 +1050,11 @@ install() {
|
|
|
|
|
# at some point of time.
|
|
|
|
|
kdump_check_iscsi_targets
|
|
|
|
|
|
|
|
|
|
_netifs=$(_get_kdump_netifs)
|
|
|
|
|
if [[ -n "$_netifs" ]]; then
|
|
|
|
|
kdump_install_nm_netif_allowlist "$_netifs"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
kdump_install_systemd_conf
|
|
|
|
|
|
|
|
|
|
# For the lvm type target under kdump, in /etc/lvm/lvm.conf we can
|
|
|
|
|