Различные драйверы графических карт при загрузке с внешнего носителя

Различные драйверы графических карт при загрузке с внешнего носителя

Я загружаю определенную мою систему с Ubuntu 9.10 с внешнего HDD. Я доволен настройкой, и она отлично работает, однако я хотел бы изменить ее так, чтобы я мог выбирать, какие драйверы графической карты загружать во время загрузки. В частности, я хотел бы выбрать между:

  • фирменный драйвер nvidia
  • фирменный драйвер ati
  • универсальный драйвер

В настоящее время, если я использую проприетарные драйверы, то не загружайте X, удалите xorg.conf, запустите gdm и перенастройте систему с помощью jockey (для драйверов оборудования).

Какие шаги необходимо предпринять, чтобы сделать этот процесс (полу)автоматическим и избежать перезапуска X?

Где можно найти примеры таких сценариев?

решение1

  1. Создайте 3 разные записи grub для каждого ядра с параметрами driver1, driver2, .driver3
  2. Создайте 3 разных файла xorg.conf (каждый с одним из трех драйверов) и назовите их xorg.conf1, xorg.conf2, xorg.conf2.
  3. Напишите initscript, который выполняется перед X, который выполняет поиск /proc/cmdlineпо driver1, driver2oder driver3и затем создает символические ссылки xorg.conf1, xorg.conf2или xorg.conf2наxorg.conf

Я делал что-то похожее для переключения между двухголовым и не-двухголовым screensetup во времена до xrandr. К сожалению, скрипты и документация давно утеряны.

Возможные улучшения:

  • использовать udev-правила
  • позвольте initscript автоматически определить текущую видеокарту

решение2

Вы всегда можете создать скрипт, который автоматизирует этот процесс.

решение3

Ниже приведены некоторые подсказки относительно того, как можно достичь желаемого с помощью grub:

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

решение4

Создайте разные версии вашего xorg.conf на основе того, что вам нужно. Скажите:

/etc/X11/xorg.conf.nvidia
/etc/X11/xorg.conf.ati
/etc/X11/xorg.conf.generic

Затем настройте несколько конфигураций загрузки в /boot/grub/grub.cfg и поместите другой параметр ядра (например, xconfig=myconfig) в каждую строку, где указано ядро. Что-то вроде:

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
 ...
}

Параметры ядра, которые не распознаются, игнорируются, но все равно будут доступны в /proc/cmdline. На основе этого можно написать небольшой скрипт оболочки, который выбирает правильный файл конфигурации:

#!/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

Затем поместите это куда-нибудь в порядок загрузки, перед запуском gdm.

Связанный контент