web-dev-qa-db-ja.com

再起動せずにnvidia-currentとnouveauを切り替えますか?

NvidiaのBLOBとNouveauビデオドライバーをオンザフライで切り替えることは可能ですか?

私はできる必要があると思う:

  1. [✓] nvidiaをアンロードします
  2. [✓] nouveauをアンロードします
  3. [✕] nouveau *をアンロードした後、コンソールを復元します
  4. [✓] xorg.confファイルを交換します
  5. [✓]ブラックリストの世話をします
  6. [✓] libglx.soを扱う

*)#nouveauのメンバーと少し話をした後、現在のUbuntuセットアップ(組み込みvesafb)では難しいか、不可能にさえ思える。私はそれをuvesafbで動作させようとしていますが、今のところ答えのスクリプトは私が探していたものを実行します。

23
htorque

ドライバを切り替える2つのスクリプト、xorg.conf、ブラックリストとlibglxの世話をしているので、答えは「はい、可能です」です。

ブラックリストは、/etc/modprobe.d/またはblacklist nvidiaのいずれかを含むblacklist nouveauの1つのファイルで機能します。また、/lib/nvidia-current/modprobe.confをダミーに置き換えました。そうしないと、nvidiaドライバーは、常に/etc/modprobe.d/にnouveauをブラックリスト化するリンクを作成します。

nouveauへの切り替え:

 #!/bin/bash
 stop gdm

 rmmod nvidia

 sed -i "s/nouveau/nvidia/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

 update-alternatives --set gl_conf /usr/lib/mesa/ld.so.conf
 ldconfig

 modprobe nouveau

 cp /etc/X11/xorg.conf{.nouveau,}

 start gdm

それを実行した後、nouveauが実行されており、作業コンソール(nouveaufb)があります。

nvidiaへの切り替え:

#!/bin/bash
stop gdm

echo 0 > /sys/class/vtconsole/vtcon1/bind
rmmod nouveau
rmmod ttm
rmmod drm_kms_helper
rmmod drm

sed -i "s/nvidia/nouveau/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

update-alternatives --set gl_conf /usr/lib/nvidia-current/ld.so.conf
ldconfig

modprobe nvidia-current

cp /etc/X11/xorg.conf{.nvidia,}

start gdm

→Nvidiaドライバーは機能していますが、問題があります。nouveauドライバーをアンロードした後、コンソールは使用できません。リセットするか、別のフレームバッファをロードする方法が必要ですが、vesafbはカーネルにコンパイルされているため、どうすればよいかわかりません。

11
htorque

Nouvouドライバーのカーネルモード設定とnvidiaが設定できないだけでなく、nvidiaドライバーはハッキングされたxorgライブラリを使用しているため、Intelドライバーを必要とするマシンで同じインストールを使用することさえ問題になります。 (逆さまの要素のバグと質問を参照)

http://nouveau.freedesktop.org/wiki/KernelModeSetting/ 実行の提案/ etc/init.d/consolefont restart nouevauをrmmod-ingした後、テキストモードを復元します。最近のシステムではconsole-fontに名前が変更されており、Ubuntu 13.10ではこの方法で呼び出すことはできませんが、次のように呼び出すことに注意してください:service console-font restart

また、常に機能するとは限りません。場合によっては、Xを開始する(service lightdm start-または使用しているDM)がgfxモードを開始し、動作するvt1への切り替え時のテキストモード(ctrl-alt-f1)。

(nvidiaドライバーをライブCDセッションにインストールするためにこれを使用します)

0
David Balažic