Bug 2547636 - initial-setup fails to start without a video device/graphical output
Summary: initial-setup fails to start without a video device/graphical output
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: kmscon
Version: 45
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Jocelyn Falempe
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: AcceptedBlocker
Depends On:
Blocks: F45FinalBlocker
TreeView+ depends on / blocked
 
Reported: 2026-10-07 19:18 UTC by Dennis Gilmore
Modified: 2026-10-13 12:30 UTC (History)
10 users (show)

Fixed In Version: kmscon-10.0.4-5.fc45
Clone Of:
Environment:
Last Closed: 2026-10-13 03:39:30 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Serial console driven with HDMI connected bootlog (372.40 KB, text/plain)
2026-10-08 11:31 UTC, Jaroslav Groman
no flags Details
Serial console only, no HDMI connected bootlog (146.16 KB, text/plain)
2026-10-08 12:06 UTC, Jaroslav Groman
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Github kmscon kmscon pull 557 0 None open terminal: don't wait for display before opening the pty 2026-10-09 07:24:24 UTC

Description Dennis Gilmore 2026-10-07 19:18:17 UTC
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

Comment 1 Fedora Blocker Bugs Application 2026-10-07 19:19:59 UTC
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

Comment 2 Simon de Vlieger 2026-10-08 09:29:13 UTC
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
```

Comment 3 Kamil Paral (Fedora Quality) 2026-10-08 09:35:27 UTC
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.

Comment 4 Simon de Vlieger 2026-10-08 10:07:51 UTC
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.

Comment 5 Jaroslav Groman 2026-10-08 11:29:33 UTC
Attaching bootlog of installation driven from serial console, with HDMI connected.

Comment 6 Jaroslav Groman 2026-10-08 11:31:18 UTC
Created attachment 2160461 [details]
Serial console driven with HDMI connected bootlog

Comment 7 Jaroslav Groman 2026-10-08 12:06:04 UTC
Created attachment 2160466 [details]
Serial console only, no HDMI connected bootlog

Comment 8 Jaroslav Groman 2026-10-08 12:26:25 UTC
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.

Comment 9 Kamil Paral (Fedora Quality) 2026-10-08 12:44:02 UTC
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.

Comment 10 Jaroslav Groman 2026-10-08 12:59:13 UTC
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.

Comment 11 Jocelyn Falempe 2026-10-08 15:46:57 UTC
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 ?

Comment 12 Jocelyn Falempe 2026-10-08 21:09:06 UTC
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.

Comment 13 Jocelyn Falempe 2026-10-08 22:53:52 UTC
Here is the corresponding PR: 

https://github.com/kmscon/kmscon/pull/557

Comment 14 Fedora Update System 2026-10-09 22:41:45 UTC
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

Comment 15 Fedora Update System 2026-10-10 02:23:24 UTC
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.

Comment 16 Adam Williamson (Fedora) 2026-10-12 15:15:55 UTC
+5 in https://forge.fedoraproject.org/quality/blocker-review/issues/2211 , marking accepted.

Comment 17 Fedora Update System 2026-10-13 03:39:30 UTC
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.

Comment 18 Jaroslav Groman 2026-10-13 12:30:40 UTC
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>


Note You need to log in before you can comment on or make changes to this bug.