外部メディアから起動する際のグラフィックカードのドライバーの違い

外部メディアから起動する際のグラフィックカードのドライバーの違い

私は、Ubuntu 9.10 を搭載した特定のシステムを外付け HDD から起動しています。設定には満足しており、問題なく動作していますが、起動時にロードするグラフィック カード ドライバーを選択できるように変更したいと考えています。具体的には、次の中から選択したいと考えています。

  • NVIDIA 独自ドライバ
  • ATI 独自ドライバ
  • 汎用ドライバー

現在、独自のドライバーを使用している場合は、X を起動せず、xorg.conf を削除し、gdm を起動し、jockey (ハードウェア ドライバー用) を使用してシステムを再構成します。

これを(半)自動化し、X の再起動を回避する手順は何でしょうか?

このようなスクリプトの例はどこで見つけることができますか?

答え1

  1. オプションとして、、 を使用してdriver1、カーネルごとに 3 つの異なる grub エントリを作成します。driver2driver3
  2. 3 つの異なる xorg.conf (それぞれ 3 つのドライバーのいずれかを使用) を作成し、それぞれにxorg.conf1xorg.conf2、 という名前を付けますxorg.conf2
  3. /proc/cmdlineXの前に実行されdriver1、、driver2またはをgrepしてから、、またはにdriver3シンボリックリンクするinitscriptを記述します。xorg.conf1xorg.conf2xorg.conf2xorg.conf

私は、xrandr が登場する前の時代に、デュアルヘッドと非デュアルヘッドのスクリーン設定を切り替える同様の操作を実行しました。残念ながら、スクリプトとドキュメントは消えてしまいました。

改善の可能性がある点:

  • udevルールを使用する
  • initscriptに現在のグラフィックカードを自動検出させる

答え2

そのプロセスを自動化するシェル スクリプトをいつでも作成できます。

答え3

以下は、GRUB を介して目的を達成するためのヒントになるかもしれません。

http://en.gentoo-wiki.com/wiki/フレームバッファ

答え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 が起動する前のブート順序のどこかにこれを配置します。

関連情報