MacBook Pro, EFI e Nvidia setpci IDs

2

Acabei de instalar o Linux no meu 2010 MacBookPro (inicialização tripla usando o comando refind) e recebo a infame tela preta após instalar os drivers da nvidia.

Eu tentei aplicar a solução aqui: link sem sucesso.

Eu me pergunto se eu tenho os IDs para setpci direito. Alguém pode confirmar?

Estou colando abaixo da saída de exibição do lshw e do meu arquivo /etc/grub.d/01_enable_vga.conf.

Obrigado!

mint@mint-MacBookPro ~ $ sudo lshw -businfo -class bridge -class display
información del Bus  Dispositivo  Clase       Descripción
===========================================================
pci@0000:00:00.0                   bridge      Core Processor DRAM Controller
pci@0000:00:01.0                   bridge      Core Processor PCI Express x16 Root Port
pci@0000:01:00.0                   display     GT216M [GeForce GT 330M]
pci@0000:00:02.0                   display     Core Processor Integrated Graphics Controller
pci@0000:00:1c.0                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 1
pci@0000:00:1c.1                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 2
pci@0000:00:1c.2                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 3
pci@0000:00:1c.3                   bridge      5 Series/3400 Series Chipset PCI Express Root Port 4
pci@0000:00:1e.0                   bridge      82801 Mobile PCI Bridge
pci@0000:00:1f.0                   bridge      Mobile 5 Series Chipset LPC Interface Controller
pci@0000:ff:00.0                   bridge      Core Processor QuickPath Architecture Generic Non-core Registers
pci@0000:ff:00.1                   bridge      Core Processor QuickPath Architecture System Address Decoder
pci@0000:ff:02.0                   bridge      Core Processor QPI Link 0
pci@0000:ff:02.1                   bridge      Core Processor QPI Physical 0
pci@0000:ff:02.2                   bridge      Core Processor Reserved
pci@0000:ff:02.3                   bridge      Core Processor Reserved

mint@mint-MacBookPro ~  sudo cat /etc/grub.d/01_enable_vga.conf
cat << EOF
setpci -s "00:01.0" 3e.b=8
setpci -s "01:00.0" 04.b=7
EOF
    
por Joe 04.01.2016 / 02:39

3 respostas

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 / centos / x86_64-efi /

Crie a pasta x86_64-efi

sudo mkdir /boot/EFI/centos/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/centos/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/centos/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:43
0

Comparando sua saída lshw com minha abordagem original, parece que você está usando um MacBook Pro diferente - o seu é mais recente e tem uma placa gráfica integrada e uma discreta (NVIDIA GT 330M). Duvido que minha solução para o Macbook Pro 7,1 (meados de 2010, com apenas NVIDIA 320M) seja aplicável ao seu hardware.

Na verdade, suspeito que a causa raiz da sua tela preta é que a NVIDIA 330 GT está desabilitada durante a inicialização do EFI Linux. Portanto, você preferiria habilitar explicitamente a placa NVIDIA usando um script diferente do GRUB. Os indicadores iniciais sobre como conseguir isso seriam link e link .

Devido ao fato de não ser proprietário desse hardware específico, não tenho certeza se essas são as configurações certas.

    
por Andreas 04.01.2016 / 16:04
0

Você pode tentar remover o comentário da opção spoof_osx_version em refind.conf . Isso pode fazer com que o vídeo funcione para o seu sistema, mas não posso prometer que funcionará. Veja os comentários em refind.conf ou em a documentação do rEFInd para detalhes sobre como esta opção funciona.

Observe que essa opção pode funcionar de forma diferente dependendo de como você inicia o Linux - ou seja, via GRUB no modo BIOS, GRUB no modo EFI, iniciando um kernel diretamente etc. Além disso, observe que as alterações do GRUB que você está fazendo irá funcionar apenas se você estiver inicializando o Linux via GRUB. Não está claro se você está fazendo isso. Consulte a seção Métodos de inicialização do Linux da documentação do rEFInd para saber mais sobre as diferentes formas de iniciar o Linux a partir do rEFInd.

    
por Rod Smith 04.01.2016 / 16:44