La tecnologia NVIDIA Optimus e OpenSuse Leap 42.3 - Installazione di Bumblebee

Ciao a tutti,
questa mattina voglio illustrare come utilizzare la tecnologia Optimus di NVIDIA con la distribuzione OpenSuse, basata sul sistema operativo GNU Linux.
Tengo a precisare che tutti i marchi e i nomi utilizzati sono dei rispettivi proprietari e ringrazio chiunque mi comunichi un possibile uso errato all'interno di questo mio blog, così da correggere ed eliminare l'eventuale errore o misunderstanding.

Veniamo a noi, NVIDIA ha sviluppato la tecnologia Optimus per implementare un sistema grafico ibrido senza l'uso di hardware multiplexer.
L'idea è quella di suddividere i compiti tra la GPU integrata e quella dedicata.
La prima è adibita a gestire il display, mentre la seconda, quella dedicata, viene impiegata per gestire operazioni più complesse ed impegnative con lo scopo di inviare il risultato alla GPU integrata per la visualizzazione.
Uno degli obiettivi principali della tecnologia è quella di risparmiare energia e aumentare l'autonomia degli apparati portatili, infatti se è attiva l'alimentazione a batterie la GPU dedicata si spegne. Può, ovviamente, essere utilizzata anche su macchine desktop con grafica Intel integrata e una scheda grafica NVIDIA dedicata. Per i sistemi Linux la tecnologia NVIDIA Optimus può essere utilizzata con diverse implementazioni software: Bumblebee (implementazione opensource e sviluppata in modo indipendente dalla comunità e che mi appresto a illustrarne l'installazione), NVIDIA Prime e Nvidia-xrun.

Bumblebee gestisce la GPU dedicata attraverso altri due componenti:
  • il software di gestione dell'alimentazione dell'hardware video dedicato e che provvede a spegnerlo quando non utilizzato.
  • un bridge che permette la visualizzazione sullo schermo principale attraverso la scheda integrata del rendering elaborato off-screen attraverso la GPU dedicata.
Per creare il bridge tra un server X già avviato e la scheda video dedicata si può usare il software VirtualGL (opensource) o primus di NVIDIA.
In entrambe i casi l'accesso alla scheda video dedicata dovrà essere gestito manualmente perché il sistema automatico (ad esempio in baso al carico grafico) ancora non è stato implementato.

Installazione di tutti i componenti necessari in OpenSuse 42.3.

Il pc su cui ho fatto le prove è un notebook ASUS UX510U provvisto del seguente hardware: (basta utilizzare il comando lspci)

00:00.0 Host bridge: Intel Corporation Device 5904 (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 02)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d10 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device 9d58 (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Device 9d71 (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev ff)
02:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)


Le GPU di cui è provvisto è data dalla VGA Intel e dalla scheda video dedicata NVIDIA GeForce GTX950M.

Installando il sistema operativo senza modificare la configurazione di default verranno riconosciute e installati i driver i915 per l'Intel e i nouveau per la NVIDIA.
Quindi completata l'installazione bisognerà con il procedere all'installazione e configurazione dei componenti bumblebee.
OpenSuse mette a disposizione una guida a questo indirizzo: https://en.opensuse.org/SDB:NVIDIA_Bumblebee.
L'ho seguita e purtroppo ho avuto vari problemi, tra cui la perdita delle modalità video ritrovandomi con un risoluzione di 800x600 e i vari altri problemi come  Cannot access secondary GPU, Failed to assign any connected display devices to X screen 0, Cannot access secondary GPU - error: Could not load GPU driver.... .
Dopo varie prove, specialmente per risolvere il problema della risoluzione ho individuato una procedure leggermente diversa da quella indicata dalla guida menzionata.

Di seguito la sequenza dei comandi:
  •  zypper update (meglio aggiornare all'ultima versione tutti i componenti installati)
  • snapper create -d BeforeBB (per sicurezza meglio creare un punto di ripristino, ovviamente funziona se il file system e btrfs)
  • andare all'indirizzo "https://software.opensuse.org/download.html?project=home%3ABumblebee-Project%3ABumblebee3&package=dkms-bbswitch" e scaricare l'installer di dkms-bbswitch
  • una volta installato, attraverso yast2, passare alla normale procedura prevista dalla guida di OpenSuse
  • zypper in bumblebee (installazione della pacchetti fondamentali di bumblebee)
  • usermod -aG bumblebee username (assegnare al proprio utente al gruppo per la gestione dell'alimentazione della GPU dedicata)
  • systemctl enable bumblebeed (abilitare il demone bumblebee)
  • systemctl start bumblebeed (avvio del demone)
  • echo "blacklist nouveau" | sudo tee -a /etc/modprobe.d/99-local.conf (evitare di caricare i driver nouveau all'avvio)
  • mkinitrd (aggiornare l'immagine iniziale dei moduli da caricare nel kernel)
  • zypper in Mesa-libGL1-32bit libX11-6-32bit primus-32bit (installare le librerie a 32bit)
  • Riavviare il pc così da caricare tutte le modifiche apportate, si potrebbe fare anche senza riavviare.
Passiamo ad installare i driver NVIDIA:
  • zypper ar -c -f http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Leap_42.3 X11:Bumblebee (aggiungere il repository ove si trovano i driver desiderati)
  • zypper in nvidia-bumblebee nvidia-bumblebee-32bit (Installare i driver)
  • systemctl enable dkms (abilitare il kernel per il sistema di generazione dei moduli dai sorgenti)
  • mkinitrd 
  • ldconfig (aggiornare i collegamenti alle librerie)
  • echo "blacklist nvidia" | sudo tee -a /etc/modprobe.d/99-local.conf (stessa operazione fatta per i driver nouveau)
  • mkinitrd
  • mkdir -p /usr/lib64/nvidia/xorg/modules/extensions (creare la directory per la gestione dei moduli per xorg)
  • ln -s /usr/lib64/xorg/modules/extensions/nvidia/nvidia-libglx.so /usr/lib64/nvidia/xorg/modules/extensions/libglx.so (linkiamoci i moduli)
  • vim /etc/bumblebee/bumblebee.conf (editare il file di configurazione di bumblebee per avviare in modo corretto tutti i moduli)
    • modificare nelle sezioni tra parentesi quadre le seguenti direttive:
      [bumblebeed] 
      TurnCardOffAtExit=true 
      Driver=nvidia
       
      Riavviare il sistema e tutto dovrebbe essere in ordine. 
    • Fare le prove con optirun glxsphere..... ecc...
J.J. Pilot

Nessun commento:

Posta un commento

Initiative Q - token free per 14 gg

Ciao a tutti, è un po' che non scrivo nel blog, ma non ci sono stati molti cambiamenti nei faucet rispetto a quello che già vi avevo ci...

Bitcoin senza fatica