setpci не изменяет значение регистра для устройства моста (драйвер NVIDIA черная экранная проблема)

Я недавно настроил свой MacBook Air (в конце 2010) к двойной загрузке ОС 10.10 с Ubuntu 16.04, и конечно по пути я столкнулся с черной экранной проблемой при использовании собственных драйверов NVIDIA. Я только что попробовал фиксацию Andreas здесь. Все это, кажется, идет без помех, за исключением того, что, когда я добираюсь до шага № 4 к перезагрузке и проверке, я не получаю корректный результат для регистра PCI-E для устройства моста. Это - то, что я получаю для шага № 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]

Я создал сценарий/etc/grub.d/01_enable_vga.conf личинки, как описано:

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

... и также измененный полномочия и обновленная личинка...

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

... но когда я перезагружаю машину и проверку, значение для устройства моста является неправильным:

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

Какие-либо предложения на том, что я могу сделать для получения этого набора правильно, прежде чем я установлю драйверы NVIDIA? Я изменяю неправильное устройство моста? Существует ли лучший способ сделать это?

Заранее спасибо!

2
задан 13 April 2017 в 15:24

2 ответа

Я наконец решил проблему, когда setpci не изменяет значение моста PCI-E.

, Если Вы не можете установить значение PCI-E brigde регистры с помощью setpci команду для получения драйверов Nvidia GeForce, работающих над машиной Apple MacBook, пробуют эти шаги:

1. Найдите свои идентификаторы шины 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]

, Вам будет нужен идентификатор Мост PCI Express и Ваш дисплей в формате XX:XX.X

, Ваш идентификатор может отличаться.

В этом примере наш идентификатор 00:17.0 для PCI-E brige и 02:00.0 для дисплея [GPU].

2. Создайте сценарий

GRUB, Наш сценарий будет немного отличаться, чем в упомянутом выше сообщении.

я заметил двух вещей. Grub2, установленный с помощью дистрибутива (мой - Centos) процесс установки, не содержит модуль личинки setpci. Это - причина, почему личинка не изменяет регистры в то время как начальная загрузка. Затем необходимо загрузить setpci модуль в личинку, прежде чем мы выполним команды для изменения регистров.

модули 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

Загрузки будут установлены в/usr/lib/grub/x86_64-efi/, но setpci файлы модуля должны присутствовать в/boot/efi/EFI/ubuntu/x86_64-efi /

, Создают x86_64-efi папку.

папка Ubuntu в/boot/EFI/может отличаться на Вашей машине, зависит, как Вы назвали его в процессе установки ОС, не вставляйте его. Замените его корректным путем.

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

Копия setpci файлы модуля в grub2 папку

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

Создают 01_enable_vga.conf файл.

файл должен содержать эти строки кода:

не забывают замену 00:17.0 для моста PCI и 02:00.0 для дисплея [GPU] с Вашими значениями.

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

Затем полномочия восстановления

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

и обновление/boot/efi/EFI/ubuntu/grub.cfg

Ubuntu Linux

sudo update-grub

Делают эту команду только на других дистрибутивах (не необходимый на Ubuntu после личинки обновления):

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

3. Перезагрузите свою систему, и контрольные регистры

Перезагружают Вашу машину и проверку, если она работает. Замените идентификатор Вашим снова. Ваш терминал должен наконец показать 08 (мост PCI-E) и 07 (GPU).

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

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

4. Установите драйверы Nvidia

Снимок экрана: http://imgur.com/a/YiBXi

2
ответ дан 2 December 2019 в 03:42

Я имел ту же проблему и добрался здесь из-за Google. Кажется, что и Вы и я был смущен файлом/etc/grub.d/01_enable_vga.conf

, Вы хотите иметь файл, содержат команду кошки, Вы не хотите создавать его с кошкой (хорошо, можно создать его с вложенной кошкой). Так попробуйте это:

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

я получил ответ здесь: MacBook Pro 7,1 + Ubuntu 16.04 LTS + драйверы Nvidia

0
ответ дан 2 December 2019 в 03:42

Другие вопросы по тегам:

Похожие вопросы: