
## /etc/gdm/custom.conf [daemon] TimedLoginEnable=false AutomaticLoginEnable=true TimedLogin=window AutomaticLogin=window TimedLoginDelay=30 DefaultSession=gnome
Hier ist mal wieder ein alter Artikel, den ich jetzt erst zu Ende schreiben konnte…
Zur Problemstellung: es handelt sich um ein Cluster aus 20 Maschinen und 40 GPUs (2 Nvidia GTX 470 pro Maschine); die onBoard-Grafik ist mit der Konsole verbunden, an den GTXen hängt gar nichts, also kein Monitor. Die GPU-Power soll aber voll genutzt werden — was über SSH nicht möglich ist… Um sie zu nutzen sind wir den folgenden Umweg gegangen:
$ lspci|grep VGA 01:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 10) 08:00.0 VGA compatible controller: nVidia Corporation Device 06cd (rev a3) 82:00.0 VGA compatible controller: nVidia Corporation Device 06cd (rev a3)
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section "Files" EndSection Section "Module" Load "dbe" Load "extmod" Load "type1" Load "freetype" Load "glx" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "keyboard" EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" Option "ConnectedMonitor" "CRT" BusID "8:0:0" EndSection Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" Option "ConnectedMonitor" "CRT" BusID "82:0:0" EndSection Section "Screen" Identifier "Screen0" Device "Device0" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection
$ X -config /etc/X11/XF86Config
Hier Output und Logfiles gucken, eventuelle Fehler beheben; „no screen found“ darf jetzt nicht mehr kommen!
$ useradd -m window
## /etc/gdm/custom.conf [daemon] TimedLoginEnable=false AutomaticLoginEnable=true TimedLogin=window AutomaticLogin=window TimedLoginDelay=30 DefaultSession=gnome
Das lässt sich dann auch prüfen, nach Reboot:
$ w 13:17:26 up 32 min, 3 users, load average: 0.76, 0.73, 0.52 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT window tty7 :0 12:45 31:57 3.79s 0.05s gnome-session
Nächster Schritt: der „window“-User macht xhost + — somit erlaubt er allen Hosts, sich zu verbinden. Im Anschluss daran macht User „meh“ macht export DISPLAY=:0.0 und startet dann seine X-Programme
=> diese Programme werden im X-Kontext des User „window“ ausgeführt
Beispiel: glxgears aufrufen, und zwar am besten einmal ohne die eben erklärte Konfiguration und einmal mit. Anhand der unterschiedlichen Zahlen ist sehr deutlich zu sehen, wann die GPU wirklich genutzt wird und wann nicht. .xprofile anlegen (wird beim Automatischen EInloggen des Users in Gnome dann ausgewertet):
#!/bin/sh # # ~/.xprofile # # Executed by gdm at login # export DISPLAY=:0.0 xhost +
Die Grundidee ist nun, denke ich, einigermaßen klar; natürlich kann (und sollte) das Setup noch eingehend verfeinert und erweitert werden — die Möglichkeiten sind vielfältig.