it-swarm.com.de

setpci ändert den Registerwert für das Bridge-Gerät nicht (NVIDIA-Treiber-Blackscreen-Problem)

Ich habe mein Macbook Air (Ende 2010) kürzlich für das Dual-Boot-Betriebssystem 10.10 mit Ubuntu 16.04 eingerichtet und bin dabei natürlich auf das Problem des schwarzen Bildschirms gestoßen, wenn ich die proprietären NVIDIA-Treiber verwende. Ich habe gerade versucht, Andreas 'Fehler zu beheben hier . Es scheint alles reibungslos zu verlaufen, außer dass ich, wenn ich zum Neustart und Überprüfen zu Schritt 4 komme, nicht das richtige Ergebnis für das PCI-E-Register für das Bridge-Gerät erhalte. Folgendes bekomme ich für Schritt 2:

Bus info          Device     Class          Description
=======================================================
[email protected]:00:00.0             bridge         MCP89 Host Bridge
[email protected]:00:03.0             bridge         MCP89 LPC Bridge
[email protected]:00:15.0             bridge         NVIDIA Corporation
[email protected]:00:17.0             bridge         MCP89 PCI Express Bridge
[email protected]:02:00.0             display        MCP89 [GeForce 320M]

Ich habe das Grub-Skript /etc/grub.d/01_enable_vga.conf wie folgt erstellt:

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

... und auch die Berechtigungen geändert und Grub aktualisiert ...

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

... aber wenn ich den Rechner neu starte und überprüfe, ist der Wert für das Bridge-Gerät falsch:

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

Gibt es Vorschläge, wie ich dieses Set korrekt installieren kann, bevor ich die NVIDIA-Treiber installiere? Ändere ich das falsche Bridge-Gerät? Gibt es einen besseren Weg, dies zu tun?

Danke im Voraus!

2
Jiffy

Ich habe das Problem endlich gelöst, als setpci den Wert der PCI-E-Bridge nicht verändert.

Wenn Sie den Wert der PCI-E-Brückenregister nicht mit dem Befehl setpci festlegen können, damit die nVidia GeForce-Treiber auf Ihrem Apple MacBook-Computer funktionieren, gehen Sie folgendermaßen vor:

1. Finden Sie Ihre PCI-E-Bus-IDs

lshw -businfo -class bridge -class display

[[email protected]]# lshw -businfo -class bridge -class display
Bus info          Device      Class          Description
========================================================
[email protected]:00:00.0              bridge         MCP89 Host Bridge
[email protected]:00:03.0              bridge         MCP89 LPC Bridge
[email protected]:00:15.0              bridge         NVIDIA Corporation
[email protected]:00:17.0              bridge         MCP89 PCI Express Bridge
[email protected]:02:00.0              display        MCP89 [GeForce 320M]

Sie benötigen die IDs von PCI Express Bridge und Ihr Display im Format XX: XX.X

Ihre IDs können unterschiedlich sein.

In diesem Beispiel lauten unsere IDs 00: 17.0 für PCI-E brige und 02: 00.0 für die Anzeige [GPU].

2. Erstellen Sie ein GRUB Skript

Unser Skript wird etwas anders sein als in dem oben genannten Beitrag.

Mir sind zwei Dinge aufgefallen. Grub2, das mit der Distribution installiert wurde (meine ist Centos), enthält kein setpci Grub-Modul. Dies ist der Grund, warum Grub die Register während des Bootens nicht ändert. Dann muss das setpci-Modul in grub geladen werden, bevor Befehle zum Ändern von Registern ausgeführt werden.

Laden Sie die grub2-efi-Module herunter

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

Die Module werden in/usr/lib/grub/x86_64-efi/installiert, die setpci-Moduldateien müssen jedoch in/boot/efi/EFI/ubuntu/x86_64-efi/vorhanden sein.

Erstellen Sie den Ordner x86_64-efi.

Der Ubuntu-Ordner in/boot/EFI/kann auf Ihrem Computer unterschiedlich sein. Dies hängt davon ab, wie Sie ihn bei der Installation des Betriebssystems benannt haben. Fügen Sie ihn nicht ein. Ersetzen Sie es durch den richtigen Pfad.

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

Kopieren Sie die setpci-Moduldateien in den Ordner grub2

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

Erstellen Sie die Datei 01_enable_vga.conf.

Die Datei sollte folgende Codezeilen enthalten:

Vergessen Sie nicht, 00: 17.0 für PCI-Bridge und 02: 00.0 für Anzeige [GPU] durch Ihre Werte zu ersetzen.

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

Reparieren Sie dann die Berechtigungen

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

und aktualisieren Sie die Datei /boot/efi/EFI/ubuntu/grub.cfg

Ubuntu Linux

Sudo update-grub

Führen Sie diesen Befehl nur auf anderen Distributionen aus (unter Ubuntu nach update-grub nicht erforderlich):

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

3. Starten Sie Ihr System neu und überprüfen Sie die Register

Starten Sie Ihren Computer neu und prüfen Sie, ob er funktioniert. Ersetzen Sie die IDs erneut durch Ihre. Ihr Terminal sollte endlich 08 (PCI-E Bridge) und 07 (GPU) anzeigen.

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

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

4. Installieren Sie die nVidia-Treiber

Screenshot: http://imgur.com/a/YiBXi

1
ylwghst

Ich hatte das gleiche Problem und bin wegen Google hierher gekommen. Die Datei /etc/grub.d/01_enable_vga.conf scheint Sie und mich zu verwirren

Wenn Sie möchten, dass die Datei den Befehl cat enthält, möchten Sie sie nicht mit cat erstellen (Sie können sie auch mit verschachtelten cat erstellen). Also versuche folgendes:

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

Ich habe die Antwort hier: MacBook Pro 7,1 + Ubuntu 16.04 LTS + nVidia-Treiber

0
Sandy