從外部媒體啟動時的不同顯示卡驅動程式

從外部媒體啟動時的不同顯示卡驅動程式

我正在使用 ubuntu 9.10 從外部硬碟啟動我的某個系統。我對設定感到滿意並且工作正常,但是我想修改它,以便我可以選擇在啟動時加載哪些顯示卡驅動程式。具體來說,我想選擇:

  • nvidia 專有驅動程式
  • ati 專有驅動程式
  • 通用驅動程式

目前,如果我使用專有驅動程序,請不要啟動到 X,刪除 xorg.conf,啟動 gdm 並使用 jockey(針對硬體驅動程式)重新配置系統。

使這個(半)自動並避免重新啟動 X 的步驟是什麼?

在哪裡可以找到此類腳本的範例?

答案1

  1. driver1使用, driver2, 作為選項為每個核心建立 3 個不同的 grub 條目driver3
  2. 製作 3 個不同的 xorg.conf(每個包含三個驅動程式之一)並將它們命名為xorg.conf1, xorg.conf2, xorg.conf2
  3. 編寫在 X 之前執行的 initscript,腳本先 grep /proc/cmdlinefor driver1driver2oder driver3,然後再執行 symlinks xorg.conf1xorg.conf2xorg.conf2toxorg.conf

在 xrandr 之前,我做過類似在雙頭和非雙頭螢幕設定之間切換的事情。不幸的是,腳本和文件早已不復存在。

可能的改進:

  • 使用 udev 規則
  • 讓initscript自動檢測目前顯示卡

答案2

您始終可以編寫一個 shell 腳本來自動執行該過程。

答案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 中仍然可用。基於此,您可以編寫一個小的 shell 腳本來選擇正確的設定檔:

#!/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 啟動之前將其放在啟動順序中的某個位置。

相關內容