
我正在使用 ubuntu 9.10 從外部硬碟啟動我的某個系統。我對設定感到滿意並且工作正常,但是我想修改它,以便我可以選擇在啟動時加載哪些顯示卡驅動程式。具體來說,我想選擇:
- nvidia 專有驅動程式
- ati 專有驅動程式
- 通用驅動程式
目前,如果我使用專有驅動程序,請不要啟動到 X,刪除 xorg.conf,啟動 gdm 並使用 jockey(針對硬體驅動程式)重新配置系統。
使這個(半)自動並避免重新啟動 X 的步驟是什麼?
在哪裡可以找到此類腳本的範例?
答案1
driver1
使用,driver2
, 作為選項為每個核心建立 3 個不同的 grub 條目driver3
。- 製作 3 個不同的 xorg.conf(每個包含三個驅動程式之一)並將它們命名為
xorg.conf1
,xorg.conf2
,xorg.conf2
。 - 編寫在 X 之前執行的 initscript,腳本先 grep
/proc/cmdline
fordriver1
、driver2
oderdriver3
,然後再執行 symlinksxorg.conf1
,xorg.conf2
或xorg.conf2
toxorg.conf
在 xrandr 之前,我做過類似在雙頭和非雙頭螢幕設定之間切換的事情。不幸的是,腳本和文件早已不復存在。
可能的改進:
- 使用 udev 規則
- 讓initscript自動檢測目前顯示卡
答案2
您始終可以編寫一個 shell 腳本來自動執行該過程。
答案3
以下內容可能會提供一些提示,幫助您透過 grub 實現您想要的目標:
答案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 啟動之前將其放在啟動順序中的某個位置。