
Tengo una Macbook Pro del 2010 que tiene gráfica NVIDIA y gráfica integrada 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)
Cuando instalo el controlador NVIDIA propietario (340.76), el sistema se bloquea cuando inicio el servidor X.me han dichoEsto se debe a que el controlador NVIDIA no admite las características especiales de hardware de la Macbook.
Por lo tanto, me gustaría apagar los gráficos NVIDIA por completo y usar solo los gráficos integrados Intel, porque la batería solo dura aproximadamente 1,5 horas cuando hago trabajo de oficina desde que instalé Ubuntu. Se mantuvo durante aproximadamente 3 horas con Mac OS cuando se realizaba un trabajo similar.
He leído sobre dos formas de hacerlo:
- Apagar el dispositivo de gráficos discretos en el BIOS
- o cambiar a gráficos integrados en
nvidia-settings
. - ACTUALIZADO:Arrancando en OS X y forzando los gráficos integrados en
gfxCardStatus
2.2.1.
El primer método no me funcionará porque no hay BIOS en las Macbook. El segundo método tampoco funcionará porque no puedo instalar los controladores propietarios, como se describe anteriormente.
Es una instalación básicamente nueva de Ubuntu 14.04 sin ningún ajuste digno de mención.
ACTUALIZAR:Después de leer mucha documentación, llegué a la conclusión de que esto sólo es posible utilizando el método 3 en Macbook Pro, es decir, unodebe¡Todavía tengo OS X instalado, cosa que yo no tengo! Esto es realmente una mierda, porque significa que tengono hay posibilidad de apagar la GPU NVIDIA.
Respuesta1
Resulta que tengo exactamente la misma computadora que tú. Lo que ideé es agregar algunas líneas a grub para deshabilitar los gráficos discretos a nivel 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/"
Acabo de agregar las líneas outb entre insmod gzio
y linux_gfx_mode
. Para referencia:
outb 0x728 1 # Switch select
outb 0x710 2 # Switch display
outb 0x740 2 # Switch DDC
outb 0x750 0 # Power down discrete graphics
Esto desactiva los gráficos en el nivel pcie-link, de modo que desaparecen del sistema. A diferencia de macOS, IronLake Intel HD Graphics puede controlar la salida de la pantalla externa, pero sin audio.
Lo que usted describió como Mac que desactiva igpu a menos que arranque macOS es válido para cualquier Mac fabricado después de 2010, o cualquier Mac con un chip Sandy Bridge o posterior. (2010=nehalem, 1.ª generación 45 nm.) El truco apple_set_os.efi no funciona antes de 2011 (antes de 2011, en ese momento, cualquier cosa iniciada con efi se comportaba exactamente como macOS, efi no verificó el sistema operativo, solo que se inició de forma nativa, habilitando los gráficos integrados y la única forma de iniciar un sistema operativo con igpu deshabilitado fue mediante un inicio heredado, lo cual no estamos haciendo). Intenté ejecutarlo e imprime que no se encontró el protocolo apple_set_os. Ejecuto 16.04.3 estable y es una experiencia muy agradable una vez que puedes usar la computadora sin fallas.
Acerca de los controladores propietarios de nvidia: hice algunas pruebas de opengl con Dolphin-emu y DRI_PRIME=1 arrancando sin outb 0x750, por lo tanto deshabilité la conexión de la dGPU a la pantalla lvds, pero la dejé disponible sin cabeza para renderizar. Nouveau y propietario tienen casi el mismo rendimiento. (de hecho, la mayoría de los casos extremos aquí fueron ganados por nouveau) La arquitectura NV50/Tesla es quizás la mejor soportada por nouveau. Por lo tanto, recomendaría permanecer en el nouveau.
Por último, para habilitar los gráficos Intel en el arranque de forma permanente (siempre que no se borren las variables de nvram), puede hacer esto desde 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'
También puedes lograr exactamente lo mismo desde macOS:
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
Respuesta2
Para este adaptador el controlador correcto es nvidia-340. Se puede instalar de esta manera:
sudo apt-get install nvidia-340 nvidia-prime
Respuesta3
Este es un truco y debe leerse detenidamente en las fuentes, pero posiblemente esto le ayude:
Las Macbook desactivan el gráfico integrado de Intel si se inicia cualquier otra cosa que no sea MacOS. Puede agregar un archivo al efi y agregar una opción de grub para cargarlo en cadena y hacer que efi piense que está iniciando MacOS para que todo el hardware se active durante el inicio.
obtenga la última versión del archivo binario efi dehttps://github.com/0xbb/apple_set_os.efi/releases
cópielo a la partición efi montada en una nueva subcarpeta
mkdir /boot/efi/EFI/custom
cp apple_set_os.efi /boot/efi/EFI/custom
agregar a /etc/grub.d/40_custom
search --no-floppy --set=root --label EFI
chainloader (${root})/EFI/custom/apple_set_os.efi
boot