
私は NVIDIA グラフィックスおよび Intel 統合グラフィックスを搭載した 2010 年製の Macbook Pro を持っています。
$ lspci|grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 12)
01:00.0 VGA compatible controller: NVIDIA Corporation GT216M [GeForce GT 330M] (rev a2)
独自の NVIDIA ドライバー (340.76) をインストールすると、X サーバーを起動したときにシステムがハングします。私は言われましたこれは、NVIDIA ドライバーが Macbook の特殊なハードウェア特性をサポートしていないためです。
Ubuntu をインストールしてから、オフィス ワークを行うとバッテリーが約 1.5 時間しか持たなくなったため、NVIDIA グラフィックスを完全にオフにして、代わりに Intel 統合グラフィックスのみを使用したいと思います。同様の作業を行うと、Mac OS で約 3 時間持ちました。
私はそれを実行する 2 つの方法について読んだことがあります:
- BIOSでディスクリートグラフィックデバイスをオフにする
- または統合グラフィックスに切り替えます
nvidia-settings
。 - 更新しました:OS X を起動し、2.2.1 で統合グラフィックスを強制します
gfxCardStatus
。
Macbook には BIOS がないので、最初の方法は機能しません。2 番目の方法も、上記のように専用ドライバーをインストールできないので機能しません。
これは基本的に、特筆すべき調整のない Ubuntu 14.04 の新規インストールです。
アップデート:多くのドキュメントを読んだ後、私はこれがMacbook Proで方法3を使用することでのみ可能であるという結論に達しました。しなければならないまだOS Xがインストールされていない!これは本当にひどい。なぜなら、NVIDIA GPUをオフにする機会がない。
答え1
私もたまたまあなたと同じコンピューターを持っています。私が考案したのは、GRUB に数行追加して、EFI レベルでディスクリート グラフィックスを無効にすることです。
$ cat /etc/grub.d/10_linux
# Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
echo " load_video" | sed "s/^/$submenu_indentation/"
else
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
echo " load_video" | sed "s/^/$submenu_indentation/"
fi
fi
if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
echo " gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
fi
echo " outb 0x728 1" | sed "s/^/$submenu_indentation/"
echo " outb 0x710 2" | sed "s/^/$submenu_indentation/"
echo " outb 0x740 2" | sed "s/^/$submenu_indentation/"
echo " outb 0x750 0" | sed "s/^/$submenu_indentation/"
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
echo " if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi" | sed "s/^/$submenu_indentation/"
insmod gzio
との間にアウトラインを追加しましたlinux_gfx_mode
。参考までに:
outb 0x728 1 # Switch select
outb 0x710 2 # Switch display
outb 0x740 2 # Switch DDC
outb 0x750 0 # Power down discrete graphics
これにより、PCIe リンク レベルでグラフィックスが無効になり、システムから消えます。macOS とは異なり、IronLake Intel HD Graphics は外部ディスプレイ出力を駆動できますが、オーディオは駆動できません。
macOS を起動しない限り Mac が IGPU を無効にすると説明されていることは、2010 年以降に製造された Mac、または Sandy Bridge チップ以降を搭載した Mac に当てはまります (2010 = Nehalem、第 1 世代 45nm)。apple_set_os.efi トリックは 2011 年より前では機能しません (2011 年より前の当時、efi で起動されたものはすべて macOS とまったく同じように動作し、efi は OS をチェックせず、ネイティブで起動され、統合グラフィックスが有効になっていることを確認していました。また、IGPU を無効にして OS を起動する唯一の方法はレガシー ブートでしたが、これは行いません)。実行してみましたが、apple_set_os プロトコルが見つからないというメッセージが表示されます。私は 16.04.3 の安定版を実行していますが、クラッシュすることなくコンピューターを使用できるようになると、とても快適な体験になります。
nvidia のプロプライエタリ ドライバーについて: dolphin-emu と DRI_PRIME=1 で outb 0x750 なしで起動して OpenGL テストをいくつか実行しました。これにより、dGPU の lvds ディスプレイへの接続が無効になりますが、レンダリング用にヘッドレスで使用可能になります。Nouveau とプロプライエタリのパフォーマンスはほぼ同じです。(実際、ここでのエッジ ケースの大部分は nouveau が勝ちました) NV50/Tesla アーキテクチャは、おそらく nouveau でサポートされているアーキテクチャです。したがって、私は nouveau を使い続けることをお勧めします。
最後に、起動時に Intel グラフィックスを永続的に有効にするには (NVRAM 変数が消去されない限り)、Linux から次の操作を実行します。
mount -t efivarfs rw /sys/firmware/efi/efivars/ # make sure efi is mounted
sudo bash -c 'printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9'
macOS からもまったく同じことを実現できます。
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
答え2
このアダプタの正しいドライバは nvidia-340 です。次の方法でインストールできます。
sudo apt-get install nvidia-340 nvidia-prime
答え3
これはハックであり、ソースを注意深く読む必要がありますが、おそらくこれが役立つでしょう:
MacBook は、MacOS 以外が起動されると、Intel オンボード グラフィックを無効にします。efi にファイルを追加し、grub オプションを追加してチェーンロードすると、efi に MacOS を起動していると認識させ、起動中にすべてのハードウェアがアクティブになります。
バイナリefiファイルの最新バージョンを取得するには、https://github.com/0xbb/apple_set_os.efi/releases
マウントされたefiパーティションの新しいサブフォルダにコピーします。
mkdir /boot/efi/EFI/custom
cp apple_set_os.efi /boot/efi/EFI/custom
/etc/grub.d/40_custom に追加
search --no-floppy --set=root --label EFI
chainloader (${root})/EFI/custom/apple_set_os.efi
boot