Linux Monitorauflösung für Headless Betrieb permanent einstellen

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Der Linux Kernel verwendet eine Technik mit dem Namen Kernel Mode Setting zum Konfigurieren des Anzeigemodus (Auflösung, Farbtiefe, Wiederholungsrate) des Displaycontrollers (Grafikkarte). In der Standardkonfiguration liest der Kernel dazu die Extended Display Identification Data (EDID)[1] des angeschlossenen Monitors aus, um die bestmögliche Konfiguration automatisch einzustellen. Wird ein Linux System ohne angeschlossenen Monitor gestartet, kann es durch die fehlenden EDID-Informationen beim Starten dazu kommen, dass nach einem Anschließen eines Monitors das Bild schwarz bleibt. In diesem Artikel zeigen wir, wie Sie dieses Problem lösen.

Problembeschreibung

Im konkreten Testfall kommen folgende Hardware- und Software-Komonenten zum Einsatz:

  • LES network+ (Server mit 2 Display-Port Anschlüssen)
  • Kubuntu 16.04.2

Nach der Installation wird das System heruntergefahren und der Monitor abgeschlossen. Das System wird anschließend gestartet (Headless Betrieb). Anschließend wird der Monitor angesteckt, das Bild bleibt dabei jedoch schwarz.

Lösung

In den Grafikeinstellungen finden Sie Informationen zum Display-Namen und zur Auflösung ("DP-1" sowie "1680x1050" im Beispiel). Diese Informationen sind für den Eintrag in der Datei /etc/default/grub erforderlich.
Damit die Anzeige auch funktioniert wenn der Monitor erst nach dem Hochfahren des Systems angeschlossen wird, führen Sie die folgenden Schritte aus:[2]
  1. Lesen Sie die EDID-Daten bei angeschlossenem Monitor aus:
    sudo get-edid > monitor.edid
    (Sofern gewünscht können Sie sich die Daten mittels parse-edid < monitor.edid in lesbarer Form anzeigen lassen.)
  2. Kopieren Sie die Daten in das Firmware-Verzeichnis:
    sudo mkdir /lib/firmware/edid
    sudo cp monitor.edid /lib/firmware/edid/
  3. Ergänzen Sie die in der Dateil /etc/default/grub die Zeile GRUB_CMDLINE_LINUX_DEFAULT um einen drm_kms_helper.edid_firmware Eintrag:
    sudo vi /etc/default/grub
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash drm_kms_helper.edid_firmware=edid/monitor.edid video=DP-1:1680x1050@60D"
    Den Parameter video= müssen Sie ggf. an Ihre Hardware-Konfiguration anpassen. Den Display-Namen (in unserem Beispiel "DP-1") und die Auflösung finden Sie in den Grafikeinstellungen (siehe Bild anbei). Alternativ finden Sie über das /sys Dateisystem ebenso Informationen zum Display-Namen:
    cd /sys
    find -iname *edid*
  4. Aktualisieren Sie Grub-Konfiguration:
    sudo update-grub
  5. Sie können nun das System herunterfahren und den Monitor abstecken. Wenn Sie danach das System neu starten und erst im Nachhinein den Monitor anschließen, funktioniert die Bildschirmanzeige.

EDID Beispiele

Als Beispiel finden Sie hier EDID von zwei Monitoren.

iiyama ProLite B2480HS

EDID Datei: Datei:Iiyama-ProLite-B2480HS.edid.zip

Ausgabe von parse-edid:

$ parse-edid < iiyama-ProLite-B2480HS.edid 
Checksum Correct

Section "Monitor"
	Identifier "PL2480H"
	ModelName "PL2480H"
	VendorName "IVM"
	# Monitor Manufactured week 40 of 2012
	# EDID version 1.3
	# Digital Display
	DisplaySize 520 290
	Gamma 2.20
	Option "DPMS" "true"
	Horizsync 30-83
	VertRefresh 55-76
	# Maximum pixel clock is 170MHz
	#Not giving standard mode: 1920x1080, 60Hz
	#Not giving standard mode: 1280x1024, 60Hz
	#Not giving standard mode: 1440x900, 60Hz
	#Not giving standard mode: 1680x1050, 60Hz
	#Not giving standard mode: 1280x960, 60Hz
	#Not giving standard mode: 1152x864, 75Hz
	#Not giving standard mode: 1440x900, 75Hz
	Modeline 	"Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync 
EndSection

BenQ BL2201

EDID Datei: Datei:BenQ-BL2201.edid.zip

Ausgabe von parse-edid:

$ parse-edid < BenQ-BL2201.edid 
Checksum Correct

Section "Monitor"
	Identifier "BenQ BL2201"
	ModelName "BenQ BL2201"
	VendorName "BNQ"
	# Monitor Manufactured week 47 of 2013
	# EDID version 1.4
	# Digital Display
	DisplaySize 480 300
	Gamma 2.20
	Option "DPMS" "true"
	Horizsync 30-83
	VertRefresh 50-76
	# Maximum pixel clock is 170MHz
	#Not giving standard mode: 1152x720, 60Hz
	#Not giving standard mode: 1280x800, 60Hz
	#Not giving standard mode: 1280x800, 75Hz
	#Not giving standard mode: 1280x1024, 60Hz
	#Not giving standard mode: 1600x900, 60Hz
	#Not giving standard mode: 1680x1050, 60Hz
	Modeline 	"Mode 0" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync 
EndSection

Einzelnachweise

  1. Extended Display Identification Data (en.wikipedia.org)
  2. Kernel Mode Setting - Forcing modes and EDID (wiki.archlinux.org)

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

EDAC Driver Feature Matrix
Linux Performance Auswertung mit kSar
Rdiff-backup Verzeichnisstruktur