Die zur Zeit noch im [testing]-Repo befindlichen Paketen zu mesa und nvidia-378 können jetzt ohne Verrenkungen in libgl/libglx gleichzeitig installiert werden. Möglich wurde die mit der Hilfe der Entwickler der Fedora-Distribution und einigen Patches die, das xorg-server-Projekt beigesteuert hat.

Im ersten, schon erfolgten Schritt wurden einige symbolische Links entfernt. Dies hat einige Optimus-basierte Systeme negativ betroffen, wo ein manueller Eingriff nötig war. Im zweiten Schritt sollten durch eine neue Konfigurationsdatei 10-nvidia-drm-outputclass.conf nun auch Optimus-Systeme reibungslos funktionieren.

Die Entwickler bitten darum, dies nach Möglichkeit ausgiebig zu testen und Erfahrungen unter
diesem Forum-Thread oder im Bugtracker zu dokumentieren.
  • [gelöscht]

So einfach klappt es auch nicht, da gibt es viel Probleme mit div. Abhängigkeiten.

:: mesa und mesa-libgl stehen miteinander in Konflikt. mesa-libgl entfernen? [j/N] j
Fehler: Konnte den Vorgang nicht vorbereiten (Kann Abhängigkeiten nicht erfüllen)
:: nvidia-dkms: benötigt libgl
:: cairo: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: freeglut: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: glu: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: libreoffice-fresh: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: libva: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: libva-vdpau-driver: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: mesa-demos: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: qt4: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: qt5-base: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: sdl2: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: xorg-server: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'
:: xorg-xdriinfo: das Entfernen von mesa-libgl löscht ein benötigtes Packet von 'libgl'

da es wohl kein mesa-libgl mehr gibt.

Gruß
libglvnd sollte libgl liefern. War das dabei?

Der Vollständigkeit halber: Falls du multilib aktiviert hast, muss auch multilib-testing aktiviert werden.
  • [gelöscht]

Ja libglvnd ist dabei und multilib habe ich nicht aktiv. Ich teste aber mal weiter, will mir aber erst eine Testumgebung per snapshot aufbauen. Zur Zeit läuft mein eigenes Bauwerk mit scripten auch sehr gut und werde es als Referenz nutzen.
  • [gelöscht]

Hallo,

so snapshot erstellt und in Grub eingebunden. Testing nicht freigegeben sondern die Pakete mittels pacman -U installiert
Ergebnis =
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: GeForce GTX 660M/PCIe/SSE2

sehr schön, nur wie schalte ich auf die Intel zurück, also modesetting. Per script die 10-nvidia-drm-outputclass.conf ändern? Wird es evtl wie bei einer anderen Disrti per Haken im Nvidia-Setting funktionieren?

Gruß
pitt schrieb Testing nicht freigegeben sondern die Pakete mittels pacman -U installiert
Das ist ein sog. partielles Update und als solches nicht unterstützt.
  • [gelöscht]

Das ist ein sog. partielles Update ja und bei mir lief es immer so wenn es klappt. Auch neue Kernel habe ich auf dieser Art getestet. :cool:
Dafür funktioniert es aber einwandfrei bis jetzt, nicht mal Grafikprobleme mit denKwin-heini sind bis jetzt aufgetreten.

Gruß
Kernel kann man auch gut so testen, aber Pakete mit vielen Abhängigkeiten eher nicht. Aber wir werden OT.
  • [gelöscht]

Test verlief einwandfrei (2 Tage Dauerbetrieb, div Programmen und immer glxspheres64 im Hintergrund) und sauber durch, Einbindung des testings-repo führte so keine weiteren installationen.
Das Umschalten auf der HD4000 funktioniert nicht, auch wenn man ein kpl andere config benutzt - Bildschirm bleibt dann schwarz, Grafikmodus ist aber vorhanden.
Somit bin ich doch fürs erste posetiv überascht.

Gruß
9 Tage später
  • [gelöscht]

Moin,

mit der stable Version ist der Fehler auch weg - läuft und mit einen Script schalte ich um
#!/bin/sh

Verw() {
cat <<STR

Verwendung:

prime-select [gpu]

gpu: intel oder nvidia

Beispiel:
prime-select nvidia

STR

}


[ `whoami` != "root" ] && printf "\n%s\n\n" "Bitte als Root ausführen" && exit 1

[ -z "$@" ] && Verw && exit 1

case "$@" in
    "intel")
        echo ""    > "/etc/modules-load.d/nvidia.conf"
        echo "off" > "/etc/prime-discrete"
	    
	echo ""    > "/etc/modprobe.d/nvidia-blacklist.conf"
	   
        rm /etc/X11/xorg.conf.d/10-xorg.conf
        
       ;;
    "nvidia")
        echo "nvidia"                          > "/etc/modules-load.d/nvidia.conf"
        echo "on"                              > "/etc/prime-discrete"
	
	echo "# generated by nvidia-installer" > "/etc/modprobe.d/nvidia-blacklist.conf"
        echo "blacklist nouveau"              >> "/etc/modprobe.d/nvidia-blacklist.conf"
        echo "options nouveau modeset=0"      >> "/etc/modprobe.d/nvidia-blacklist.conf"

	ln -sf /etc/X11/config.d/10-nvidia-drm-outputclass.conf /etc/X11/xorg.conf.d/10-xorg.conf
     
    ;;
    *)
        Verw
    ;;
esac

5 Monate später
  • [gelöscht]

Hier eine Beisiellösung!

Einrichten von Optimus in der neuesten Arch-Version Stand 1.3.2017
siehe
https://forum.archlinux.de/viewtopic.php?id=30219
Zuerst möchte ich die evtl auftretenen Probleme, je nach System, beschreiben.

1. Mit Intel-Treiber könnte es zu einem schwarzer Bildschirm kommen. Das passiert auf einigen Systemen wenn in /usr/lib/modprobe.d blacklist – optionen für nouveau oder nvidia stehen

2. Bei wenigen Systemen führt es zu Startproblemen (Intel), wenn modesetting genutzt wird und gleichzeitigt nouveau per blacklist abgeschaltet ist. Womit der nouveau div. Probleme mit modesetting erzeugt. Nvidia macht in Verbindung mit nouveau ebenfalls Probleme.

Auf meinem System läuft es soweit, somit sind bei mir intel, nouveau und nvidia installiert.

Anmerkung:
Unter Manjaro sollte man die Verzeichnisse ebenfalls so erstellen und die mhwd‘s unberührt lassen, ausser die Dateien in modprobe.d sowie modules-load.d sollten keinen Inhalt haben aber vorhanden sein.

Optimus:
Es greifen mehrere Scripte und Configurationsdateien ineinander. Diese sind:
1. 20-prime-provider-sh in /etc/X11/xinit/ xinitrc.d/
2. prime.offload in /sbin/
3. prime-next-gpu in /bin/
4. prime-select in /bin/
5. und die Config prime-next-gpu.conf in /etc/ sowie die intel.conf und die nvidia.conf in /etc/X11/config.d

Prinzip:
der Script prime-next-gpu überprüft ob die prime-next-gpu.conf vorhanden ist (wird gegebenfalls erstellt), fragt die prime-next-gpu.conf ab und übernimmt den Wert für prime-select.

Nun startet dieser Script /bin/prime-select und übernimmt den entsprechenden Wert von prime-next-gpu.
.
Jetzt setzt prime-select die entsprechenden Configurationsdateien wie ein Link (10-xorg.conf) in /etc/X11/xorg.conf.d.

Weiter wird in modprobe.d und modules-load.d die Konfigurationsdateien modules.conf angelegt mit dem entsprechenden Inhalten. Eventuelle Dateien in /usr/lib/modprobe.d (nvidia.conf etc.) werden entfernt. (Muß evtl angepasst werden)

Der Script prime-offload wird über xinitrc.d/20-prime-provider.sh gestartet und nur ausgeführt wenn das Modul nvidia geladen ist nun werden die Provider gesucht, zuletzt wird xrandr --setprovideroutputsource "$sink" "$src" sowie xrandr –auto oder je nach dem was man braucht. Beispiel steht in diesem Script.

Anmerkung:
Das Verzeichniss /etc/X11/xinit/xinitrc.d für die 20-prime-provider.sh habe ich gewählt um unhabhängig gegenüber Displaymanager zu sein.

Nach einem Neustart sollte nun die entsprechend Karte laufen.

Voraussetzung:
Die Configurationsdateien intel.conf, nvidia.conf sowie das Verzeichniss config.d sollten in /etc/X11/ vorhanden sein, evtl erstellen.

Hier die intel.conf
Section "Module"
    Load "nouveau"
EndSection

Section "Device" 
       Identifier  "Intel" 
       Driver      "intel" 
       Option      "DRI"     "3" 
       Option      "AccelMethod" "sna" 
EndSection 

Section "DRI" 
        Group      "video" 
        Mode       0666 
EndSection 

Section "Extensions" 
      Option "Composite" "Enable" 
EndSection

Die Intel.conf wurde angepasst mit Section Module. Somit kann man im Intel - Modus mit dem Befehl DRI_PRIME=1 Programmname dieses Programm mit den nouveau Treiber starten, Prinzip wie bumblebee nur ohne diese Leistungshemmende alte Software!

Beispiel:
$ DRI_PRIME=1 glxgears
Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
46854 frames in 5.0 seconds = 9370.725 FPS
lief per nouveau Treiber



sowie die nvidia.conf
Section "OutputClass" 
   Identifier "intel" 
   MatchDriver "i915" 
   Driver "modesetting" 
EndSection 

Section "OutputClass" 
   Identifier "nvidia" 
   MatchDriver "nvidia-drm" 
   Driver "nvidia" 
   Option "AllowEmptyInitialConfiguration" 
   Option "PrimaryGPU" "yes" 
   ModulePath "/usr/lib/nvidia/xorg" 
EndSection

Die Datei prime-next-gpu.conf wird, falls nicht vorhanden, angelegt und auf intel gesetzt. Es wird also beim ausführen von prime-next-gpu das System auf den Intel-Treiber gesetzt.

Weiterhin sollten nvidia (oder nvidia-lts) sowie xf-86-video-intel installiert sein.

Man kann nun mit sudo /bin/prime-next-gpu die Grafikkarte starten, ist die intel aktiv wird die nvidia eingebunden und läuft nach einem Neustart und umgekehrt. Man könnte sich ein Icon auf dem Desktop anlegen und mit prime-next-gpu verknüpfen.

Hier nochmals alle Scripte. Viel Spass beim probieren, experimentieren.

20-prime-provider.sh =
#! /bin/sh 
# Starte prime-offload wenn die Datei vorhanden ist
# prime-offload entspricht etwa wie 
# xrandr --setprovideroutputsource modesetting NVIDIA-0
# nur das die Werte automatisch ermittelt werden.

if [ -e /sbin/prime-offload ]; then 
       /sbin/prime-offload 
fi 

prime-offload =
#!/bin/sh 

# Für NVIDIA's geschlossene Treiber 
# falls nicht geladen, bricht der Script hier ab. 

if ! lsmod | grep nvidia > /dev/null; then 
    exit 0 
fi 

#Abfrage der Provider 

output="$(xrandr --listproviders)" 

if [ "$use_randr_names" = true ]; then 
   src=$(echo "$output" | grep " Source" | head -n1 | awk '{print $NF}' | cut -d: -f2) 
   sink=$(echo -e "$output" | grep " Sink" | head -n1 | awk '{print $NF}' | cut -d: -f2) 
else 
   src=$(echo "$output" | grep " Source" | head -n1 | cut -d: -f3 | cut -d" " -f2) 
   sink=$(echo -e "$output" | grep " Sink" | head -n1 | cut -d: -f3 | cut -d" " -f2) 
fi 

# Setzen der Provider 
xrandr --setprovideroutputsource "$sink" "$src" 

xrandr --auto 
# Beispiele falls mehrere Monitore angeschlossen sind, hier wird VGA1 zum 
# Beispiel als rechter Schrim gesetzt. Standard ist xrandr –auto.
# xrandr --output LVDS1 --auto 
# xrandr --output VGA1 --auto --right-of LVDS1 
# xrandr --output LVDS1 --set "scaling mode" center	
# xrandr --output VGA1 --set "scaling mode" center
# output - Name muß angepasst werden (Beispiel statt LVDS / HDMI)
exit 0

prime-next-gpu =
#! /bin/bash 
# Auswerten der config und entsprechend die Grafikkarte umschalten 

if [ -f /etc/prime-next-gpu.conf ]; then 
   var=$(cat /etc/prime-next-gpu.conf) 
   /bin/prime-select $var 
   echo 'Systemkonfiguration auf' $var 'gesetzt' 
else 
  echo "intel" > "/etc/prime-next-gpu.conf" 
  echo "Konfiguratonsdatei wurde angelegt" 
  var=$(cat /etc/prime-next-gpu.conf) 
  /bin/prime-select $var 
  echo 'neue Systemkonfiguration auf' $var 'gesetzt' 
fi 

exit 0

prime-select =
#!/bin/sh 

[[ $(whoami) != "root" ]] && printf "Bitte als root ausführen\n" && exit 0

D=("intel" "nvidia") 

modul_Intel() { 
echo '' > '/etc/modules-load.d/modules.conf' 

echo 'options nouveau modeset=0' > '/etc/modprobe.d/modules.conf' 

echo 'nvidia' > '/etc/prime-next-gpu.conf' 

[[ -f /usr/lib/modprobe.d/nvidia-lts.conf ]] && rm /usr/lib/modprobe.d/nvidia-lts.conf 
[[ -f /usr/lib/modprobe.d/nvidia.conf ]] && rm /usr/lib/modprobe.d/nvidia.conf 

ln -sf /etc/X11/config.d/intel.conf /etc/X11/xorg.conf.d/10-xorg.conf 
} 

modul_Nvidia() { 
echo 'nvidia' > /etc/modules-load.d/modules.conf 

echo 'blacklist nouveau 
options nouveau modeset=0
options nvidia-drm modeset=1' > '/etc/modprobe.d/modules.conf'  
## Der letzte Wert setzt den Nvidia-Treiber auf Syncronization womit ein zerreissen des Bildes vermieden wird.
## siehe auch https://devtalk.nvidia.com/default/topic/957814/prime-and-prime-synchronization/

echo 'intel' > '/etc/prime-next-gpu.conf' 

[[ -f /usr/lib/modprobe.d/nvidia-lts.conf ]] && rm /usr/lib/modprobe.d/nvidia-lts.conf     
[[ -f /usr/lib/modprobe.d/nvidia.conf ]] && rm /usr/lib/modprobe.d/nvidia.conf 

ln -sf /etc/X11/config.d/nvidia.conf /etc/X11/xorg.conf.d/10-xorg.conf 
} 

case "$@" in 
  "${D[0]}") # intel 
       modul_Intel; 
       # 
       ;; 
  "${D[1]}") # nvidia 
       modul_Nvidia; 
       # 
       ;; 
esac 

exit 1

Gruß Amber
  • [gelöscht]

Was noch zu schreiben wäre,
das hier options nvidia-drm modeset=1 syncronisiert die Nvidia womit diese in 60Hz läuft soll gegen Verzerrungen helfen. Man kann diese option auch weglassen wenn es läuft so hat man wesentlich höhere Frames
  • [gelöscht]

@pitt: Schreibe sowas besser ins Wiki.
War auch mein erster Gedanke, der Text kann ja so praktisch fix und fertig übernommen werden. Hier geht er unter.
  • [gelöscht]

  • Bearbeitet
Moin,

würde ich gern nur kann ich mich dort nicht anmelden
Fehlermeldung
Die automatische Erstellung des lokalen Benutzerkontos ist fehlgeschlagen: Die automatische Benutzerkontenerstellung ist nicht erlaubt.
Weiter brauche ich dort bestimmt hilfe wie einordnen und so, falls es mit dem einloggen mal klappt.

peace

Edit:Der Fehler ist wohl schon länger bekannt und bis heute nicht gelöst somit kann ich der bitte nicht nachkommen.
4 Monate später
  • [gelöscht]

!!Fehler!!
Zumindest in Verbindung mit Plasma 5 und SDDM sowie Intel /Nvidia-System tritt mit oben genannter Config der Fehler: Kein Loginscreen unter Nvidia, auf.
Die Lösung ist in der Config den Treiber modesetting herausnehmen und durch intel ersetzen dann läuft es, obwohl es laut Nvidia nicht funktionieren sollte.
Modesetting hat da schon länger ein Problem

Gruß