Red Hat Bugzilla – Bug 882037
race between adding liveuser and gdm autologin
Last modified: 2013-03-18 18:29:34 EDT
liveuser is added by the SysV init script /etc/init.d/livesys . But at the same time gdm starts and try to login as liveuser. There is apparently no ordering, and sometimes (some hardware and some spins/remixes) gdm will try to login and fail before the user is added.
systemd should be told to ensure that livesys has to complete before starting gdm.
The best solution would be to convert livesys to a systemd service and use a Before. That is probably not feasible now.
According to systemd.special(7):
The display manager service. Usually this should be aliased
(symlinked) to gdm.service or a similar display manager service.
systemd automatically adds dependencies of type After for this
target unit to all SysV init script service units with a LSB header
referring to the $x-display-manager facility, for compatibility
something like this should work:
### BEGIN INIT INFO
# Provides: $x-display-manager
### END INIT INFO
- but it didn't work for me ...
gdm-3.6.2-1.fc18.x86_64 / gdm-3.6.2-1.fc18.usefamilywild.i686
seems like gdm.service ( and probably other dm service too ) are missing After=livesys.service or livesys or the livesys lsb header is missing X-Start-Before: gdm or gdm.service
This is the after order in F17 and probably should be the same in each *dm.service
After=livesys-late.service rc-local.service systemd-user-sessions.service
# chkconfig: 345 00 99
# description: Init script for live image.
+### BEGIN INIT INFO
+# X-Start-Before: gdm.service
+### END INIT INFO
if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ]; then
+sed -i 's,^After=,After=livesys.service livesys-late.service rc-local.service systemd-user-sessions.service ,g' /lib/systemd/system/gdm.service
worked for me.
A change like that should be nth for f18, but it should probably be figured out exactly what is needed.
A full conversion to systemd service would probably be too late for f18.
probably better to use display-manager.service instead of gdm.service (which is an alias for gdm.service when appropriate and an alias for other display managers when appropriate)
is the sed required? The X-Start-Before should be enough right?
*** Bug 854722 has been marked as a duplicate of this bug. ***
Richard did some testing and discovered the sed isn't required, but the the .service suffix on the X-Start-Before line is wrong.
Created attachment 696962 [details]
patch to fix things
This is what I pushed.
confirmed fixed in f19, fwiw.