Instalacja bumblebee w układach hybrydowych intel/nvidia ubuntu 15.04 i 14.04

Wyłącznie system! Wątpliwości dotyczące aplikacji proszę umieszczać niżej, w odpowiednich forach.
Bury91
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 22 kwie 2014, 00:36
Płeć: Mężczyzna
Wersja Ubuntu: 15.04
Środowisko graficzne: GNOME
Architektura: x86_64

Instalacja bumblebee w układach hybrydowych intel/nvidia ubuntu 15.04 i 14.04

Post autor: Bury91 »

W Ubuntu 14.04 i nowym 15.04 napotykałem się na problem z instalacją bumblebee i sterownikami nvidii. Wydaje mi się że udało mi się rozwiązać ten problem :)
Poniżej zaprezentuję kroki, które wykonałem, aby bumblebee, optirun i primusrun zadziałały u mnie :) mam nadzieję, że temat pomoże też Wam :) W razie niepowodzenia i błędów, na końcu miniporadnik jak sobie poradzić z czarnym ekranem.

ZŁOTA ZASADA NR 1: NAJPIERW PRZECZYTAJ, POTEM RÓB!!!

Wszystkie komendy apt-get można zastąpić aptitude (w razie problemów z uruchomieniem środowiska graficznego i instalacji z trybu tekstowego przez apt-get)

1. Instalacja bumblebee z oficjalnego repo Ubuntu
-instalujemy bumblebee:

Kod: Zaznacz cały

sudo apt-get install bumblebee bumblebee-nvidia 

-sprawdzamy wersję bbswitch i kernela:

Kod: Zaznacz cały

dkms status

-instalujemy bbswitch-dkms

Kod: Zaznacz cały

sudo apt-get install bbswitch-dkms
-Instaujemy primus

Kod: Zaznacz cały

sudo apt-get install primus
-włączamy bumblebeed

Kod: Zaznacz cały

sudo systemctl enable bumblebeed
-dodajemy użytkownika do używania bumblebee

Kod: Zaznacz cały

sudo gpasswd -a $USER bumblebee
2. Dodajemy wpisy
i915
bbswitch
do plików /etc/modules i /etc/modules-load.d/modules.conf

Kod: Zaznacz cały

sudo gedit /etc/modules
(kikamy plik > zapisz lub ctrl+s)
i

Kod: Zaznacz cały

sudo gedit /etc/modules-load.d/modules.conf
(ctrl+s)
3. Teraz dodajemy nouveau do czarnej listy (blacklist). Nieważne czy chcemy później z niego korzystać, jest to OBOWIĄZKOWY KROK, gdyż ładowaniem sterowników nouveau/nvidia ma zarządzać załączony w pakiecie bumblebee bbswitch.
W tym celu do jednego z plików (/etc/modprobe.d/nouveau.conf LUB /etc/modprobe.d/blacklist-nouveau.conf) dodajemy wpis
blacklist nouveau

Kod: Zaznacz cały

sudo gedit /etc/modprobe.d/nouveau.conf

LUB

Kod: Zaznacz cały

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
W 15.04 polecam dodać wpis do drugiego z wyżej wymienionych plików.
Uruchamiamy ponownie komputer

Kod: Zaznacz cały

sudo reboot
4. Sprawdzamy poprawność działania bbswitch
sudo cat /proc/acpi/bbswitch powinien dać wynik OFF
sudo echo ON > /proc/acpi/bbswitch
jeżeli wywala jakiś błąd przy tym, typu brak dostępu itp to walimy

Kod: Zaznacz cały

sudo chmod 666 /proc/acpi/bbswitch

Kod: Zaznacz cały

sudo cat /proc/acpi/bbswitch
powinno dać wynik ON
To potwierdza działanie bbswitch

Kod: Zaznacz cały

sudo reboot
5. Po ponownym urochomieniu instalujemy sterowniki nvidii. Ja używam nvidia 340, nie wiem jak z innymi. :)

Kod: Zaznacz cały

sudo apt-get install nvidia-340
6. . Należy zblacklistować sterownik nVidii, w tym samym celu co nouveau- czyli aby sterował nim bbswitch. Służy to zapobiegnięciu automatycznemu ładowaniu sterownika nVidii, jeśli pominiesz ten krok, nie zobaczysz interfejsu graficznego tylko czarny ekran!!!. Na końcu opiszę, jak się ratować z takiej sytuacji :)
Do rzeczy.

Kod: Zaznacz cały

sudo gedit /etc/modprobe.d/bumblebee.conf
Plik powinien wyglądać tak:
# This file is installed by bumblebee, do NOT edit!
# to be used by kmod / module-init-tools, and installed in /etc/modprobe.d/
# or equivalent
# do not automatically load nouveau as it may prevent nvidia from loading
blacklist nouveau
# do not automatically load nvidia as it's unloaded anyway when bumblebeed
# starts and may fail bumblebeed to disable the card in a race condition.
blacklist nvidia
blacklist nvidia-current
blacklist nvidia-current-updates
# 304
blacklist nvidia-304
blacklist nvidia-304-updates
blacklist nvidia-experimental-304
# 310
blacklist nvidia-310
blacklist nvidia-310-updates
blacklist nvidia-experimental-310
# 313
blacklist nvidia-313
blacklist nvidia-313-updates
blacklist nvidia-experimental-313
# 319
blacklist nvidia-319
blacklist nvidia-319-updates
blacklist nvidia-experimental-319
# 325
blacklist nvidia-325
blacklist nvidia-325-updates
blacklist nvidia-experimental-325
# 331
blacklist nvidia-331
blacklist nvidia-331-updates
blacklist nvidia-experimental-331
# 334
blacklist nvidia-334
blacklist nvidia-334-updates
blacklist nvidia-experimental-334
# 337
blacklist nvidia-337
blacklist nvidia-337-updates
blacklist nvidia-experimental-337
# 340
blacklist nvidia-340
blacklist nvidia-340-updates
blacklist nvidia-experimental-340
# 343
blacklist nvidia-343
blacklist nvidia-343-updates
blacklist nvidia-experimental-343
# 346
blacklist nvidia-346
blacklist nvidia-346-updates
blacklist nvidia-experimental-346
# 349
blacklist nvidia-349
blacklist nvidia-349-updates
blacklist nvidia-experimental-349
# 352
blacklist nvidia-352
blacklist nvidia-352-updates
blacklist nvidia-experimental-352
# 355
blacklist nvidia-355
blacklist nvidia-355-updates
blacklist nvidia-experimental-355
# Workaround to make sure nvidia-uvm is removed as well
remove nvidia rmmod nvidia-uvm nvidia
Jeśli nie ma naszej wersji sterownika, to dopisujemy wiązankę:

Kod: Zaznacz cały

blacklist nvidia-numer_sterownika
blacklist nvidia-numer_sterownika-updates
blacklist nvidia-experimental-numer_sterownika
7. Czas na edycję pliku konfiguracji bumblebee. Dopisujemy, niezależnie od wersji używanego sterownika nvidia-331, inaczej bumbel nie zadziała i będzie :cry:

Kod: Zaznacz cały

sudo gedit /etc/bumblebee/bumblebee.conf
a) linia 22
Driver=nvidia
b) linia 55
KernelDriver=nvidia-331
c) linia 58
LibraryPath=/usr/lib/nvidia-331:/usr/lib32/nvidia-331
d) linia 61
XorgModulePath=/usr/lib/nvidia-331/xorg,/usr/lib/xorg/modules
Można też wrzucić cały plik konfiguracji, mój wygląda tak i działa:
# Configuration file for Bumblebee. Values should **not** be put between quotes
## Server options. Any change made in this section will need a server restart
# to take effect.
[bumblebeed]
# The secondary Xorg server DISPLAY number
VirtualDisplay=:8
# Should the unused Xorg server be kept running? Set this to true if waiting
# for X to be ready is too long and don't need power management at all.
KeepUnusedXServer=false
# The name of the Bumbleblee server group name (GID name)
ServerGroup=bumblebee
# Card power state at exit. Set to false if the card shoud be ON when Bumblebee
# server exits.
TurnCardOffAtExit=false
# The default behavior of '-f' option on optirun. If set to "true", '-f' will
# be ignored.
NoEcoModeOverride=false
# The Driver used by Bumblebee server. If this value is not set (or empty),
# auto-detection is performed. The available drivers are nvidia and nouveau
# (See also the driver-specific sections below)
Driver=nvidia
# Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d

## Client options. Will take effect on the next optirun executed.
[optirun]
# Acceleration/ rendering bridge, possible values are auto, virtualgl and
# primus.
Bridge=auto
# The method used for VirtualGL to transport frames between X servers.
# Possible values are proxy, jpeg, rgb, xv and yuv.
VGLTransport=proxy
# List of paths which are searched for the primus libGL.so.1 when using
# the primus bridge
PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus
# Should the program run under optirun even if Bumblebee server or nvidia card
# is not available?
AllowFallbackToIGC=false


# Driver-specific settings are grouped under [driver-NAME]. The sections are
# parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
# detection resolves to NAME).
# PMMethod: method to use for saving power by disabling the nvidia card, valid
# values are: auto - automatically detect which PM method to use
# bbswitch - new in BB 3, recommended if available
# switcheroo - vga_switcheroo method, use at your own risk
# none - disable PM completely
# https://github.com/Bumblebee-Project/Bu ... PM-methods

## Section with nvidia driver specific options, only parsed if Driver=nvidia
[driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia-340
PMMethod=auto
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/nvidia-340:/usr/lib32/nvidia-340
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia-340/xorg,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

## Section with nouveau driver specific options, only parsed if Driver=nouveau
[driver-nouveau]
KernelDriver=nouveau
PMMethod=auto
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau
8. Przeinstalowujemy bbswitch-dkms:

Kod: Zaznacz cały

sudo apt-get install --reinstall bbswitch-dkms
sudo reboot
9. Teraz można sprawdzić, czy chodzi:
primusrun glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 630M/PCIe/SSE2
OpenGL core profile version string: 4.4.0 NVIDIA 340.76
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.4.0 NVIDIA 340.76
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

Kod: Zaznacz cały

primusrun glxgears

Kod: Zaznacz cały

optirun glxgears
I wsio :clap: jeśli działa, to gratulacje. Jeśli wyskoczy Wam czarny ekran, to trzeba wypurge'ować wszystkie nasze kroki. W tym celu, wyłączamy x'y za pomocą ctrl+alt+f1, logujemy się za pomocą nazwy użytkownika i hasła i wpisujemy:

Kod: Zaznacz cały

sudo aptitude purge bumblebee
sudo aptitude purge primus
sudo aptitude purge nvidia-340 (lub co tam mamy)
Teraz instalujemy bumbla i sterowniki na nowo:

Kod: Zaznacz cały

sudo add-apt-repository ppa:bumblebee/stable
sudo aptitude update &&sudo aptitude upgrade
sudo aptitude install nvidia-340
sudo aptitude install bumblebee
sudo aptitude install primus
sudo aptitude install linux-headers-generic
sudo reboot 
Zawsze mnie to ratuje w przypadku problemu ze sterownikami nVidii. Zapisać i zapamiętać :)
Wszystkie pliki, których używaliśmy podczas naszej zabawy zostaną usunięte i stworzone na nowo . A więc w razie niepowodzenia- zaczynamy od nowa całą robotę, aż w końcu zadziała :)
ODPOWIEDZ

Wróć do „Instalacja, aktualizacja i konfiguracja Ubuntu”

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 12 gości