Backport a few upstream fixes
- Backport: fix(dracut-logger.sh): double dash trigger unknown logger warnings during run - Backport: fix(network-manager): nm-run.service: don't kill forked processes - Backport: fix(network-manager): only run NetworkManager if rd.neednet=1 - Backport: fix(network-manager): use /run/NetworkManager/initrd/neednet in initqueue
This commit is contained in:
parent
eeb15e69ee
commit
fbb2532e93
@ -0,0 +1,38 @@
|
|||||||
|
From 4fbccde50456f513d388cdfd858018cd889890dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dusty Mabe <dusty@dustymabe.com>
|
||||||
|
Date: Wed, 14 Apr 2021 16:23:29 -0400
|
||||||
|
Subject: [PATCH] fix(dracut-logger.sh): double dash trigger unknown logger
|
||||||
|
warnings during run
|
||||||
|
|
||||||
|
There are a bunch of `logger: unknown facility name: --user` errors
|
||||||
|
during a run. This is because logger is getting passed something like:
|
||||||
|
|
||||||
|
```
|
||||||
|
logger -p --user.info
|
||||||
|
```
|
||||||
|
|
||||||
|
Where it should be something like:
|
||||||
|
|
||||||
|
```
|
||||||
|
logger -p user.info
|
||||||
|
```
|
||||||
|
---
|
||||||
|
dracut-logger.sh | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/dracut-logger.sh b/dracut-logger.sh
|
||||||
|
index c36525d0..07389285 100755
|
||||||
|
--- a/dracut-logger.sh
|
||||||
|
+++ b/dracut-logger.sh
|
||||||
|
@@ -241,7 +241,7 @@ _lvl2char() {
|
||||||
|
# @retval 0 if @a lvl is correct.
|
||||||
|
# @result Echoes logger priority.
|
||||||
|
_lvl2syspri() {
|
||||||
|
- printf "%s" -- "$syslogfacility."
|
||||||
|
+ printf -- "%s" "$syslogfacility."
|
||||||
|
case "$1" in
|
||||||
|
1) echo crit;;
|
||||||
|
2) echo error;;
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
From 1f21fac646daa46cbe184ef8ff7705842f06ba15 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dusty Mabe <dusty@dustymabe.com>
|
||||||
|
Date: Wed, 14 Apr 2021 10:46:12 -0400
|
||||||
|
Subject: [PATCH] fix(network-manager): nm-run.service: don't kill forked
|
||||||
|
processes
|
||||||
|
|
||||||
|
If teaming is set up via NetworkManager we don't want systemd to take
|
||||||
|
down the userspace teamd process when NetworkManager quits. `KillMode=process`
|
||||||
|
will allow it to leave those processes behind.
|
||||||
|
|
||||||
|
This is fallout from the change to run NetworkManager via systemd (c17c5b7).
|
||||||
|
|
||||||
|
With `KillMode=process` we get something like:
|
||||||
|
|
||||||
|
```
|
||||||
|
sh-5.1# journalctl -u nm-run -o cat | tail
|
||||||
|
<info> [1618411262.7030] quitting now that startup is complete
|
||||||
|
<info> [1618411262.7030] device (team0): carrier: link connected
|
||||||
|
<info> [1618411262.7033] device (team0): team port ens2 was released
|
||||||
|
<info> [1618411262.7033] device (team0): team port ens3 was released
|
||||||
|
<info> [1618411262.7033] manager: NetworkManager state is now CONNECTED_SITE
|
||||||
|
<info> [1618411262.7034] exiting (success)
|
||||||
|
nm-run.service: Deactivated successfully.
|
||||||
|
nm-run.service: Unit process 476 (teamd) remains running after unit stopped.
|
||||||
|
Finished nm-run.service.
|
||||||
|
```
|
||||||
|
---
|
||||||
|
modules.d/35network-manager/nm-run.service | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/modules.d/35network-manager/nm-run.service b/modules.d/35network-manager/nm-run.service
|
||||||
|
index f3493c41..b667ce37 100644
|
||||||
|
--- a/modules.d/35network-manager/nm-run.service
|
||||||
|
+++ b/modules.d/35network-manager/nm-run.service
|
||||||
|
@@ -23,6 +23,8 @@ ConditionPathExistsGlob=|/etc/sysconfig/network-scripts/ifcfg-*
|
||||||
|
#run the script and wait before it finishes
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon
|
||||||
|
+#don't kill forked off processes (for example: teamd for teaming)
|
||||||
|
+KillMode=process
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=initrd.target
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
@ -0,0 +1,47 @@
|
|||||||
|
From ac0e8f7dcc81432311906c3fca0d4211f6a2f68c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dusty Mabe <dusty@dustymabe.com>
|
||||||
|
Date: Tue, 13 Apr 2021 11:36:21 -0400
|
||||||
|
Subject: [PATCH 1/2] fix(network-manager): only run NetworkManager if
|
||||||
|
rd.neednet=1
|
||||||
|
|
||||||
|
Don't run the new systemd unit (nm-run.service) if rd.neednet=1
|
||||||
|
isn't set. nm-initrd-generator will generate configuration even
|
||||||
|
without rd.neednet=1 so determining if we should start based on
|
||||||
|
just if connection profiles exist isn't enough. We need some other
|
||||||
|
indicator. In this case we lay down a /run/NetworkManager/initrd/neednet
|
||||||
|
if rd.neednet=1, which is used by nm-run.service to determine the
|
||||||
|
need to run.
|
||||||
|
---
|
||||||
|
modules.d/35network-manager/nm-lib.sh | 1 +
|
||||||
|
modules.d/35network-manager/nm-run.service | 3 +++
|
||||||
|
2 files changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/modules.d/35network-manager/nm-lib.sh b/modules.d/35network-manager/nm-lib.sh
|
||||||
|
index fe053cf..d756022 100644
|
||||||
|
--- a/modules.d/35network-manager/nm-lib.sh
|
||||||
|
+++ b/modules.d/35network-manager/nm-lib.sh
|
||||||
|
@@ -14,6 +14,7 @@ nm_generate_connections()
|
||||||
|
/etc/sysconfig/network-scripts/ifcfg-*; do
|
||||||
|
[ -f "$i" ] || continue
|
||||||
|
echo '[ -f /tmp/nm.done ]' >$hookdir/initqueue/finished/nm.sh
|
||||||
|
+ : > /run/NetworkManager/initrd/neednet # activate nm-run.service
|
||||||
|
break
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
diff --git a/modules.d/35network-manager/nm-run.service b/modules.d/35network-manager/nm-run.service
|
||||||
|
index b667ce3..f041ade 100644
|
||||||
|
--- a/modules.d/35network-manager/nm-run.service
|
||||||
|
+++ b/modules.d/35network-manager/nm-run.service
|
||||||
|
@@ -15,6 +15,9 @@ Before=network.target network-online.target
|
||||||
|
#run before we try to mount anything from the dracut hooks
|
||||||
|
Before=dracut-initqueue.service
|
||||||
|
|
||||||
|
+#do not run if networking not needed
|
||||||
|
+ConditionPathExists=/run/NetworkManager/initrd/neednet
|
||||||
|
+
|
||||||
|
#do not run, if there is no configuration
|
||||||
|
ConditionPathExistsGlob=|/usr/lib/NetworkManager/system-connections/*
|
||||||
|
ConditionPathExistsGlob=|/run/NetworkManager/system-connections/*
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From 6a37c6f6302f950df608db3fd45acf9342ee3de2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dusty Mabe <dusty@dustymabe.com>
|
||||||
|
Date: Tue, 13 Apr 2021 11:45:35 -0400
|
||||||
|
Subject: [PATCH 2/2] fix(network-manager): use
|
||||||
|
/run/NetworkManager/initrd/neednet in initqueue
|
||||||
|
|
||||||
|
We don't want to start NetworkManager if networking is not needed.
|
||||||
|
Right now nm-config.sh lays down /usr/lib/dracut/hooks/initqueue/finished/nm.sh
|
||||||
|
which will cause the initqueue to run. If nothing exists in
|
||||||
|
/usr/lib/dracut/hooks/initqueue/finished/ then it will short circuit and
|
||||||
|
the initqueue won't run anything. But what if something else needed
|
||||||
|
something to run in the initqueue? nm-run.sh would still get started,
|
||||||
|
even though /usr/lib/dracut/hooks/initqueue/finished/nm.sh didn't exist.
|
||||||
|
In this case let's just trigger off of /run/NetworkManager/initrd/neednet
|
||||||
|
like we are doing in the systemd unit (nm-run.service).
|
||||||
|
---
|
||||||
|
modules.d/35network-manager/nm-run.sh | 22 +++++++++++++---------
|
||||||
|
1 file changed, 13 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh
|
||||||
|
index d48028df..359bc9ee 100755
|
||||||
|
--- a/modules.d/35network-manager/nm-run.sh
|
||||||
|
+++ b/modules.d/35network-manager/nm-run.sh
|
||||||
|
@@ -6,15 +6,19 @@ if [ -e /tmp/nm.done ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
-[ -z "$DRACUT_SYSTEMD" ] && \
|
||||||
|
-for i in /usr/lib/NetworkManager/system-connections/* \
|
||||||
|
- /run/NetworkManager/system-connections/* \
|
||||||
|
- /etc/NetworkManager/system-connections/* \
|
||||||
|
- /etc/sysconfig/network-scripts/ifcfg-*; do
|
||||||
|
- [ -f "$i" ] || continue
|
||||||
|
- /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon
|
||||||
|
- break
|
||||||
|
-done
|
||||||
|
+if [ -z "$DRACUT_SYSTEMD" ]; then
|
||||||
|
+ # Only start NM if networking is needed
|
||||||
|
+ if [ -e /run/NetworkManager/initrd/neednet ]; then
|
||||||
|
+ for i in /usr/lib/NetworkManager/system-connections/* \
|
||||||
|
+ /run/NetworkManager/system-connections/* \
|
||||||
|
+ /etc/NetworkManager/system-connections/* \
|
||||||
|
+ /etc/sysconfig/network-scripts/ifcfg-*; do
|
||||||
|
+ [ -f "$i" ] || continue
|
||||||
|
+ /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon
|
||||||
|
+ break
|
||||||
|
+ done
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
|
||||||
|
if [ -s /run/NetworkManager/initrd/hostname ]; then
|
||||||
|
cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
18
dracut.spec
18
dracut.spec
@ -5,7 +5,7 @@
|
|||||||
# strip the automatically generated dep here and instead co-own the
|
# strip the automatically generated dep here and instead co-own the
|
||||||
# directory.
|
# directory.
|
||||||
%global __requires_exclude pkg-config
|
%global __requires_exclude pkg-config
|
||||||
%define dist_free_release 3
|
%define dist_free_release 4
|
||||||
|
|
||||||
Name: dracut
|
Name: dracut
|
||||||
Version: 053
|
Version: 053
|
||||||
@ -39,6 +39,16 @@ Patch0: 0001-fix-network-manager-no-default-deps-for-nm-run.servi.patch
|
|||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1936781#c6
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1936781#c6
|
||||||
# Should fix loss of critical system files with kdump enabled
|
# Should fix loss of critical system files with kdump enabled
|
||||||
Patch1: 0001-Partially-revert-41cfdfc-to-fix-RHBZ-1936781-per-ryn.patch
|
Patch1: 0001-Partially-revert-41cfdfc-to-fix-RHBZ-1936781-per-ryn.patch
|
||||||
|
# Fix logger error when building initramfs
|
||||||
|
# https://github.com/dracutdevs/dracut/pull/1351
|
||||||
|
Patch2: 0001-fix-dracut-logger.sh-double-dash-trigger-unknown-log.patch
|
||||||
|
# Fix issue where teaming would get brought down by systemd
|
||||||
|
# https://github.com/dracutdevs/dracut/pull/1349
|
||||||
|
Patch3: 0001-fix-network-manager-nm-run.service-don-t-kill-forked.patch
|
||||||
|
# Fix issue where NM was getting brought up unconditionally
|
||||||
|
# https://github.com/dracutdevs/dracut/pull/1347
|
||||||
|
Patch4: 0001-fix-network-manager-only-run-NetworkManager-if-rd.ne.patch
|
||||||
|
Patch5: 0002-fix-network-manager-use-run-NetworkManager-initrd-ne.patch
|
||||||
|
|
||||||
BuildRequires: bash
|
BuildRequires: bash
|
||||||
BuildRequires: git-core
|
BuildRequires: git-core
|
||||||
@ -488,6 +498,12 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/
|
|||||||
%{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
|
%{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Apr 19 2021 Dusty Mabe <dusty@dustymabe.com> - 053-4
|
||||||
|
- Backport: fix(dracut-logger.sh): double dash trigger unknown logger warnings during run
|
||||||
|
- Backport: fix(network-manager): nm-run.service: don't kill forked processes
|
||||||
|
- Backport: fix(network-manager): only run NetworkManager if rd.neednet=1
|
||||||
|
- Backport: fix(network-manager): use /run/NetworkManager/initrd/neednet in initqueue
|
||||||
|
|
||||||
* Mon Apr 19 2021 Adam Williamson <awilliam@redhat.com> - 053-3
|
* Mon Apr 19 2021 Adam Williamson <awilliam@redhat.com> - 053-3
|
||||||
- Fix removal of key system files when kdump enabled (thanks kasong) (#1936781)
|
- Fix removal of key system files when kdump enabled (thanks kasong) (#1936781)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user