Drivers do MacBook Pro 7,1 + Ubuntu 16.04 LTS + nVidia

0

Depois de seguir o guia, encontrei aqui Descobri que, embora meu hardware seja o mesmo que seu autor, não consegui reproduzir os mesmos resultados. Depois de criar o script GRUB para registrar os registradores PCI durante a inicialização, tornando o arquivo executável e atualizando os arquivos de configuração do GRUB (ou seja, após seguir Etapa 3 ), eu insiro:

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

De acordo com a etapa 4, ela gera 00 em vez do esperado 08

No entanto, quando eu entro

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

retorna o valor esperado de 07 , conforme encontrado no guia.

O que mais devo fazer para garantir que posso utilizar os drivers da nVidia na minha configuração?

Eu não entendo completamente o guia, mas tenho o mesmo hardware e segui as mesmas instruções.

Eu tenho um MacBook Pro de dupla inicialização (7,1) com o OS X e o Ubuntu 16.04 LTS.

rEFInd (versão 0.10.3-1) é o meu gerenciador de inicialização.

== EDITAR ==

Depois de inserir

dmesg | grep -i efi

Eu recebo o seguinte:

[    0.000000] Command line: \boot\vmlinuz-4.4.0-22-generic.efi.signed ro root=UUID=d5117e29-6aa7-46cb-ab22-616c19309a3c initrd=boot\initrd.img-4.4.0-22-generic
[    0.000000] efi: EFI v1.10 by Apple
[    0.000000] efi:  ACPI=0xbf96a000  ACPI 2.0=0xbf96a014  SMBIOS=0xbf71a000 
[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[    0.000000] Kernel command line: \boot\vmlinuz-4.4.0-22-generic.efi.signed ro root=UUID=d5117e29-6aa7-46cb-ab22-616c19309a3c initrd=boot\initrd.img-4.4.0-22-generic
[    0.953332] efifb: probing for efifb
[    0.953363] efifb: framebuffer at 0xc0010000, mapped to 0xffffc90002800000, using 6400k, total 6400k
[    0.953370] efifb: mode is 1280x800x32, linelength=8192, pages=1
[    0.953374] efifb: scrolling: redraw
[    0.953378] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.961402] fb0: EFI VGA frame buffer device
[    2.227701] EFI Variables Facility v0.08 2004-May-17
[    2.853971] [Firmware Bug]: ACPI(IGPU) defines _DOD but not _DOS
[    2.952253] fb: switching to nouveaufb from EFI VGA

Estas são mais minhas saídas ao seguir o dito guia.

2. Encontre os identificadores de barramento PCI-E corretos

sudo 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:0e.0              bridge         NVIDIA Corporation
pci@0000:00:15.0              bridge         NVIDIA Corporation
pci@0000:00:16.0              bridge         NVIDIA Corporation
pci@0000:00:17.0              bridge         MCP89 PCI Express Bridge
pci@0000:04:00.0              display        MCP89 [GeForce 320M]

3. Crie um script GRUB para configurar os registradores PCI-E durante a inicialização

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

Em seguida, digite o seguinte:

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

Ctrl + X

Y para Sim para salvar o arquivo de configuração.

Em seguida, execute

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

Ambos os comandos são executados bem.

4. Reinicie e verifique

Na reinicialização eu corro:

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

E obtenha 00 em vez do esperado 08 .

Eu também corro:

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

que retorna o 07 esperado, assim como o guia.

Deixe-me saber se posso fornecer mais detalhes para me ajudar a resolver esse problema.

== UPDATE ==

Eu tinha anteriormente (ou seja, antes de tentar seguir o guia) excluí a pasta "ubuntu" (e, portanto, corresponde às configurações do grub) que está instalada na partição EFI enquanto instalava o Ubuntu para que o rEFInd aparecesse no início -acima. Eu tinha pensado que os dois estavam competindo desde então eu começaria o MacBook e ele iria automaticamente inicializar no Ubuntu sem mostrar o menu rEFInd.

Depois de desinstalar o rEFInd, reinstalar o Ubuntu e configurar o menu do Grub como mostrado aqui , executei as etapas no Guia do driver da Nvidia. Eu tenho a saída correta desta vez.

Sucesso

No entanto, agora, ao selecionar "a versão 304.131 do driver binário legado NVIDIA da nvidia-304 (proprietary)" do menu 'Additional Drivers' da GUI e aplicar alterações, ela não alterna a seleção para fora da configuração Nouveau.

Pensando que foi uma falha na GUI, eu espero um pouco e reinicio de qualquer maneira, mas não há dados - o driver Nouveau ainda é usado após o start-up.

Eu estou querendo ser cauteloso em prosseguir, então quais linhas de comando devo inserir aqui?

(Nota: Uma frustração adicional é que depois desse processo de reinstalação meu WiFi agora não está funcionando corretamente apesar dos drivers apropriados estarem sendo usados. Isso não foi um problema antes, mas vou lidar com isso depois que eu puder resolver os drivers da Nvidia. Talvez as aflições do Wi-Fi para 16.04 e Broadcom 432b estejam relacionadas a algo com os carregadores de boot também?)

Obrigado pela ajuda até agora.

    
por Joshua Drolte 14.05.2016 / 20:46

3 respostas

1

Depois de desinstalar o rEFInd, reinstale o Ubuntu para que a pasta "ubuntu" apareça na partição EFI (por exemplo, abrindo 'Terminal' no OS X, executando sudo mountesp e visualizando a partição EFI no Finder), configurando o menu Grub (como detalhado aqui ) e seguindo o instruções no guia original Consegui obter as saídas esperadas de 08 e 07 antes de tentar instalar os drivers proprietários da nVidia.

Ao tentar pela primeira vez instalar os drivers proprietários da nVidia através da GUI "Additional Software", eles não seriam instalados e, após a reinicialização, o driver Nouveau de código aberto estava sendo usado.

No entanto, quando na página de login, acessei TTY1 (ou seja, FN + Control + alt + F1 ), efetuei login, executei sudo apt-get purge nvidia* e reiniciei. Depois que eu entrei no Ubuntu, eu abri o "Terminal" e executei o sudo apt-get install nvidia-340 , depois o sudo apt-get update , seguido do sudo apt-get dist-upgrade , e então reiniciei.

Isso resultou em uma inicialização bem-sucedida do Ubuntu 16.04 LTS no meu MacBook Pro (7,1) em uma configuração de inicialização dupla (OS X 10.11.4 El Capitan) utilizando o Grub como meu carregador de inicialização.

Obrigado aos guias vinculados e @mikewhatever por me ajudarem a resolver esse problema. Espero que isso ajude outras pessoas que possam encontrar problemas semelhantes.

    
por Joshua Drolte 15.05.2016 / 20:04
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 do registrador PCI-E brigde 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/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/EFI/ubuntu/x86_64-efi

Crie o arquivo 01_enable_vga.conf.

sudo nano /etc/grub.d/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.

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 / 21:08
0

Você precisa definir o token spoof_osx_version em refind.conf . De rEFInd documentação link :

On some Macs, this option causes rEFInd to tell the firmware that the specified version of OS X is being launched, even when another OS is selected. The effect is that the firmware may initialize hardware differently, which may have beneficial (or detrimental) results. If your Mac's video output isn't working normally, this option may help. On the other hand, keyboards and mice are known to sometimes stop functioning if this option is used, so you shouldn't use it unnecessarily. This option has no effect on non-Apple hardware. The default is to not use this feature.

Eu tenho um Macbook Pro 7,1 com uma inicialização dupla do macOS Sierra e do Ubuntu 16.04, então configurei:

spoof_osx_version = 10.12

Se você quer saber como editar o arquivo refind.conf , por favor, consulte Onde posso encontrar o arquivo de configuração refind.conf? .

    
por francisv 14.07.2016 / 20:06