Ubuntu 14.10以降:はるかに簡単です。この回答と以下の私のコメントをご覧ください。
注:これはUbuntu 13.04でのみ機能します。13.10にはいくつかの違いがあります。
Optimus(「切り替え可能なグラフィックス」)を有効にして(リストのオプション3)、Ubuntu 13.04のThinkPad T430に2つの外部モニター(組み込みパネルに加えて)を接続できました。モニターはDVIインターフェイスを介して接続され、そのうちの1つが回転します。他のソリューションとは対照的に、すべてのモニターは同じウィンドウマネージャーに接続されているため、モニター間でウィンドウを自由に移動できます。これにより、切断されている場合はバッテリー寿命を延長し、接続されている場合は外部モニターを使用するという目標を達成します。
ここでの重要なアイデアは次のとおりです。
- 内部グラフィックアダプターは、実際に表示される画像(ビットマップ)の管理を担当します。
- デフォルトでは、すべてが内部グラフィックスアダプターでレンダリングされます
- GPU加速アプリケーションはディスクリートグラフィックアダプターを使用し、出力は内部グラフィックアダプターにコピーされます。
- 各外部モニターに対して、内部グラフィックアダプターは「仮想」ディスプレイを提供します
- 外部モニターへの出力は2番目のXサーバーを使用して行われ、「仮想」ディスプレイのコンテンツは常に2番目のXサーバーにコピーされます
他のソリューションに対する主な利点は、すべてのディスプレイが(一見)同じXセッションの一部であるため、ディスプレイ間でウィンドウを自由に移動できることです。
これまでのところ、パフォーマンスの低下は見られませんでした。
説明書
以下を行う必要があります。
- PPAからBumblebeeをインストールする
- カスタムIntelビデオドライバーをビルドしてインストールする
- 小さなプログラムをダウンロードしてコンパイルし、最後にインストールします
- 2つの構成ファイルを編集する
- 数回再起動する
ほとんどのアクションには、ターミナル、テキストエディター、およびルートアクセス(sudo
)が必要です。詳細な手順を以下に示します。
Bumblebeeをインストールする
手順の「基本セットアップ」セクションに従ってください。ルートとして実行すると、最後のコマンドが実際に再起動を開始します。
add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot
nouveauドライバーのみでbumblebeeを実行しようとしないでください。。私の経験からは、少なくともこの設定では機能しません。
検証
実行できるはずoptirun glxgears
です。
のパッチを適用したバージョンをインストールする xserver-xorg-video-intel
オプション1:PPAからインストールする(現在はUbuntu 13.04のみ)
ルートとして次を実行します。
add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel
オプション2:独自のパッケージをビルドしてインストールする
の最新のパッチを選択してくださいxserver-xorg-video-intel
。ファイルをクリックし、「未加工」ボタンをクリックして、ブラウザでURLをコピーします。執筆時点では、これはhttps://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patchでした。
sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb
検証(1)、両方のオプション
コマンド
apt-cache policy xserver-xorg-video-intel
パッチが適用されたバージョン(+virtual
サフィックス)と元のUbuntuバージョンが表示されます。
両方のオプションで13.04に必要
に以下を追加し、/etc/X11/xorg.conf
必要に応じて作成します。
Section "Device"
Identifier "intel"
Driver "intel"
Option "AccelMethod" "uxa"
Option "Virtuals" "2"
EndSection
検証(2)、両方のオプション用
再起動後、xrandr
ターミナルで実行します。出力には、2つの追加の仮想ディスプレイが表示されます。
スクリーンクローンをダウンロードしてビルドする
スクリーンクローンのpuetzkのフォークとその依存関係を取得し、コンパイルします。
sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make
検証
ファイルscreenclone
が存在し、実行可能です。(ただし、まだ実行されません。)
編集 xorg.conf.nvidia
テスト中
私のセットアップでは、ドッキングステーションの最初のDVIポートに接続されたランドスケープモニターと、2番目のDVIポートに接続されたポートレートモニターを想定しています。screencloneが配置されているディレクトリからターミナルで次のコマンドを実行し、必要に応じて調整します。
xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg
ディスプレイの回転を2回定義する必要があることに注意してください。xrandr
回転が必要ない場合は、2番目の呼び出しを省略できます(もちろん、--rotate left
最初の呼び出しでは)。
screenclone
Ctrl + C(これはを使用して再び前面に配置されています)で終了することによりfg
、ディスクリートグラフィックアダプターはシャットオフされます。これはで確認できcat /proc/acpi/bbswitch
ます。それでも、画面スペースは、現在切断されている2つのモニター用に予約されています。ノートパソコンのディスプレイのみに戻すには、次を使用します
xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off
掃除
(たとえば)screenclone
にあるディレクトリにコピーしますPATH
/usr/local/bin
bash
外部ディスプレイの起動とシャットダウンを自動化するスクリプトを作成します。このスクリプトは、起動時に外部ディスプレイをセットアップし、終了時にのみラップトップディスプレイに切り替えます(たとえば、Ctrl + Cを押すことにより)。
#!/bin/bash
set -m
xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg
別のオプション:スクリプトレットのコレクションには、2番目と3番目のモニターを有効または無効にする2 つのスクリプトextmon-start
とが含まれていますextmon-stop
。extmon-start
構成に合わせてスクリプトを編集します。
参照資料
私の答えは、主に次のリソースから得られます。