Fedora Account System
Red Hat Associate
Red Hat Customer
I have used a Fedora 45 Nightly image from 20261006 and a Minimal disk image from 20261007 both of them fail to start initial-setup I have added console=ttyS2,1500000 to attempt to force it over the serial port to see if it would help. The service attempts to start forever and never actually starts I only have access to a serial console. accessing the server images journal the only thing logged was an error that /bin/plymouth did not exist. I was able to confirm that it is not installed in the server image Reproducible: Always
Proposed as a Blocker for 45-final by Fedora user ausil using the blocker tracking app because: The Server and Minimal images are unable to be used as they do not offer a working mechanism to do initial system configuration
I've booted a Raspberry Pi 4 with `Fedora-Minimal-45-20261006.n.0.aarch64.raw.xz` installed with `arm-image-installer --image ~/tmp/Fedora-Minimal-45-20261006.n.0.aarch64.raw.xz --media /dev/sdd`. Booting it attached to its serial with UART I get stuck and cannot continue the boot; the last messages shown are: ``` [ OK ] Started kmsconvt - KMS System Console on tty1. Starting plymouth-quit.service - Terminate Plymouth Boot Screen... ``` Re-attaching its storage to my workstation and looking at the log I see the following: ``` ~ € journalctl -D /run/media/user/root/var/log/journal -u initial-setup.service Sep 29 02:00:31 localhost.localdomain systemd[1]: Starting initial-setup.service - Initial Setup configuration program... ``` and ``` ~ € journalctl -D /run/media/user/root/var/log/journal | rg kmscon Sep 29 02:00:08 localhost.localdomain systemd[1]: Created slice system-kmsconvt.slice - Slice /system/kmsconvt. Sep 29 02:00:31 localhost.localdomain systemd[1]: Started kmsconvt - KMS System Console on tty1. Sep 29 02:00:31 localhost.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=kmsconvt@tty1 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' Sep 29 02:00:31 localhost.localdomain kmscon[814]: log: kmscon Revision v10.0.4 Sep 28 2026 00:00:00 Sep 29 02:00:32 localhost.localdomain kmscon[814]: vt: using tty /dev/tty1 Sep 29 02:00:32 localhost.localdomain kmscon[814]: Error: drm_shared: Device /dev/dri/card0 doesn't support universal planes, using legacy Sep 29 02:00:32 localhost.localdomain kmscon[814]: Warning: drm_shared: Device /dev/dri/card0 doesn't support atomic modesetting, using legacy Sep 29 02:00:32 localhost.localdomain kmscon[814]: Error: video_drm2d: driver does not support dumb buffers Sep 29 02:00:32 localhost.localdomain kmscon[814]: Error: seat: cannot create video device /dev/dri/card0 on seat seat0: -95 Sep 29 02:00:33 localhost.localdomain kmscon[839]: log: kmscon Revision v10.0.4 Sep 28 2026 00:00:00 Sep 29 02:00:33 localhost.localdomain kmscon[839]: vt: using tty /dev/tty7 Sep 29 02:00:33 localhost.localdomain kmscon[839]: Error: drm_shared: Device /dev/dri/card0 doesn't support universal planes, using legacy Sep 29 02:00:33 localhost.localdomain kmscon[839]: Warning: drm_shared: Device /dev/dri/card0 doesn't support atomic modesetting, using legacy Sep 29 02:00:33 localhost.localdomain kmscon[839]: Error: video_drm2d: driver does not support dumb buffers Sep 29 02:00:33 localhost.localdomain kmscon[839]: Error: seat: cannot create video device /dev/dri/card0 on seat seat0: -95 ```
FWIW, Jaroslav Groman verified that initial setup works fine on a RPi with a graphical output. So this seems to be limited to cases where graphical output is not available.
So from it reads like to me is either: 1. that v3d probed before vc4 thus card0 is v3d and *not* vc4 and stuff doesn't work for kmscon because it doesn't go to card1? 2. the raspberry pi firmware didn't turn on HSM clocks because there's no HDMI connected and thus vc4 fails to probe which causes v3d to be the first? Dunno which one it is and if it actually prevents kmscon from working.
Attaching bootlog of installation driven from serial console, with HDMI connected.
Created attachment 2160461 [details] Serial console driven with HDMI connected bootlog
Created attachment 2160466 [details] Serial console only, no HDMI connected bootlog
Apparently kmscon would not spawn --login child until it has usable screen and thus run-initial-setup script is never started in no-HDMI scenario. So we'd need to either have a conditional dedicated initial-setup service for headless systems or a kmscon patch would be needed which would initialize a PTY and spawn the --login child even with no HDMI connection around.
I can reproduce this with x86_64 Server disk image in a libvirt VM that has Display and Video devices removed. Initial setup never starts on the serial console. Once I add a Video device, it starts correctly.
Also if video device is removed after initial-setup has started, installation can be completed and system can be fully used including reboots using serial console only.
Yes, kmscon waits for the first display to start the pty child, so it can set the pty winsize according to the display. But I think just starting the script if kmscon fails should be enough: https://github.com/rhinstaller/initial-setup/pull/161/changes#diff-308726e1612232677c7e116a42550a8f3e3f66e326bcc4f32863d93fec9d9c06 So changing ExectStart to this should work: ExecStart=sh -c "/usr/bin/kmscon --vt 7 --no-issue --oneshot --login /usr/libexec/initial-setup/run-initial-setup || /usr/libexec/initial-setup/run-initial-setup" kmscon may also need to exit if --oneshot is set, and there is no display, as from the logs it currently doesn't exit ?
Thinking more about this issue, I think kmscon should start the script even if no display is available. The reason is that this will allow to plug a display after, and still being able to do the setup. Also if you have a keyboard, sometime you can still run some commands blindly, (like login and start ssh server) so it makes sense to do it this way. I will prepare a patch for this.
Here is the corresponding PR: https://github.com/kmscon/kmscon/pull/557
FEDORA-2026-40aeea1b96 (kmscon-10.0.4-5.fc45) has been submitted as an update to Fedora 45. https://bodhi.fedoraproject.org/updates/FEDORA-2026-40aeea1b96
FEDORA-2026-40aeea1b96 has been pushed to the Fedora 45 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-40aeea1b96` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-40aeea1b96 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
+5 in https://forge.fedoraproject.org/quality/blocker-review/issues/2211 , marking accepted.
FEDORA-2026-40aeea1b96 (kmscon-10.0.4-5.fc45) has been pushed to the Fedora 45 stable repository. If problem still persists, please make note of it in this bug report.
Tested Fedora-Server-Host-Generic-45-20261013.n.0.aarch64.raw.xz which contains kmscon-10.0.4-5.fc45. initial-setup starts fine without any video device connected. It cannot be completed probably due to https://bugzilla.redhat.com/show_bug.cgi?id=2537105 but the kmscon issue itself seems to be fixed. ... [ OK ] Started session-3.scope - Session 3 of User root. [*** ] Job initial-setup.service/start running (32s / no limit) ================================================================================ ================================================================================ 1) [ ] Language settings 2) [x] Time settings (Language is not set.) (America/New_York timezone) 3) [ ] Network configuration 4) [!] Root password (Unknown) (Root account is disabled) 5) [!] User creation (No user will be created) Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to Starting NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service... [ OK ] Started NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service. Starting NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service... [ OK ] Started NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service. Starting systemd-tmpfiles-clean.service - Cleanup of Temporary Directories... [ OK ] Finished systemd-tmpfiles-clean.service - Cleanup of Temporary Directories. [ *** ] Job initial-setup.service/start running (26min 59s / no limit) <END OF OUTPUT>