NVIDIA-PRIME: Não consigo mudar para intel

10

Sempre que eu alterno do meu gpu (gtx 1060) para o meu igpu (Intel 530), não consigo inicializar. A tela de carregamento está presa com a seguinte mensagem:

[Failed] Failed to start NVIDIA Persistence Daemon. See 'systemctl status nvidia-persistenced.service' for details.

No entanto, eu posso inicializar quando eu voltar para o gpu da Nvidia e mudar para o meu igpu sem reiniciar temporariamente. Estou usando o Kubuntu 16.10 e apenas meu monitor de laptop interno. Essa é a saída quando eu mudo para o meu 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

Resultado de 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

Eu tentei resolver esse problema sozinho por mais de uma semana e não tenho a menor idéia do que fazer. Tudo o que tentei falhou.

Poderia, por favor, me ajudar?

ATUALIZAÇÃO 5.2.2017:

Eu testei de novo hoje e percebi que a mudança para o intel gpu não funciona com 375 e 378. O logout congela a tela. Então, por que funcionou uma vez? Se eu instalar todos os drivers novamente depois que eu apaguei os antigos e depois usar intel prime-select (sem reinicialização!), Prime-select não atualiza os perfis principais - > Ele seleciona um dos perfis não nvidia antigos (perfis mesa em vez de nvidia) e funciona. Mas assim que mudo para um perfil nvidia ou reinicializo, os perfis principais são atualizados e não funcionam mais. Então eu acho que há algo errado com as alternativas EGl para o intel gpu? Desculpe por qualquer inconveniente.

ATUALIZAÇÃO 12.2.2017:

Ontem, eu modifiquei o software nvidia-prime e consertei o bug. Em breve publicarei (provavelmente na próxima semana) minha versão modificada e colarei um link aqui, mas ainda encontro um problema: quando desliguei meu PC depois que executei sudo prime-select intel :

ksmserver falha (estou usando o Kubuntu, provavelmente não é um problema com o Ubuntu)

- > o PC não pode desligar completamente e as alternativas de atualização (erradas) antigas para a Intel GPU são restauradas

- > Eu não posso arrancar.

No entanto, se eu executar sudo prime-select intel após o desligamento no modo de recuperação, tudo funciona bem e eu posso usar a GPU Intel.

ATUALIZAÇÃO 17.2.2017:

Eu postei minha solução e ainda estou tentando corrigir o bug nos Repositórios oficiais. No entanto, este é provavelmente um Bug em update-alternatives, então no próximo eu tenho que postar um bug-report lá.

Enquanto isso, aproveite minha solução! Eu espero que funcione para você também. Se houver alguma dúvida, por favor deixe um comentário.

ATUALIZAÇÃO 26.2.2017

Como @whizzzkid apontou, a placa gráfica nvidia ainda permanece ativa depois de aplicar o meu patch. No entanto, hoje consegui resolver esse problema. Eu provavelmente atualizarei minha resposta para incluir meu segundo patch na próxima semana. Aqui estão alguns testes que eu fiz:

Nvidia: 43-45W

Intel (nvidia em): 29-31W

Intel (nvidia off): 15 a 17 W

    
por C11235 04.02.2017 / 19:34

3 respostas

3

Aqui está minha correção / solução alternativa para o bug:

Se você quiser usar o bumblebee em vez do nvidia-prime, dê uma olhada na resposta fornecida por @ whizzzkid abaixo.

Testado com o Kubuntu 16.10 64-bit usando o KDE Plasma Version.7.5 e o KDE Frameworks Versão 5.26.0. As etapas a seguir funcionam para mim. Espero que eles trabalhem para você também, mas não posso garantir isso e não me responsabilizo se não o fizerem. Mas estou feliz em ajudá-lo se você deixar um comentário.

No meu caso, o problema era que a alternativa de atualização / usr / lib / nvidia-XYZ-prime / não funcionava. Ele deveria redirecionar as chamadas para o driver da intel-mesa, mas por alguma razão isso não aconteceu. Então, é provavelmente, afinal, um bug em update-alternatives? Ainda não encontrei um lugar para relatar um bug para as alternativas de atualização. Por favor, comente se você puder me ajudar.

Eu basicamente modifiquei nvidia-prime um pouco para alterar as update-alternatives diretamente para o driver intel-mesa em vez de / usr / lib / nvidia-XYZ-prime /.

Importante:

Antes de aplicar qualquer uma dessas etapas, saiba como acessar o modo de recuperação no seu PC. Se você não puder mais inicializar devido a este guia, ainda poderá desfazer as alterações no modo de recuperação com os comandos da última seção deste guia. Veja este website sobre como acessar o modo de recuperação para obter mais informações.

Se você usa um sistema operacional 32-bit , você deve deixar de fora todos os comandos que contêm x86_64 na Etapa 4 e na seção Como desfazer todas essas modificações .

Etapa 1:

Instale meu patch usando um método fácil fornecido por @whizzzkid em sua resposta abaixo:

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

Etapa 2:

Aplique meu segundo patch para reduzir o consumo de energia no modo intel:

Verifique qual versão do driver nvidia você possui. Por exemplo, com o seguinte comando:

$ 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)

Neste caso, o nvidia-XYZ é o nvidia-378. Veja este Stackoverflow thread .

Crie um arquivo bash contendo o seguinte conteúdo nomeado por exemplo poweroff.sh

#!/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 

Crie um segundo arquivo bash contendo o seguinte conteúdo nomeado por exemplo poweron.sh e substitua XYZ pelo seu número de versão do driver nvidia.

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

No modo Intel, você precisa executar o primeiro script após o login com o sudo e o segundo antes do efetuar logout com o sudo (caso contrário, o seu laptop provavelmente falhará, como no meu caso). Eu apenas os executo com sudo bash FILENAME .

Até agora, não consegui inicializar automaticamente esses scripts como root no login e antes do logout. No entanto, pode ser possível com o upstart, como @ Fiximan apontou. Eu posso atualizar esta resposta novamente em algum momento no futuro, se eu conseguir fazê-lo.

(provavelmente) erros específicos do KDE Plasma:

Ainda há um bug que não consegui corrigir no KDE Plasma: Sempre que eu mudo da Nvidia para a Intel depois que iniciei o PC no modo nvidia, o ksmserver trava e o PC é renderizado inutilizável, eu tenho que desligá-lo pressionando o botão de energia por cerca de 5-10 segundos. Isso às vezes resulta na atualização de alternativas sendo alteradas para nvidia-prime em vez de intel-mesa, o que leva a uma tela preta na inicialização .

Se acontecer de você ser afetado pelo bug ksmserver, por favor, contribua para o relatório de erros oficial em bugs.kde.org .

No entanto, o problema que o PC não encerra pode ser evitado sempre selecionando o modo Intel antes do desligamento , mesmo quando você usa o modo nvidia. Se você fizer isso, tudo funcionará como deveria e não será necessário desligar o PC pressionando longamente o botão liga / desliga, exceto depois de aplicar este guia no modo nvidia.

Uma solução simples para o tela preta ao reiniciar o bug é apenas remover completamente as alternativas de atualização que não funcionam:

Etapa 1:

Você pode acessar seu PC novamente após entrar no modo de recuperação, selecionar o shell de comando root e executar os 2 comandos a seguir:

mount -o remount,rw /
prime-select nvidia

Etapa 2:

Execute os seguintes comandos:

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

Como desfazer todas essas modificações

Basta executar os seguintes comandos:

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
    
por C11235 17.02.2017 / 21:39
2

o patch de @ C11235 funciona, agora eu posso alternar entre nvidia e intel, mas isso não reduz o consumo de energia. : - / o que significa que ambos ainda estão em execução.

BTW, essa é uma maneira mais fácil de fazer isso.

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
    
por whizzzkid 20.02.2017 / 21:24
2

Solução para não inicializar após mudar para placa de vídeo da intel:
Adicione os parâmetros de inicialização do kernel:

acpi_osi=! acpi_osi="Windows 2009"

O motivo desse problema: bug # 156341 no kernel
Fonte da solução: link

    
por Maxim Akristiniy 15.12.2017 / 06:17