
Ich boote ein bestimmtes System von mir mit Ubuntu 9.10 von einer externen Festplatte. Ich bin mit dem Setup zufrieden und es funktioniert einwandfrei, ich möchte es jedoch so ändern, dass ich auswählen kann, welche Grafikkartentreiber während des Bootvorgangs geladen werden sollen. Insbesondere möchte ich zwischen folgenden Optionen wählen:
- proprietärer NVIDIA-Treiber
- proprietärer ATI-Treiber
- generischer Treiber
Wenn ich derzeit proprietäre Treiber verwende, boote ich nicht in X, lösche xorg.conf, starte gdm und konfiguriere das System mit Jockey neu (für Hardwaretreiber).
Welche Schritte wären erforderlich, um dies (halb-)automatisch zu machen und einen Neustart von X zu vermeiden?
Wo könnte man Beispiele für solche Skripte finden?
Antwort1
- Erstellen Sie für jeden Kernel drei verschiedene Grub-Einträge mit
driver1
,driver2
,driver3
als Optionen. - Erstellen Sie drei verschiedene xorg.conf (jede mit einem der drei Treiber) und benennen Sie sie
xorg.conf1
,xorg.conf2
,xorg.conf2
. - Schreiben Sie ein Initscript, das vor X ausgeführt wird und
/proc/cmdline
nachdriver1
,driver2
oderdriver3
und dann nach symbolischen Links suchtxorg.conf1
,xorg.conf2
oderxorg.conf2
nachxorg.conf
Ich habe in der Zeit vor xrandr etwas Ähnliches gemacht, um zwischen Dualhead- und Nicht-Dualhead-Bildschirmeinstellungen zu wechseln. Leider sind die Skripte und die Dokumentation längst verschwunden.
Mögliche Verbesserungen:
- udev-Regeln verwenden
- Lassen Sie das Initscript die aktuelle Grafikkarte automatisch erkennen
Antwort2
Sie könnten jederzeit ein Shell-Skript erstellen, das diesen Vorgang für Sie automatisiert.
Antwort3
Im Folgenden finden Sie einige Hinweise, wie Sie Ihr Ziel möglicherweise mit Grub erreichen können:
Antwort4
Erstellen Sie verschiedene Versionen Ihrer xorg.conf, je nachdem, was Sie möchten. Sagen Sie:
/etc/X11/xorg.conf.nvidia
/etc/X11/xorg.conf.ati
/etc/X11/xorg.conf.generic
Konfigurieren Sie dann mehrere Boot-Konfigurationen in /boot/grub/grub.cfg und fügen Sie in jede Zeile, in der der Kernel angegeben ist, einen anderen Kernel-Parameter ein (z. B. xconfig=myconfig). Irgendwo in der Art von:
menuentry "Ubuntu, Linux 2.6.31-17 nvidia" {
...
linux /vmlinuz-2.6.31-17 root=UUID=885a6a07-fd6c-4638-aa17-d38997d477e1 xconfig=nvidia ro single
...
}
menuentry "Ubuntu, Linux 2.6.31-17 ati" {
...
linux /vmlinuz-2.6.31-17 root=UUID=885a6a07-fd6c-4638-aa17-d38997d477e1 xconfig=ati ro single
...
}
menuentry "Ubuntu, Linux 2.6.31-17 generic" {
...
linux /vmlinuz-2.6.31-17 root=UUID=885a6a07-fd6c-4638-aa17-d38997d477e1 xconfig=generic ro single
...
}
Nicht erkannte Kernelparameter werden ignoriert, sind aber weiterhin in /proc/cmdline verfügbar. Auf dieser Grundlage können Sie ein kleines Shellskript schreiben, das die richtige Konfigurationsdatei auswählt:
#!/bin/bash
rm -f /etc/X11/xorg.conf
config=`cat /proc/cmdline |sed -e 's/.*xconfig=\([a-z]*\).*/\1/g'
ln -s /etc/X11/xonfig.conf.$config /etc/X11/xconfig.conf
Fügen Sie dies dann irgendwo in Ihre Startreihenfolge ein, bevor GDM startet.