У меня есть MacbookPro 5,1/5,2/5,3, который идет с двумя видеокартами, и по умолчанию я добираюсь 9600M GT, который использует больше батареи что другая. Я понятия не имею, как деактивировать его и активировать второй.
Больше деталей после ответа Bruno:
Я использую Ubuntu:
Я установил РЕМОНТ 0.14, и GRUB2 EFI64
Я изменил запись на файле/boot/grub/grub.cfg добавление
outb 0x750 0
даже при том, что наверху файла это говорит:
DO NOT EDIT THIS FILE
It is automatically generated by grub-mkconfig using templates
from /etc/grub.d and settings from /etc/default/grub
Я сохранил файл, начальную загрузку, выбираю запись, и затем у меня есть черный экран, и ничего больше не происходит.
Я попробовал https://help.ubuntu.com/community/UEFIBooting#Selecting_the_graphic_card также с тем же результатом.
Спасибо.
Чтобы отключить Nvidia 9600M GT, необходимо добавить следующее в пункт меню grub outb 750x0
, а именно:
menuentry 'Ubuntu, with Linux 3.0.0-12-generic' --class ubuntu --class gnu-linux --class gnu --class os {
outb 0x750 0
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt5)'
search --no-floppy --fs-uuid --set=root bc495raf-515r-4r2b-b3de-0ec679a7303a
linux /boot/vmlinuz-3.0.0-12-generic root=UUID=bc495raf-515r-4r2b- b3de-0ec679a7303a ro hpet=force
initrd /boot/initrd.img-3.0.0-12-generic
}
Дополнительно для отключения питания после возобновления после приостановки:
[ 1111] При возобновлении дискретный графический контроллер будет включен и активен. Нам нужно выключить его и вернуться к встроенному графическому процессору.
Это можно сделать с помощью очень простой маленькой программы:
#include <stdio.h>
#include <sys/io.h>
#define PORT_SWITCH_DISPLAY 0x710
#define PORT_SWITCH_SELECT 0x728
#define PORT_SWITCH_DDC 0x740
#define PORT_DISCRETE_POWER 0x750
static int gmux_switch_to_igd()
{
outb(1, PORT_SWITCH_SELECT);
outb(2, PORT_SWITCH_DISPLAY);
outb(2, PORT_SWITCH_DDC);
return 0;
}
static void mbp_gpu_power(int state)
{
outb(state, PORT_DISCRETE_POWER);
}
int main(int argc, char **argv)
{
if (iopl(3) < 0) {
perror ("No IO permissions");
return 1;
}
mbp_gpu_power(0);
gmux_switch_to_igd();
return 0;
}
Сохраните это в файле с именем igd.c. Скомпилируйте его с помощью gcc -O2 igd.c -o igd
. Это создаст исполняемый файл с именем igd
. Выполненный с привилегиями суперпользователя, он отключит дискретный контроллер и переключится на встроенный контроллер.
Теперь нам нужно выполнить это в резюме. Создайте файл с именем /etc/pm/sleep.d/10igd
. Он должен содержать:
#!/bin/sh
#
/path/to/igd
Где / путь / к - это путь, куда вы помещаете исполняемый файл igd
, который мы создали на предыдущем шаге.
chmod +x /etc/pm/sleep.d/10igd
Этот файл будет выполнен при приостановке и возобновлении. Если все сделано правильно, сценарий 10igd проверит, является ли это приостановкой / возобновлением / заморозкой / оттаиванием, и будет выполнен только при необходимости. Как есть, он выполняется на всех из них. Ничего страшного, запускать его во время замораживания или приостановки не повредит.
У меня все работает на моем mbp5,1: звук, подсветка ЖК-дисплея, подсветка клавиатуры, низкие вентиляторы (после отключения 9600M GT), Apple как ярлык (CMD + C для копирования), Flash (почти стабильно) .. Поэтому просто спросите, нужна ли вам дополнительная помощь