Unterschiedliche Grafikkartentreiber beim Booten von externen Medien

Unterschiedliche Grafikkartentreiber beim Booten von externen Medien

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

  1. Erstellen Sie für jeden Kernel drei verschiedene Grub-Einträge mit driver1, driver2, driver3als Optionen.
  2. Erstellen Sie drei verschiedene xorg.conf (jede mit einem der drei Treiber) und benennen Sie sie xorg.conf1, xorg.conf2, xorg.conf2.
  3. Schreiben Sie ein Initscript, das vor X ausgeführt wird und /proc/cmdlinenach driver1, driver2oder driver3und dann nach symbolischen Links sucht xorg.conf1, xorg.conf2oder xorg.conf2nachxorg.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:

http://en.gentoo-wiki.com/wiki/Framebuffer

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.

verwandte Informationen