web-dev-qa-db-fra.com

Comment désactiver les graphiques NVIDIA sur Macbook Pro?

J'ai un Macbook Pro à partir de 2010 doté de graphiques NVIDIA et de graphiques agraphiques intégrés à Intel:

$ 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)

Lorsque j'installe le pilote propritaire NVIDIA (340.76), le système se bloque lorsque je démarre le serveur X. On m'a dit que c'est parce que le pilote NVIDIA ne prend pas en charge les caractéristiques matérielles spéciales du Macbook.

Je voudrais donc désactiver complètement les cartes graphiques NVIDIA et utiliser uniquement les cartes graphiques intégrées Intel, car la batterie ne tient que pendant environ 1,5 heure lorsque je travaille au bureau depuis que j'ai installé Ubuntu. Il a duré environ 3 heures avec Mac OS pour un travail similaire.

J'ai lu deux façons de le faire:

  1. Désactiver le périphérique graphique distinct dans le BIOS
  2. ou passer aux graphiques intégrés dans nvidia-settings.
  3. UPDATED: Démarrer sous OS X et forcer le graphique intégré dans gfxCardStatus 2.2.1.

La première méthode ne fonctionnera pas pour moi car il n'y a pas de BIOS sur les Macbooks. La deuxième méthode ne fonctionnera pas non plus, car je ne peux pas installer les pilotes de propriété, comme décrit ci-dessus.

C’est une installation fondamentalement nouvelle d’Ubuntu 14.04 sans aucun ajustement intéressant à mentionner.

UPDATE: Après avoir lu de nombreux documents, je suis parvenu à la conclusion que ceci n’était possible qu’en utilisant la méthode 3 sur Macbook Pro, c’est-à-dire un doit toujours avoir OS X installé, ce que je n'ai pas encore! C'est vraiment merdique, car cela signifie que je n'ai aucune chance d'éteindre le GPU NVIDIA .

2
theV0ID

J'ai le même ordinateur que vous. Ce que j’ai imaginé, c’est d’ajouter quelques lignes à grub pour désactiver les graphiques discrets au niveau 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/"

Je viens d'ajouter les lignes outb entre insmod gzio et linux_gfx_mode. Pour référence:

outb 0x728 1 # Switch select
outb 0x710 2 # Switch display
outb 0x740 2 # Switch DDC
outb 0x750 0 # Power down discrete graphics 

Cela désactive les graphiques au niveau de pcie-link, de sorte qu'ils disparaissent du système. Contrairement à macOS, l'IronLake Intel HD Graphics peut piloter la sortie de l'écran externe, mais sans audio.

Ce que vous avez décrit comme étant le mac désactivant igpu, à moins que le démarrage de macOS ne soit pas vrai, n’est pas valable pour tous les mac fabriqués après 2010, ou avec un processeur Sandy Bridge ou plus récent. (2010 = nehalem, 1ère génération 45nm.) L'astuce Apple_set_os.efi ne fonctionnait pas avant 2011 (avant 2011, à l'époque, tout ce qui avait été démarré avec efi se comporterait exactement comme macOS, qui n'a pas vérifié le système d'exploitation, mais a été démarré en mode natif, activant ainsi les graphiques intégrés, et le seul moyen de démarrer un système d’exploitation avec igpu désactivé était de procéder au démarrage hérité (ce que nous ne faisons pas), j’ai essayé de l’exécuter et indique que le protocole Apple_set_os n’était pas trouvé. Je suis stable 16.04.3 et c’est une expérience agréable à utiliser une fois que vous pouvez utiliser votre ordinateur sans aucun plantage.

À propos des pilotes propriétaires nvidia: j’ai fait quelques tests OpenGL avec dolphin-emu et DRI_PRIME = 1 sans démarrage de outb 0x750, désactivant donc la connexion de la dGPU à l’affichage lvds, tout en la laissant disponible sans tête pour le rendu. Nouveau et propriétaire ont presque les mêmes performances. (En fait, la majorité des cas Edge ont été remportés par le nouveau). L’architecture NV50/Tesla est peut-être la meilleure prise en charge par le nouveau. Par conséquent, je recommanderais effectivement de rester sur Nouveau.

Enfin, pour activer les graphiques intel au démarrage de façon permanente (tant que les variables nvram ne sont pas effacées), vous pouvez le faire depuis 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'

Vous pouvez également obtenir exactement la même chose avec macOS:

Sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
1
Daniel Rodriguez

Pour cet adaptateur, le pilote approprié est nvidia-340. Il peut être installé de cette façon:

Sudo apt-get install nvidia-340 nvidia-prime
0
Pilot6

Ceci est un hack et doit être lu attentivement dans les sources mais cela peut éventuellement vous aider:

Les Macbooks désactivent le graphique intel intégré si quelque chose d'autre que MacOS est démarré. Vous pouvez ajouter un fichier à l'efi et ajouter une option grub pour le charger en chaîne afin de permettre à l'efi de penser à son démarrage MacOS de sorte que tout le matériel soit activé au démarrage.

récupère la dernière version du fichier binaire efi auprès de https://github.com/0xbb/Apple_set_os.efi/releases

copiez-le sur la partition efi montée dans un nouveau sous-dossier

mkdir /boot/efi/EFI/custom
cp Apple_set_os.efi /boot/efi/EFI/custom

ajouter à /etc/grub.d/40_custom

search --no-floppy --set=root --label EFI
chainloader (${root})/EFI/custom/Apple_set_os.efi
boot

Source: https://github.com/0/0bb/Apple_set_os.efi

0
Mr.Gosh