20.10.2012
by Esa Turtiainen
tags: Linux GPU Bitcoin

Installing a commercial GPU driver to Linux is always at least exciting.

Once again, some automatic updated clashed with the manual ATI Radeon Catalyst driver installation and my system did not boot. I need fresh drivers to do some Bitcoin mining.

I re-installed all the X11 and GDM packages I was aware of and went through every configuration file that I found, but still the system did not boot (GDM crashed because of some GLX problem).

I ended up making re-install (that luckily left my /home as is).

But here is a nice picture what I learened of the Fedora 17 boot sequence. There are a huge number of configuration files that are just old legacy. The files in the picture are those that really affect the standard boot. Some parts of it are also Fedora 17 -only.

Fedora 17 boot sequence

A part of the Fedora boot sequence is hidden now in the binary files in /usr/lib/systemd/systemd-. That is potentially **a bad thing*. The boot sequence has always been in shell scripts that use documented standard commands. Now you can not debug the boot sequence any more because the system calls are made in hidden undocumented parts of the boot.

Fedora 17 also removes /lib — it is just a symlink to the /usr/lib. This means that the system does not — even in theory — boot without /usr. They say that the boot is in initramdisk, anyhow. Maybe, but this means that all the read-only system files are in a partition called /usr. usr=User! The long history has caused 180 degree turn in usage of the partition. You should really consider changing the name! My suggestion: /ro, read-only. Or maybe /sys.

Traditionally Red Hat related systems have /etc/sysconfig that configures the system. The default boot sequence could be altered using those configuration files, but by default those configuration files are missing in Fedora 17. You can add /etc/sysconfig/something e.g. to use KDM instead of GDM, but that file is missing by default. It seems that /etc/sysconfig is phasing out. That is nice, because it makes the system more compatible with Debian-style systems (Ubuntu, Mint).

The whole philosophy of X11 boot is problematic. It is like programming with GOTO. System boot goes to X11 directory to ask for preferred DM, then jumps GDM "subsystem", that pins one init file from /etc/X11 again, does there things that are partly common to non-GDM-init and then jumps to gnome-session without control of GDM. The system desperately needs some clean-up. One main routine calling subsystem functions in their own directory (X11, GDM, Gnome-session, Gnome-Shell) with documented API without jumps between subsystems would be a good start.

PS. Some time ago I tried to make a minimal Linux installation. It is easy to make a Linux kernel including all the drivers that is much less than 1 MB. The obligatory minimal C library is much bigger: 2 MB. Compared to that, however, the commercial 3D GPU dynamically loaded Linux kernel drivers are hilariously big: ~4 MB. And that is just the kernel part.

PPS. If somebody wants to continue the picture, you can get the Inkscape SVGA original from me. Picture is in the public domain.

PPPS. The details of X11 initialization, location of X11 drivers and extensions are missing from the picture because of the space. The picture now concentrates on little "higher level".