setpci não altera o valor de registro para o dispositivo de ponte (problema de tela preta do driver NVIDIA)

2

Eu configurei recentemente meu Macbook Air (final de 2010) para o sistema operacional de inicialização dupla 10.10 com o Ubuntu 16.04 e, é claro, ao longo do caminho, encontrei o problema da tela preta ao usar os drivers proprietários da NVIDIA. Acabei de tentar a correção de Andreas aqui . Tudo parece ir nadando, exceto que quando chego ao passo # 4 para reiniciar e verificar, eu não obtenho o resultado correto para o registro PCI-E para o dispositivo de ponte. Isto é o que eu recebo para o passo 2:

Bus info          Device     Class          Description
=======================================================
pci@0000:00:00.0             bridge         MCP89 HOST Bridge
pci@0000:00:03.0             bridge         MCP89 LPC Bridge
pci@0000:00:15.0             bridge         NVIDIA Corporation
pci@0000:00:17.0             bridge         MCP89 PCI Express Bridge
pci@0000:02:00.0             display        MCP89 [GeForce 320M]

Eu criei o script grub /etc/grub.d/01_enable_vga.conf como descrito:

cat << EOF
setpci -s "00:17.0" 3e.b=8
setpci -s "02:00.0" 04.b=7
EOF

... e também alterou as permissões e atualizou o grub ...

~> sudo chmod 755 /etc/grub.d/01_enable_vga.conf
~> sudo update-grub

... mas quando eu reinicio a máquina e verifico, o valor para o dispositivo de bridge está incorreto:

~> sudo setpci -s "00:17.0" 3e.b
00
~> sudo setpci -s "02:00.0" 04.b
07

Alguma sugestão sobre o que posso fazer para configurar corretamente antes de instalar os drivers da NVIDIA? Eu estou mudando o dispositivo de ponte errado? Existe uma maneira melhor de fazer isso?

Obrigado antecipadamente!

    
por Jiffy 01.02.2017 / 06:29

1 resposta

1

Eu finalmente resolvi o problema quando o setpci não altera o valor da ponte PCI-E.

Se você não conseguir definir o valor dos registros brigde PCI-E usando o comando setpci para obter drivers nVidia GeForce trabalhando em sua máquina Apple MacBook, tente estas etapas:

1. Encontre seus identificadores de barramento PCI-E

lshw -businfo -class bridge -class display

[root@kernelLinux]# lshw -businfo -class bridge -class display
Bus info          Device      Class          Description
========================================================
pci@0000:00:00.0              bridge         MCP89 HOST Bridge
pci@0000:00:03.0              bridge         MCP89 LPC Bridge
pci@0000:00:15.0              bridge         NVIDIA Corporation
pci@0000:00:17.0              bridge         MCP89 PCI Express Bridge
pci@0000:02:00.0              display        MCP89 [GeForce 320M]

Você precisará dos IDs da Ponte PCI Express e da sua exibição no formato XX: XX.X

Seus IDs podem ser diferentes.

Neste exemplo, nossos IDs são 00: 17.0 para PCI-E brige e 02: 00.0 para exibição [GPU].

2. Crie um script do GRUB

Nosso script será um pouco diferente do mencionado no post acima.

Eu notei duas coisas. O Grub2 instalado usando o processo de instalação da distro (o meu é o Centos) não contém o módulo grub setpci . É a razão pela qual o grub não altera os registros durante a inicialização. Então é necessário carregar o módulo setpci no grub antes de executarmos comandos para alterar os registros.

Faça o download do grub2-efi-modules

Ubuntu Linux

sudo apt-get install grub-efi-amd64-bin

Fedora Linux

sudo dnf install grub2-efi-modules

CentOS Linux

sudo yum install grub2-efi-modules

Os módulos serão instalados em / usr / lib / grub / x86_64-efi / mas os arquivos do módulo setpci precisam estar presentes em / boot / efi / EFI / ubuntu / x86_64-efi /

Crie a pasta x86_64-efi.

A pasta Ubuntu em / boot / EFI / pode ser diferente em sua máquina, depende de como você a nomeou no processo de instalação do SO, não cole. Substitua-o pelo caminho correto.

sudo mkdir /boot/EFI/ubuntu/x86_64-efi

Copie os arquivos do módulo setpci para a pasta grub2

sudo cp /usr/lib/grub/x86_64-efi/setpci.* /boot/EFI/ubuntu/x86_64-efi

Crie o arquivo 01_enable_vga.conf.

O arquivo deve conter estas linhas de código:

Não se esqueça de substituir 00: 17.0 para a ponte PCI e 02: 00.0 para exibir [GPU] com seus valores.

sudo nano /etc/grub.d/01_enable_vga.conf

cat << EOF
insmod setpci
setpci -s "00:17.0" 3e.b=8
setpci -s "02:00.0" 04.b=7
EOF

Em seguida, repare as permissões

sudo chmod 755 /etc/grub.d/01_enable_vga.conf

e atualize o /boot/efi/EFI/ubuntu/grub.cfg

Ubuntu Linux

sudo update-grub

Faça este comando apenas em outras distribuições (não é necessário no Ubuntu após update-grub):

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

3. Reinicie seu sistema e verifique os registros

Reinicialize sua máquina e verifique se ela está funcionando. Substitua a ID pela sua novamente. Seu terminal deve finalmente mostrar 08 (ponte PCI-E) e 07 (GPU).

sudo setpci -s "00:17.0" 3e.b
08

sudo setpci -s "02:00.0" 04.b
07

4. Instalar drivers da nVidia

Screenshot: link

    
por ylwghst 04.08.2017 / 17:47