Macbook Pro에서 NVIDIA 그래픽을 끄는 방법은 무엇입니까?

Macbook Pro에서 NVIDIA 그래픽을 끄는 방법은 무엇입니까?

저는 NVIDIA 그래픽과 Intel 통합 그래픽을 갖춘 2010년형 Macbook Pro를 가지고 있습니다.

$ 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 통합 그래픽만 사용하고 싶습니다. Ubuntu를 설치한 후 사무실 작업을 할 때 배터리가 최대 1,5시간 동안만 유지되기 때문입니다. Mac OS에서 비슷한 작업을 할 때 약 3시간 정도 유지되었습니다.

나는 이를 수행하는 두 가지 방법을 읽었습니다.

  1. BIOS에서 개별 그래픽 장치 끄기
  2. 또는 nvidia-settings.
  3. 업데이트됨:OS X로 부팅하고 2.2.1에서 통합 그래픽을 강제 적용합니다 gfxCardStatus.

Macbook에는 BIOS가 없기 때문에 첫 번째 방법이 작동하지 않습니다. 위에서 설명한 대로 전용 드라이버를 설치할 수 없기 때문에 두 번째 방법도 작동하지 않습니다.

언급할 가치가 있는 어떠한 조정도 없이 기본적으로 Ubuntu 14.04를 새로 설치한 것입니다.

업데이트:많은 문서를 읽은 후 이것이 Macbook Pro에서 방법 3을 사용해야만 가능하다는 결론에 도달했습니다.~ 해야 하다아직 OS X가 설치되어 있는데 아직 설치하지 않았습니다! 이건 정말 엉뚱한 일이야, 왜냐면 내가 그랬다는 뜻이거든NVIDIA GPU를 끌 기회가 없습니다.

답변1

나는 당신과 똑같은 컴퓨터를 가지고 있습니다. 내가 고안한 것은 efi 수준에서 개별 그래픽을 비활성화하기 위해 grub에 몇 줄을 추가하는 것입니다.

$ 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/"

insmod gzio방금 와 사이에 outb 줄을 추가했습니다 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는 외부 디스플레이 출력을 구동할 수 있지만 오디오는 없습니다.

macOS를 부팅하지 않는 한 igpu를 비활성화하는 Mac이라고 설명하신 내용은 2010년 이후에 만들어진 모든 Mac이나 Sandy Bridge 칩 이상이 탑재된 모든 Mac에 적용됩니다. (2010=nehalem, 1세대 45nm.) apple_set_os.efi 트릭은 2011년 이전에는 작동하지 않습니다. (2011년 이전에는 efi로 부팅된 모든 것이 macOS와 똑같이 작동했습니다. efi는 OS를 확인하지 않았습니다. 기본적으로 부팅되어 통합 그래픽을 활성화했습니다. igpu가 비활성화된 OS를 부팅하는 유일한 방법은 레거시 부팅이었습니다. 우리는 이를 수행하지 않습니다. 실행해 보았더니 apple_set_os 프로토콜을 찾을 수 없다고 인쇄됩니다. 저는 16.04.3을 안정적으로 실행하고 있으며 컴퓨터를 충돌 없이 사용할 수 있다면 정말 좋은 경험입니다.

nvidia 독점 드라이버 정보: outb 0x750 없이 Dolphin-emu 및 DRI_PRIME=1 부팅으로 일부 OpenGL 테스트를 수행하여 dGPU의 lvds 디스플레이 연결을 비활성화하고 렌더링에 헤드리스를 사용할 수 있도록 남겨두었습니다. Nouveau와 Proprietary는 거의 동일한 성능을 가지고 있습니다. (실제로 여기서 대부분의 엣지 케이스는 nouveau가 승리했습니다.) NV50/Tesla 아키텍처는 아마도 nouveau가 가장 잘 지원하는 아키텍처일 것입니다. 그러므로 나는 실제로 누보에 머물 것을 권장합니다.

마지막으로 부팅 시 인텔 그래픽을 영구적으로 활성화하려면(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

이는 해킹이므로 소스를 주의 깊게 읽어야 하지만 다음과 같은 경우 도움이 될 수 있습니다.

MacOS가 아닌 다른 것이 부팅되면 Macbook은 인텔 온보드 그래픽을 비활성화합니다. 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

관련 정보