-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Booting to multi-user.target and doing systemctl isolate graphical.target
does not work with 253
#26364
Comments
Downstream report: https://bugzilla.redhat.com/show_bug.cgi?id=2165692 |
When |
I can't actually think of a way to not use it in this case. The use case is testing update notifications. For Fedora, we have a release criterion that the desktop must not notify the user about updates when running live, but must notify the user about updates when installed. So we need to test that. Unfortunately, the desktops - GNOME in particular - try to be very clever about when and what to notify about, so in order for the test to be reliable, we first need to prepare some stuff so we're absolutely sure that we're in a scenario where an update notification would be shown, unless we're on the live path and the "we're running live" stipulation should prevent it. We obviously want to do that before we reach the desktop, otherwise our attempt to fiddle with things is racing with the desktop actually checking for updates and notification timers kicking in and so on. So the test in question boots to multi-user and does a bunch of prep - setting up a repo and downgrading a package to a dummy version to ensure an update is definitely available, then fiddling with various settings to game all the desktop's heuristics to make sure it ought to notify of the update. On GNOME we even have to set the system clock in some circumstances, because GNOME has a rule that it doesn't show update notifications between midnight and 6am (boy, that was fun to track down). Once we're done with all of that, we do On the 'installed system' path we could just reboot at that point instead, sure. But on the "live boot" path, we obviously can't - you can't reboot a live system. I can't think of any other practical way to do all this for a live scenario. Can you? |
Hmm, it’s quite surprising to me that we don’t have `IgnoreOnIsolate=yes`
set on `dbus.service` 🤔
|
This reverts commit 5d71e46. It turns out that this commit caused a noticable change in behaviour for 'systemctl isolate graphical.target' in Fedora, as found by git bisect. Reverting on top of current git also restores behaviour from v252. I don't have time to analyze this right now, so this is a quick revert to unblock Fedora and possibly allow us to release v253 in case a full solution is harder. Fixes systemd#26364.
The problem is that
Why not just do |
well, if that's supported/intended I can certainly do that. I just recall from past experience/documentation that |
OK, using |
Only if one wants to mimic the "runlevels" behavior, i.e., only units needed by the new target should continue to run. If one wants to run something in addition to the current set, then |
We need debug logs for this. i.e. |
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims)
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims)
I reproduced this with debug log enabled in a Fedora VM: https://fars.ee/y5Ps However, I was not able to reproduce this on Arch - |
@YHNdnzj are you able to reproduce it after applying the fix from #26388 ? |
The analogy with runlevels in sysvinit is not exact. When a runlevel change was triggered, sysvinit would start a bunch of scripts (S* and K*), depending on the runlevel configuration. But stuff that was not covered by those scripts wouldn't generally be touched. There was no notion of "kill everything that doesn't have an S script for this runlevel", just because there was no notion of ownership of processes. So e.g. stuff that would have been launched in response to udev triggers would almost certainly survive a runlevel change. Similarly, stuff spawned from other services, e.g. user sessions or remote logins, would likewise not be touched. This is different from |
I'm not really familiar with Fedora's build system 🤔 But TBH it feels weird that this doesn't trigger on Arch |
@YHNdnzj I have not tried it, but there are instructions to install the packages built by the CI from that PR, so shouldn't be necessary to build it by hand, if you want to give it a shot: https://dashboard.packit.dev/results/copr-builds/614038 |
No need, I'm checking Lennart's patch now. |
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims) Fixes: systemd#23055
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims) Fixes: systemd#23055
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims) Fixes: systemd#23055
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims) Fixes: systemd#23055 (cherry picked from commit 32d6707)
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims) Fixes: systemd#23055 (cherry picked from commit 32d6707) (cherry picked from commit c973e22)
…gered by units we keep running Inspired by: systemd#26364 (this might even "fix" systemd#26364, but without debug logs it's hard to make such claims) Fixes: systemd#23055 (cherry picked from commit 32d6707) (cherry picked from commit c973e22) (cherry picked from commit bfe6d1d) (cherry picked from commit 54b580e)
systemd version the issue has been seen with
253
Used distribution
Fedora Rawhide
Linux kernel version used
6.2.0-0.rc7.20230207git05ecb680708a.51.fc38.x86_64
CPU architectures issue was seen on
x86_64
Component
systemctl, systemd
Expected behaviour you didn't see
On a Fedora Rawhide system with a graphical desktop installed that usually boots successfully to
graphical.target
, I instead boot tomulti-user.target
, and runsystemctl isolate graphical.target
. This should bring up the graphical desktop.Unexpected behaviour you saw
Instead, the system simply becomes stuck at a blank screen. This started happening when systemd 253 landed in Rawhide; with 252 it was fine.
Steps to reproduce the problem
Install Fedora Rawhide (Workstation or KDE - find images at https://openqa.fedoraproject.org/nightlies.html), boot normally to verify it works, then boot to multi-user.target (by changing the default target or booting with
3
kernel arg), log in as root, and runsystemctl isolate graphical.target
.journal messages from a boot reproducing the issue
Additional program output to the terminal or log subsystem illustrating the issue
No response
The text was updated successfully, but these errors were encountered: