Por acaso tenho exatamente o mesmo computador que você. O que eu criei é adicionar algumas linhas ao grub para desabilitar os gráficos discretos no nível do 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/"
Acabei de adicionar as linhas de saída entre insmod gzio
e linux_gfx_mode
. Para referência:
outb 0x728 1 # Switch select
outb 0x710 2 # Switch display
outb 0x740 2 # Switch DDC
outb 0x750 0 # Power down discrete graphics
Isso desativa os gráficos no nível de link do pcie, de tal forma que desaparece do sistema. Ao contrário do macOS, o IronLake Intel HD Graphics pode controlar a saída do monitor externo, mas sem áudio.
O que você descreveu como o mac que desabilita o igpu, a menos que a inicialização do macOS seja válida para qualquer Mac feito após 2010, ou qualquer Mac com um chip Sandy Bridge ou posterior. (2010 = nehalem, 1ª geração 45nm.) O truque apple_set_os.efi não funciona antes de 2011 (pré-2011, na época, qualquer coisa inicializada com efi se comportaria exatamente como macOS, efi não checava o sistema operacional, apenas que foi inicializado nativamente, habilitando os gráficos integrados e a única maneira de inicializar um sistema operacional com o igpu desativado foi a inicialização herdada, o que não estamos fazendo) Eu tentei executá-lo e imprime que o protocolo apple_set_os não foi encontrado. Eu corro 16.04.3 estável e é uma experiência tão boa quando você pode usar o computador sem travar.
Sobre os drivers proprietários da nvidia: Eu fiz alguns testes com o dolphin-emu e DRI_PRIME = 1 inicializando sem o outb 0x750, portanto desabilitando a conexão do dGPU ao display do lvds, mas deixando-o disponível para renderização. O Nouveau e o proprietário possuem quase o mesmo desempenho. (na verdade, a maioria dos casos de borda aqui foram vencidos pelo nouveau) A arquitetura NV50 / Tesla é talvez a melhor suportada pelo Nouveau. Portanto, eu recomendaria ficar no nouveau.
Por fim, para ativar permanentemente os gráficos intel na inicialização (contanto que as variáveis nvram não sejam apagadas), você pode fazer isso a partir do 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'
Você também pode realizar a mesma coisa do macOS:
sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00