После того, как я нашел здесь руководство, я обнаружил, что хотя мое оборудование такое же, как и его автор, я не смог воспроизвести те же результаты. После создания сценария 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 связаны с чем-то с загрузчики также?)
Спасибо за помощь до сих пор.
Я, наконец, решил проблему, когда setpci не меняет значение моста PCI-E.
Если вы не можете установить значение регистра PCI-E brigde, используя команду setpci, чтобы получить Драйверы nVidia GeForce, работающие на вашем компьютере Apple MacBook, проделайте следующие шаги:
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].
Наш скрипт будет немного отличаться от указанного выше.
Я заметил две вещи. 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
Перезагрузите компьютер и проверьте, работает ли он. Замените идентификаторы снова. Ваш терминал должен наконец показать 08 (мост PCI-E) и 07 (GPU).
sudo setpci -s "00:17.0" 3e.b
08
sudo setpci -s "02:00.0" 04.b
07
Снимок экрана: http://imgur.com/a/YiBXi
Вы должны установить токен 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 .