
У меня Macbook Pro 2010 года выпуска с графикой NVIDIA и интегрированной графикой 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)
При установке фирменного драйвера NVIDIA (340.76) система зависает при запуске X-сервера.мне сказаличто это происходит потому, что драйвер NVIDIA не поддерживает специальные аппаратные характеристики Macbook.
Поэтому я хотел бы полностью отключить графику NVIDIA и использовать только интегрированную графику Intel, потому что батарея держит только ~1,5 часа при офисной работе с тех пор, как я установил Ubuntu. С Mac OS при выполнении аналогичной работы она держалась около 3 часов.
Я читал о двух способах сделать это:
- Отключение дискретной графики в BIOS
- или переход на интегрированную графику в
nvidia-settings
. - ОБНОВЛЕНО:Загрузка OS X и принудительное включение интегрированной графики в
gfxCardStatus
2.2.1.
Первый способ мне не подойдет, так как на Macbook нет BIOS. Второй способ тоже не подойдет, так как я не могу установить фирменные драйверы, как описано выше.
По сути, это новая версия Ubuntu 14.04 без каких-либо изменений, о которых стоило бы упомянуть.
ОБНОВЛЯТЬ:Прочитав кучу документации, я пришел к выводу, что это возможно только при использовании метода 3 на Macbook Pro, т.е.долженвсе еще установлена OS X, которой у меня нет! Это действительно хреново, потому что это означает, что у меня естьнет возможности отключить графический процессор NVIDIA.
решение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/"
Я просто добавил строки outb между 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-link, так что она исчезает из системы. В отличие от macOS, IronLake Intel HD Graphics может управлять внешним дисплеем, но без звука.
То, что вы описали как отключение igpu на Mac, если не загружается macOS, справедливо для любого Mac, выпущенного после 2010 года, или любого Mac с чипом Sandy Bridge или более поздней версии. (2010 = nehalem, 1-е поколение 45 нм.) Трюк с apple_set_os.efi не работал до 2011 года (до 2011 года, в то время, все, что загружалось с помощью efi, вело себя точно так же, как macOS, efi не проверял ОС, просто она загружалась изначально, включая интегрированную графику. И единственный способ загрузить ОС с отключенным igpu — это устаревшая загрузка, чего мы не делаем). Я попробовал запустить его, и он выдал, что протокол apple_set_os не найден. Я использую стабильную версию 16.04.3, и это такой приятный опыт, когда вы можете использовать компьютер без сбоев.
О проприетарных драйверах nvidia: я провел некоторое тестирование opengl с dolphin-emu и DRI_PRIME=1, загружаясь без outb 0x750, тем самым отключив подключение 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 отключает встроенную графику Intel, если загружается что-то еще, кроме MacOS. Вы можете добавить файл в 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
Источник: https://github.com/0xbb/apple_set_os.efi