
私は、Ubuntu 9.10 を搭載した特定のシステムを外付け HDD から起動しています。設定には満足しており、問題なく動作していますが、起動時にロードするグラフィック カード ドライバーを選択できるように変更したいと考えています。具体的には、次の中から選択したいと考えています。
- NVIDIA 独自ドライバ
- ATI 独自ドライバ
- 汎用ドライバー
現在、独自のドライバーを使用している場合は、X を起動せず、xorg.conf を削除し、gdm を起動し、jockey (ハードウェア ドライバー用) を使用してシステムを再構成します。
これを(半)自動化し、X の再起動を回避する手順は何でしょうか?
このようなスクリプトの例はどこで見つけることができますか?
答え1
- オプションとして、、 を使用して
driver1
、カーネルごとに 3 つの異なる grub エントリを作成します。driver2
driver3
- 3 つの異なる xorg.conf (それぞれ 3 つのドライバーのいずれかを使用) を作成し、それぞれに
xorg.conf1
、xorg.conf2
、 という名前を付けますxorg.conf2
。 /proc/cmdline
Xの前に実行されdriver1
、、driver2
またはをgrepしてから、、またはにdriver3
シンボリックリンクするinitscriptを記述します。xorg.conf1
xorg.conf2
xorg.conf2
xorg.conf
私は、xrandr が登場する前の時代に、デュアルヘッドと非デュアルヘッドのスクリーン設定を切り替える同様の操作を実行しました。残念ながら、スクリプトとドキュメントは消えてしまいました。
改善の可能性がある点:
- udevルールを使用する
- initscriptに現在のグラフィックカードを自動検出させる
答え2
そのプロセスを自動化するシェル スクリプトをいつでも作成できます。
答え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 では引き続き使用できます。これに基づいて、正しい設定ファイルを選択する小さなシェル スクリプトを作成できます。
#!/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 が起動する前のブート順序のどこかにこれを配置します。