Драйверы MacBook Pro 7,1 + Ubuntu 16.04 LTS + nVidia

После того, как я нашел здесь руководство, я обнаружил, что хотя мое оборудование такое же, как и его автор, я не смог воспроизвести те же результаты. После создания сценария GRUB для регистрации регистров PCI во время загрузки, выполнения исполняемого файла и обновления конфигурационных файлов GRUB (т. Е. После выполнения шага 3) я ввожу:

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

В соответствии с шагом 4 он выдает 00 вместо ожидаемого 08

Однако, когда я вхожу в

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

, он возвращает ожидаемое значение 07, как указано в руководстве.

Что еще я должен сделать, чтобы я мог использовать драйверы nVidia в моей настройке?

Я не совсем понимаю

У меня есть MacBook Pro с двойной загрузкой (7,1) с OS X и Ubuntu 16.04 LTS.

rEFInd (версия 0.10.3-1) - мой загрузчик.

== Шаг 3 ==

После ввода

dmesg | grep -i efi

Я получаю следующее:

[    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

Это больше моих выходов, когда следуете указанному руководству.

2. Найдите правильные идентификаторы шины PCI-E

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]

2. Найдите правильные идентификаторы шины PCI-E

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

Затем введите следующее:

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

Ctrl + X

Y для Да для сохранения файла конфигурации.

Затем запустите

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

Обе эти команды выполняются нормально.

4. Перезагрузите и проверьте

После перезагрузки я запускаю:

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

И получаю 00 вместо ожидаемого 08.

Я также запускаю: [ ! d32]

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

, который возвращает ожидаемый 07, как и руководство.

Сообщите мне, могу ли я предоставить более подробную информацию, чтобы помочь мне решить эту проблему.

4. Перезагрузите и проверьте

Я ранее (т. Е. Перед тем, как попытаться следовать руководству) удалил папку «ubuntu» (и, следовательно, соответствующие настройки grub), которая была установлена ​​в разделе EFI при установке Ubuntu, чтобы запустить rEFInd при запуске. Я думал, что они конкурируют с тех пор, как я начал с MacBook, и он автоматически загрузится в Ubuntu, не показывая меню rEFInd.

После удаления rEFInd, переустановки Ubuntu и установки меню Grub, как показано здесь Я выполнил шаги в руководстве драйвера Nvidia.

Успех

Однако теперь, когда вы выбираете «унаследованный двоичный драйвер NVIDIA версии 304.131 от nvidia-304 (проприетарный)» из дополнительных драйверов GUI 'и при внесении изменений он не переключает выделение из нувориша.

Думая, что это был сбой в графическом интерфейсе, я все равно жду, а затем перезагружен, но никаких кубиков - драйвер в стиле Нуво

Я хочу быть осторожным при продолжении, чтобы какие строки я должен вводить здесь?

(Примечание: дополнительное разочарование заключается в том, что после этой переустановки процесс мой WiFi теперь не работает должным образом, несмотря на то, что используются соответствующие драйверы. Это не было проблемой раньше, но я буду иметь дело с этим после того, как смогу разрешить драйверы Nvidia. Возможно, проблемы wifi для 16.04 и Broadcom 432b связаны с чем-то с загрузчики также?)

Спасибо за помощь до сих пор.

1
задан 14 July 2016 в 22:29

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 Bridge и ваш дисплей в формате XX: XX.X

Ваши идентификаторы могут отличаться. [ ! d6]

В этом примере нашими идентификаторами являются PCI Express Bridge для PCI-E brige и 02: 00.0 для отображения [GPU].

2. Создайте скрипт GRUB

Наш скрипт будет немного отличаться от указанного выше.

Я заметил две вещи. Grub2, установленный с использованием процесса установки distro (mine is Centos), не содержит 02: 00.0 grub module. Это причина, по которой grub не меняет регистры во время загрузки. Затем необходимо загрузить модуль setpci в grub, прежде чем запускать команды для изменения регистров.

Загрузить 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 должны присутствовать в /! / efi / EFI / ubuntu / x86_64-efi /

Создайте папку x86_64-efi.

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

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

Скопируйте файлы модуля setpci в папку grub2

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

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

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

Файл должен содержать следующие строки кода:

Не забудьте заменить 00: 17.0 для PCI-моста и 02: 00.0 для отображения [GPU] с вашими значениями.

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 после update-grub):

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

1
ответ дан 23 May 2018 в 11:06
  • 1
    Весь процесс идентичен на любом дистрибутиве с загрузчиком grub2 efi. Мне нужно только проверить, какой пакет в репозиториях ubuntu содержит grub2-efi-modules. – ylwghst 5 August 2017 в 10:18
  • 2
    Я обновил его. Я хотел бы автоматизировать его и создать скрипт для всего этого в будущем. – ylwghst 5 August 2017 в 10:41

Вы должны установить токен spoof_osx_version в refind.conf. Из документации rEFInd http://www.rodsbooks.com/refind/configfile.html:

На некоторых компьютерах Mac эта опция заставляет rEFInd сообщать прошивке, что указанная версия OS X запущена, даже когда выбрана другая ОС. Эффект заключается в том, что прошивка может инициализировать оборудование по-разному, что может иметь полезные (или вредные) результаты. Если видеовыход Mac не работает нормально, этот параметр может помочь. С другой стороны, клавиатура и мыши, как известно, иногда перестают функционировать, если эта опция используется, поэтому вы не должны использовать ее без необходимости. Этот параметр не влияет на аппаратное обеспечение, отличное от Apple. По умолчанию используется не эта функция.

У меня есть Macbook Pro 7,1 с двойной загрузкой macOS Sierra и Ubuntu 16.04, поэтому я устанавливаю:

spoof_osx_version = 10.12

Если вы задаетесь вопросом, как отредактировать refind.conf, обратитесь к http://www.rodsbooks.com/refind/configfile.html .

0
ответ дан 23 May 2018 в 11:06

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

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