After migrating my ArchLinux from sysvinit to systemd, I’ve noticed my X screen to be at tty1 in stead of the usual tty7. At that point, I didn’t realise the consequences of this, until this morning. Yesterday I’ve run updates in my system, and this morning, the GUI wouldn’t come up. It turned out to be an Xorg problem. However, in the old situation, I would simply see a login prompt on tty1. But since tty1 would now turn into the X screen, all there is to see are some messages that appeared during boot, and then nothing, the system appears to hang, until I switch to another tty, where I see my usual login prompt.

The problem, the nvidia driver updated to nvidia 310.19-2. In the log messages appears

[ 10.500692] nvidia: module license ‘NVIDIA’ taints kernel.
[ 10.500701] Disabling lock debugging due to kernel taint
[ 10.536285] NVRM: The NVIDIA GeForce 6200 GPU installed in this system is
NVRM: supported through the NVIDIA 304.xx Legacy drivers. Please
NVRM: visit http://www.nvidia.com/object/unix.html for more
NVRM: information. The 310.19 NVIDIA driver will ignore
NVRM: this GPU. Continuing probe…
[ 10.536462] NVRM: No NVIDIA graphics adapter found!

Therefore I am not so pleased with this Xorg on tty1 thing. I believe that in the old sysvinit situation I would even get a message about there being an X problem, but now, the system appears to hang.

Also… how to fix the problem? I could install nvidia-304xx, but why am I using the tainted nvidia driver anyways in stead of the open source nouveau? I believe this had something to do with the nivdia control panel, as back when I installed the machine, I wasn’t familiar with the xrandr tool to configure my TV-out correctly.

Removing the old driver doesn’t work due dependencies:

[root@blaatkonijn andre]# pacman -R nvidia nvidia-utils
checking dependencies…
error: failed to prepare transaction (could not satisfy dependencies)
:: freeglut: requires libgl
:: glu: requires libgl
:: gnome-session: requires libgl
:: lib32-libgl: requires libgl
:: libva: requires libgl
:: mesa: requires libgl
:: mplayer: requires libgl
:: qemu: requires libgl
:: qt: requires libgl
:: webkitgtk2: requires libgl
:: webkitgtk3: requires libgl
:: wxgtk: requires libgl
:: xorg-xdriinfo: requires libgl

Another approach, to tell pacman to install the nouveau driver won’t work either. Pacman detects a conflict, two packages providing the libgl, which caused the problem mentioned above.

[root@blaatkonijn andre]# pacman -S nouveau-dri xf86-video-nouveau
resolving dependencies…
looking for inter-conflicts…
:: libgl and nvidia-utils are in conflict. Remove nvidia-utils? [y/N] y
error: failed to prepare transaction (could not satisfy dependencies)
:: nvidia: requires nvidia-utils=310.19

So, the correct way to switch from nvidia to nouveau is to remove nvidia, but leave nvidia-utils, and then install the nouveau driver.

[root@blaatkonijn andre]# pacman -R nvidia
checking dependencies…

Targets (1): nvidia-310.19-2

Total Removed Size: 3,88 MiB

Do you want to remove these packages? [Y/n]
(1/1) removing nvidia [######################] 100%
[root@blaatkonijn andre]# pacman -S nouveau-dri xf86-video-nouveau
resolving dependencies…
looking for inter-conflicts…
:: libgl and nvidia-utils are in conflict. Remove nvidia-utils? [y/N] y

Targets (4): libgl-9.0.1-1 nvidia-utils-310.19-1 [removal]
nouveau-dri-9.0.1-1 xf86-video-nouveau-1.0.4-1

Total Download Size: 13,05 MiB
Total Installed Size: 49,96 MiB
Net Upgrade Size: -18,14 MiB

Proceed with installation? [Y/n] y
:: Retrieving packages from extra…
libgl-9.0.1-1-x86_64 4,8 MiB 423K/s 00:12 [######################] 100%
nouveau-dri-9.0.1-1… 8,1 MiB 423K/s 00:20 [######################] 100%
xf86-video-nouveau-… 69,8 KiB 426K/s 00:00 [######################] 100%
(3/3) checking package integrity [######################] 100%
(3/3) loading package files [######################] 100%
(3/3) checking for file conflicts [######################] 100%
(4/4) checking available disk space [######################] 100%
(1/1) removing nvidia-utils [######################] 100%
(1/3) installing libgl [######################] 100%
(2/3) installing nouveau-dri [######################] 100%
(3/3) installing xf86-video-nouveau [######################] 100%
==> make sure you use KernelModeSetting (KMS)
==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more

I think it feels kinda weird for the nvidia package to depend on nvidia-utils in stead of the other way around.

But… X still doesn’t start. This is because the nvidia driver was still listed in /etc/X11/xorg.conf. Removing the file, leaving X in auto configuration mode, solves the problem. However, it takes quite a while to lead, while there are no messages to my console during that time. I suppose this is some kind of configuration issue. Shutdown also appears to hang, but it could also be I just have to waaaaaait a little longer.

Just after getting my desktop running again for a few days, it seems it’s causing me troubles again. But I guess I’ll have to look at them another time. I’ve got to spend some time on my study, I’ve got a few papers to read.

edit: Even though the login screen comes up, after entering password, it doesn’t start my desktop environment. This seems to be related to an issue with dbus. Starting my X session manually using xinit works fine. Buuuut… I am procrastinating again, I should be reading papers.