web-dev-qa-db-fra.com

setpci ne modifie pas la valeur de registre du périphérique de pont (problème d'écran noir du pilote NVIDIA)

J'ai récemment configuré mon Macbook Air (fin 2010) sur l'OS 10.10 avec amorçage double avec Ubuntu 16.04 et, bien entendu, j'ai rencontré le problème de l'écran noir lors de l'utilisation des pilotes propriétaires NVIDIA. Je viens d'essayer la solution d'Andreas ici . Tout semble aller pour le mieux, sauf que lorsque j'arrive à l'étape 4 pour redémarrer et vérifier, je n'obtiens pas le résultat correct pour le registre PCI-E du périphérique en pont. Voici ce que je reçois à l'étape 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]

J'ai créé le script grub /etc/grub.d/01_enable_vga.conf comme décrit ci-après:

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

... et aussi changé les permissions et mis à jour grub ...

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

... mais lorsque je redémarre l'ordinateur et vérifie, la valeur du périphérique de pont est incorrecte:

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

Des suggestions sur ce que je peux faire pour obtenir cet ensemble correctement avant d'installer les pilotes NVIDIA? Est-ce que je change le mauvais périphérique de pont? Y a-t-il une meilleure manière de faire cela?

Merci d'avance!

2
Jiffy

J'ai finalement résolu le problème lorsque setpci ne modifiait pas la valeur du pont PCI-E.

Si vous ne parvenez pas à définir la valeur des registres Brigde PCI-E à l’aide de la commande setpci afin d’obtenir les pilotes nVidia GeForce fonctionnant sur votre ordinateur MacBook Apple, procédez comme suit:

1. Trouvez vos identifiants de bus 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]

Vous aurez besoin des identifiants de PCI Express Bridge et de votre affichage au format XX: XX.X

Votre identifiant peut être différent.

Dans cet exemple, nos identifiants sont 00: 17.0 pour PCI-E brige et 02: 00.0 pour l'affichage [GPU].

2. Créez un script GRUB

Notre script sera légèrement différent de celui mentionné ci-dessus.

J'ai remarqué deux choses. Le processus d’installation de Grub2 à l’aide de distro (le mien est Centos) ne contient pas le module setpci . C'est la raison pour laquelle grub ne change pas de registre au démarrage. Ensuite, il est nécessaire de charger le module setpci dans grub avant de lancer des commandes pour changer de registre.

Télécharger les modules grub2-efi

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

Les modules seront installés dans/usr/lib/grub/x86_64-efi /, mais les fichiers du module setpci doivent être présents dans/boot/efi/EFI/ubuntu/x86_64-efi /.

Créez un dossier x86_64-efi.

Le dossier Ubuntu dans/boot/EFI/peut être différent sur votre ordinateur, cela dépend de la façon dont vous l'avez nommé lors du processus d'installation du système d'exploitation. Ne le collez pas. Remplacez-le par le chemin correct.

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

Copier les fichiers du module setpci dans le dossier grub2

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

Créez le fichier 01_enable_vga.conf.

Le fichier doit contenir ces lignes de code:

N'oubliez pas de remplacer 00: 17.0 pour le pont PCI et 02: 00.0 pour l'affichage [GPU] par vos valeurs.

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

Puis réparer les autorisations

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

et mettez à jour le fichier /boot/efi/EFI/ubuntu/grub.cfg

Ubuntu Linux

Sudo update-grub

Ne faites cette commande que sur d'autres distributions (pas nécessaire sur Ubuntu après update-grub):

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

3. Redémarrez votre système et vérifiez les registres

Redémarrez votre ordinateur et vérifiez s'il fonctionne. Remplacez les identifiants par le vôtre. Votre terminal devrait enfin afficher 08 (pont PCI-E) et 07 (GPU).

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

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

4. Installer les pilotes nVidia

Capture d'écran: http://imgur.com/a/YiBXi

1
ylwghst

J'ai eu le même problème et je suis arrivé ici à cause de Google. Il semble que le fichier /etc/grub.d/01_enable_vga.conf vous confonde.

Vous voulez que le fichier contienne la commande cat, vous ne voulez pas le créer avec cat (eh bien, vous pouvez le créer avec cat imbriqué). Alors essayez ceci:

Sudo bash -c "cat > /etc/grub.d/01_enable_vga.conf" << END
cat << EOF
setpci -s "00:17.0" 3e.b=8
setpci -s "02:00.0" 04.b=7
EOF
END

J'ai la réponse ici: Pilotes MacBook Pro 7,1 + Ubuntu 16.04 LTS + nVidia

0
Sandy