NVIDIA-PRIME : 캔트 스위치를 인텔로 전환


10

gpu (gtx 1060)에서 igpu (Intel 530)로 전환 할 때마다 부팅 할 수 없습니다. 로딩 화면에 다음 메시지가 표시됩니다.

[실패] NVIDIA Persistence Daemon을 시작하지 못했습니다. 자세한 내용은 'systemctl status nvidia-persistenced.service'를 참조하십시오.

그러나 Nvidia GPU로 다시 전환하고 재부팅없이 일시적으로 igpu로 전환하면 부팅 할 수 있습니다. Kubuntu 16.10과 내부 랩탑 디스플레이 만 사용하고 있습니다. 그것이 내 igpu로 전환 할 때의 출력입니다.

sudo prime-select intel
Info: the current GL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: the current EGL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: selecting nvidia-378-prime for the intel profile
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

sudo prime-select nvidia
Info: the current GL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: the current EGL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: selecting nvidia-378 for the nvidia profile
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

lspci -k의 결과 | grep -EA2 'VGA | 3D'

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: CLEVO/KAPOK Computer HD Graphics 530
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060] (rev a1)
        Subsystem: CLEVO/KAPOK Computer Device 6a03
        Kernel driver in use: nvidia

나는이 문제를 일주일 이상 스스로 해결하려고했지만 무엇을 해야할지 전혀 알지 못했습니다. 내가 시도한 모든 것이 실패했습니다.

저 좀 도와 주 시겠어요?

업데이트 5.2.2017 :

오늘 다시 테스트 한 결과 인텔 GPU로 전환해도 375 및 378에서는 전혀 작동하지 않습니다. 로그 아웃하면 화면이 정지됩니다. 왜 한 번 작동 했습니까? 이전 드라이버를 삭제 한 후 모든 드라이버를 다시 설치 한 후 다시 부팅하지 않고 프라임 셀렉트 인텔을 사용하면 프라임 셀렉트가 프라임 프로파일을 업데이트하지 않습니다-> 기존의 비 NVIDIA 프로파일 중 하나를 선택합니다 (메사 프로파일) nvidia 대신) 작동합니다. 그러나 nvidia 프로파일로 전환하거나 재부팅하면 프라임 프로파일이 업데이트되어 더 이상 작동하지 않습니다. 그래서 인텔 GPU의 EGl 대안에 문제가 있다고 생각합니까? 불편을 끼쳐 드려 죄송합니다.

업데이트 12.2.2017 :

어제 nvidia-prime 소프트웨어를 수정하고 버그를 수정했습니다. 곧 수정 된 버전을 게시하고 (아마 다음 주에) 여기에 링크를 붙여 넣을 것이지만 여전히 문제가 발생합니다. 실행 후 PC를 종료하면 sudo prime-select intel:

ksmserver가 충돌합니다 (쿠분투를 사용하고 있습니다. 우분투에는 문제가 없을 것입니다)

-> PC가 완전히 종료되지 않고 Intel GPU의 이전 (잘못된) 업데이트 대안이 복원됩니다.

-> 부팅 할 수 없습니다.

그러나 sudo prime-select intel복구 모드에서 종료 후 실행하면 모든 것이 올바르게 작동하며 Intel GPU를 사용할 수 있습니다.

업데이트 17.2.2017 :

해결 방법을 게시 했는데도 공식 리포지토리에서 버그를 수정하려고합니다. 그러나 이것은 아마도 업데이트 대안의 버그 일 것이므로 다음에는 버그 보고서를 게시해야합니다.

그 동안 내 해결 방법을 즐기십시오! 나는 그것이 당신에게도 효과가 있기를 바랍니다. 질문이 있으면 의견을 남겨주세요.

업데이트 26.2.2017

@whizzzkid가 지적했듯이 nvidia 그래픽 카드는 패치를 적용한 후에도 여전히 활성 상태입니다. 그러나 오늘이 문제를 해결할 수있었습니다. 다음 주에 두 번째 패치를 포함하도록 답변을 업데이트 할 것입니다. 내가 실행 한 테스트는 다음과 같습니다.

엔비디아 : 43-45W

인텔 (Nvidia 켜짐) : 29-31W

인텔 (nvidia 꺼짐) : 15-17W


질문을 편집하고 lspci -k | grep -EA2 'VGA|3D' 터미널 명령의 출력을 추가하십시오 .
Pilot6

오, 나는 10xx m가 모바일 인 경우에도 결국 에는 가지고 있지 않다는 것을 알았습니다 .
Pilot6

아마 nvidia-prime이것들을 아직 지원하지 않습니다.
Pilot6

흥미로운 점은 재부팅하지 않는 한 작동한다는 것입니다. 로그 아웃하고 다시 로그인하면 igpu를 사용할 수 있습니다. 그러나 재부팅하자마자 더 이상 작동하지 않습니다. 그리고 Nvidia GPU는 작동하며 드라이버가 지원합니다.
C11235

1
전력 사용량을 모니터링하기 위해 powertop을 사용했습니다. 배터리를 전원으로 사용하는 경우에만 전력 소비량을 표시합니다. 자세한 내용 은이 질문 또는 해당 매뉴얼 페이지 를 참조하십시오.
C11235

답변:


3

버그에 대한 수정 / 해결 방법은 다음과 같습니다.

nvidia-prime 대신 Bumblebee를 사용하려면 아래 @whizzzkid에서 제공하는 답변을 살펴보십시오 .

KDE 플라즈마 버전 7.5 및 KDE 프레임 워크 버전 5.26.0을 사용하여 Kubuntu 16.10 64 비트로 테스트되었습니다 . 다음 단계는 저에게 효과적입니다. 나는 그들이 당신을 위해 일하기를 희망하지만, 나는 그것을 보장하지 않으며 그들이하지 않으면 책임을지지 않습니다. 하지만 의견을 남겨 주시면 기꺼이 도와 드리겠습니다.

필자의 경우 문제는 업데이트 대체 / usr / lib / nvidia-XYZ-prime /가 전혀 작동하지 않았다는 것입니다. 호출을 인텔 메사 드라이버로 리디렉션해야하지만 어떤 이유로 든 호출되지 않았습니다. 그렇다면 아마도 업데이트 대안의 버그일까요? 여전히 업데이트 대체 버그를보고 할 장소를 찾지 못했습니다. 당신이 나를 도울 수 있다면 의견을 주시기 바랍니다.

나는 기본적으로 nvidia-prime을 약간 수정하여 업데이트 대안을 / usr / lib / nvidia-XYZ-prime / 대신 인텔-메사 드라이버로 직접 변경했습니다.

중대한:

이 단계를 적용하기 전에 PC에서 복구 모드에 액세스하는 방법을 알아야합니다. 이 안내서로 인해 더 이상 부팅 할 수없는 경우에도이 안내서의 마지막 섹션에있는 명령을 사용하여 복구 모드의 변경 사항을 취소 할 수 있습니다. 자세한 내용은 복구 모드액세스하는 방법에 대한웹 사이트 를 참조하십시오.

32 비트 운영 체제 를 사용하는 경우 4 단계 와이 수정 사항을 모두 실행 취소하는 방법 섹션에서 x86_64 를 포함하는 모든 명령을 제외해야합니다 .


1 단계:

아래의 답변에서 @whizzzkid가 제공하는 쉬운 방법을 사용하여 패치를 설치하십시오.

cd /usr/bin
sudo mv prime-select prime-select.bkup
sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
sudo chmod 755 prime-select

2 단계:

인텔 모드에서 전력 소비를 줄이려면 두 번째 패치를 적용하십시오.

사용중인 nvidia 드라이버 버전을 확인하십시오. 예를 들어 다음 명령을 사용하십시오.

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

이 경우 nvidia-XYZ는 nvidia-378입니다. 이 Stackoverflow 스레드를 참조하십시오 .

poweroff.sh와 같은 다음 컨텐츠를 포함하는 bash 파일을 작성하십시오.

#!/bin/bash
line=$(</etc/prime-discrete)
if [ "$line" == "off" ] 
   then
   rmmod nvidia-drm
   rmmod nvidia-modeset
   rmmod nvidia
   bash -c 'echo OFF > /proc/acpi/bbswitch'
fi 

poweron.sh와 같은 다음 컨텐츠를 포함하는 두 번째 bash 파일을 작성하고 XYZ를 nvidia 드라이버 버전 번호로 바꾸십시오.

#!/bin/bash
modprobe nvidia-XYZ
modprobe nvidia-XYZ-modeset
modprobe nvidia-XYZ-drm
modprobe nvidia-XYZ-uvm
echo ON > /proc/acpi/bbswitch

Intel 모드에서는 sudo로 로그인 한 후 첫 번째 스크립트를 실행하고 sudo로 로그 아웃 하기 전에 두 번째 스크립트를 실행해야합니다 (그렇지 않으면 랩탑이 충돌 할 수 있습니다). 난 그냥 그들을 실행합니다 sudo bash FILENAME.

지금까지는 로그인 할 때와 로그 아웃하기 전에 이러한 스크립트를 루트로 자동 시작하지 못했습니다. 그러나 @Fiximan이 지적했듯이 upstart로 가능할 수 있습니다 . 내가 그렇게하면 나중에이 답변을 언젠가 다시 업데이트 할 수 있습니다.


(아마도) KDE 플라즈마 관련 오류 :

KDE Plasma에서 고칠 수 없었던 버그가 여전히 남아 있습니다. nvidia 모드에서 PC를 시작한 후 Nvidia에서 Intel로 전환 할 때마다 ksmserver 가 충돌하고 PC를 사용할 수 없게됩니다. 전원 버튼을 약 5-10 초 동안 누릅니다. 이로 인해 업데이트-대체가 인텔-메사 대신 nvidia-prime으로 변경되어 시작시 검은 색 화면이 나타납니다 .

ksmserver 버그의 영향을받는 경우 bugs.kde.org의 공식 버그 보고서에 기여하십시오 .

그러나 nvidia 모드를 사용하는 경우에도 종료 전에 항상 인텔 모드를 선택 하면 PC가 종료되지 않는 문제를 피할 수 있습니다 . 이 작업을 수행하면 모든 것이 처음부터 제대로 작동하므로이 가이드를 NVIDIA 모드에서 적용한 후를 제외하고 전원 버튼을 길게 눌러 PC 전원을 끌 필요가 없습니다.

블랙 스크린 시동시 버그에 대한 간단한 해결 방법은 작동하지 않는 업데이트 대안을 완전히 제거하는 것입니다.

1 단계:

복구 모드로 들어간 후 PC에 다시 액세스하여 루트 명령 셸을 선택하고 다음 두 명령을 실행하십시오.

mount -o remount,rw /
prime-select nvidia

2 단계:

다음 명령을 실행하십시오.

sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
sudo update-alternatives --remove i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf
sudo update-alternatives --remove x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf

이러한 모든 수정을 취소하는 방법

다음 명령을 실행하십시오.

sudo rm /usr/bin/prime-select
sudo mv /home/YOUR-USERNAME/prime-select.backup /usr/bin/prime-select
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603

1
아래에서 내 대답을 확인하십시오.
whizzzkid

이봐, 이거 정말 고마워! 전원 끄기 스크립트를 실행하면 내 com이 중단됩니다 (로그 아웃하기 전에). 다른 수정이 있습니까?
Wboy

불행히도, 나는 다른 수정 방법을 모른다. 이것은 내 경우에 작동합니다. 내가 쓴 것처럼 귀하의 문제는 제 경우에도 발생하지만 처음입니다. 내가 쓴 것처럼 로그 아웃하기 전에 인텔로 다시 전환해야합니다. 그러면이 오류가 발생하지 않습니다. (적어도 나의 경우에는).
C11235

안녕하세요 @ C11235 수정 해 주셔서 감사합니다. 나는 당신에게 무언가를 묻고 싶습니다 : 기본적으로 nvidia 드라이버를 처음 설치할 때 nvidia로 설정됩니다. 그러면 언제 스크립트를 실행해야합니까? 그리고 루트로 로그인하는 것은 무엇을 의미합니까?
Glats

불행히도, 내 대답 의이 부분은 약간 모호했습니다. 나는 당신이 로그인 한 다음 스크립트를 루트로 실행한다는 것을 의미했습니다 (예 : sudo로). 로그인 한 상태에서 이미 인텔 모드로 전환 한 경우 스크립트를 실행해야합니다. 이것은 nvidia GPU를 일시적으로 완전히 비활성화합니다. 두 번째는 인텔 모드에서 로그 아웃하기 전에 실행해야합니다.
C11235

2

@ C11235의 패치가 작동하므로 이제 nvidia와 인텔 사이를 전환 할 수 있지만 전력 소비를 줄이지는 않습니다. :-/ 이것은 둘 다 여전히 실행 중임을 의미합니다.

BTW 이것이 더 쉬운 방법입니다.

cd /usr/bin
sudo mv prime-select prime-select.bkup
sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
sudo chmod 755 prime-select

감사합니다! 불행히도, 당신 말이 맞아, 내 업데이트 된 질문을 참조하십시오. 보다 쉬운 설치 방법을 포함하도록 답변을 업데이트해도 괜찮습니까?
C11235

@ C11235 아 그래. 나는 이것을 모두 알아낼 수 있었다 : gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 지금 유휴 상태에서 5.8W를 실행하고 있습니다.
whizzzkid

그래, 그거 좋군! 지침을 확인한 결과 전력 소비가 감소한 원인은 제 경우와 동일합니다. 프라임 셀렉트가 토글 인텔 모드로 전환되면 bbswitch를 사용하여 nvidia GPU를 비활성화하는 스크립트를 작성했습니다. 필자의 경우 이것은 외부 모니터가 있고 거의 독점적으로 NVIDIA 모드를 사용하기 때문에 더 편리합니다. 그래서 나는 꿀벌 대신 nvidia-prime을 사용하고 싶었습니다. 또한 nvidia-prime을 사용할 때의 성능은 bumblebee를 사용할 때보 다 더 좋습니다.
C11235

2

인텔 비디오 카드로 전환 한 후 부팅되지 않는 솔루션 :
커널 부팅 매개 변수 추가 :

acpi_osi=! acpi_osi="Windows 2009"

이 문제의 원인 : 커널 솔루션의 버그 # 156341
소스 : link

좀 더 자세한 내용은 이해하기 쉬울 수 있습니다.

sudo echo -e "GRUB_CMDLINE_LINUX_DEFAULT='acpi_osi=! acpi_osi='Windows 2009''"  | sudo tee -a /etc/default/grub
sudo update-grub

현재 형태로는 귀하의 답변이 가능한 한 좋지 않습니다. 좋은 답변을 작성하는 방법을 검토 하고 답변을 넓히는 것을 고려할 수 있습니까
J. Starnes

이것은 실제로 나를 위해 일했지만 대답은 향상 될 수 있습니다. 개선을 제안합니다
Vladyslav Matviienko

1

두 번째 수정과 관련된 문제 : "전원 끄기"스크립트 프롬프트의 마지막 명령

    bash: /proc/acpi/bbswitch: No such file or directory

분명히 인텔 모드에서 재부팅 할 때 (모드를 변경해도 '다시 부팅 할 때까지 이것이 정상인지 여부를 알 수 없음) bbswitch-Module 이로 드되지 않습니다. 따라서 bbswitch 파일이없고 nvidia GPU를 끌 수있는 방법이 없습니다.

나는 사용하고있다 :

  • MSI- 랩탑 (GL72 7RDX)
  • 통합 GPU : 인텔 ® HD 그래픽 630 (Kaby Lake GT2)
  • 별도 GPU : Geforce GTX 1050
  • 운영체제 : Ubuntu 16.04 lts

이 문제에 대한 해결책 :

/ etc / modules 파일 (루트 권한 포함)을 편집하고 행을 추가하십시오

    bbswitch

이제 bbswitch는 인텔 모드로 부팅 할 때도 작동하며 C11235의 두 번째 수정은 제대로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.