OK, since I seem to have missed some details that you’re looking for, let me try again. Core i7-something, did a clean install of OpenSuSE 12.2 onto a fresh hard drive. Selected minimal X config, which gets me xdm and twm. I changed the window manager to icewm in /etc/sysconfig/displaymanager. The graphics adapter is some EVGA GeForce 9500 GT device. Kind of low end, but the system is primarily a server, so I don’t worry about the graphics performance too much.
This all works fine. The system boots, xdm comes up, I can login, icewm comes up, and I’m happy.
Well, except that if I logout, xdm doesn’t restart. In order to make that happen, I need to CTRL-ALT-F1, log in on a character cell session, and ‘rcxdm start’. This was noted previously in the thread as a problem with xdm on 12.2.
After I got 12.2 stabilized on my system, I noticed that systemd has the capability to restart services automatically. I thought that perhaps getting xdm running under systemd might solve the aforementioned problem of xdm not restarting after a logout.
So, I put a /lib/systemd/system/xdm.service file together. It currently contains:
Type=simpleEnvironmentFile=/etc/sysconfig/displaymanager
EnvironmentFile=/etc/sysconfig/language
EnvironmentFile=/etc/sysconfig/windowmanager
PIDFile=/var/run/xdm.pid
ExecStartPre=/bin/rm -f /var/run/xdm.pid
ExecStartPre=/etc/X11/xdm/TakeDevices
ExecStart=/usr/bin/xdm -nodaemon -config /etc/X11/xdm/xdm-config
Restart=always
[Install]
WantedBy=graphical.target
If I am logged in, and switch the system from using /etc/init.d/xdm to using /lib/systemd/system/xdm.service (which I do by putting the xdm.service file into the /lib/systemd/system directory and doing a systemctl disable command, followed by a systemctl enable command, and verifying via systemctl status that xdm is now configured to use the xdm.service file), everything works fine, as long as I don’t restart the system. If I logout, xdm restarts, as it should, so this verifies that the system is now using the xdm.service file.
However, if I restart the system (shutdown -r now) with this configuration, xdm does not start. /var/log/xdm.errors has “Fatal server error: no screens found”.
Also, Xorg.0.log has errors in it. In rewriting this note, I booted the system first with xdm.service enabled, and then with /etc/init.d/xdm enabled. The error in the failing log (using xdm.service) that seems to be the start of the problem is this (drmGetBusid fails, but works fine in the second case below using /etc/init.d/xdm):
103.855] drmOpenDevice: node name is /dev/dri/card0
103.855] drmOpenDevice: open result is 8, (OK)
103.855] drmOpenByBusid: Searching for BusID pci:0000:02:00.0
103.855] drmOpenDevice: node name is /dev/dri/card0
103.855] drmOpenDevice: open result is 8, (OK)
103.855] drmOpenByBusid: drmOpenMinor returns 8
103.855] drmOpenByBusid: Interface 1.4 failed, trying 1.1
103.855] drmOpenByBusid: drmGetBusid reports
103.855] drmOpenDevice: node name is /dev/dri/card1
103.859] drmOpenByBusid: drmOpenMinor returns -1
In the successful case, using /etc/init.d/xdm, the log looks like:
16.346] drmOpenDevice: node name is /dev/dri/card0
16.346] drmOpenDevice: open result is 8, (OK)
16.346] drmOpenByBusid: Searching for BusID pci:0000:02:00.0
16.346] drmOpenDevice: node name is /dev/dri/card0
16.346] drmOpenDevice: open result is 8, (OK)
16.346] drmOpenByBusid: drmOpenMinor returns 8
16.346] drmOpenByBusid: drmGetBusid reports pci:0000:02:00.0
16.346] (II) [drm] nouveau interface version: 1.0.0
So, for some reason, when using xdm.service with systemd, the device is not being found correctly by the X server.
Hopefully this clarifies the scenario and the failure that I’m seeing.
Thanks