X Window System für Windows, um grafische Anwendungen unter Windows-Subsystem für Linux (WSL) auszuführen

Monday, April 2, 2018

Mit dem Subsystem für Linux in Windows (WSL) können Linux-Distributionen wie bspw. Debian GNU/Linux direkt unter Windows ausgeführt werden – einschließlich aller Anwendungen.

Um grafische Anwendungen (GUI) unter WSL ausführen zu können, muss unter Windows ein X Window System/X-Server installiert sein.

Es bietet sich hier an, den X-Server von Gygwin/X XWin.exe zu installieren, da Gygwin auch viele andere Pakete wie Perl, SSH, usw. bereitstellt und es ggf. schon installiert ist. Auf die Installation von Gygwin selbst geht dieser Artikel aber nicht weiter ein. Wie man Gygwin unter Windows installiert, aktualisiert usw. ist auf der Webseite des Projekts beschrieben. Siehe: https://cygwin.com und https://x.cygwin.com/. Kurz: Es wird das Programm setup-x86_64.exe ausgeführt und im Dialog ein Mirror ausgewählt, die Paketliste geladen/aktualisiert und die Pakete zur Installation/Aktualisierung ausgewählt.

Ist kein X-Server installiert, wird dies i.d.R. durch folgende Fehlermeldung ausgedrückt:

$ DISPLAY=":0" thunderbird # Start einer grafischen Anwendung (hier thunderbird)
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0

X-Server installieren

Der X-Server XWin.exe wird über das Cygwin-Paket xorg-server installiert:

wsl-x-server.png

Damit XWin.exe beim Windows Systemstart startet, muss es in den Autostart z.B. unter %APPDATA%\Microsoft\Windows\Start Menu\Programs\startup:

wsl-x-server-autostart.png

Wichtig für eine Verknüpfung im Autostart ist als Ziel: C:\cygwin64\bin\XWin.exe :0 -multiwindow -listen tcp -auth und Ausführen in: C:\cygwin64\home\%USERNAME% anzugeben.

Außerdem muss in der Windows Firewall XWin.exe konfiguriert/eingetragen sein, da es ein Netzwerkprotokoll ist! Der Zugriff muss aber nicht erlaubt werden und der Dialog kann mit abbrechen beendet werden.

Nun können auch grafische Anwendungen aus WSL (und auch aus Gygwin) heraus gestartet werden.

Die Anwendungsdaten befinden sich in folgenden Ordnern:

  • WSL:
    /mnt/c/Users/,
    /mnt/c/Cygwin/home/, /mnt/c/Cygwin64/home/,
    %LOCALAPPDATA%\Packages\*\LocalState\rootfs\home\
  • Cygwin:
    /cygdrive/c/Users/,
    C:\Cygwin\home\, C:\Cygwin64\home\,
    /cygdrive/c/Users/*/AppData/Local/Packages/*/LocalState/rootfs/home/

Debian 9 (Stretch): Predictable Network Interface Names – Umstellung auf das neue Verfahren zur Namensvergabe von Netzwerkschnittstellen

Sunday, July 23, 2017

Spätestens ab Debian 10 (Buster) wird das alte Verfahren zur Namensvergabe von Netzwerkschnittstellen nicht mehr unterstützt, und das System muss auf das neue Verfahren umgestellt sein (Predictable Network Interface Names).

Bei einer Neuinstallation von Debian 9 (Stretch) passiert diese Umstellung automatisch. Bei einem Upgrade von Debian 8 (Jessie) muss hingegen manuell umgestellt werden.

Auf das neue Verfahren zur Namensvergabe von Netzwerkschnittstellen umstellen

Um auf das Verfahren Predictable Network Interface Names umzustellen, muss die Datei /etc/udev/rules.d/70-persistent-net.rules gelöscht werden:

mv /etc/udev/rules.d/70-persistent-net.rules{,.old}

Danach muss das System neu gestartet werden.

Dieser Schritt stellt eine entsprechend weitreichende Änderung am System da. Eventuelle Konfigurationsdateien müssen angepasst und getestet werden. Wer statt des Network-Manager die Datei interfaces(5) nutzt, muss zumindest diese anpassen.

Siehe auch: https://www.debian.org/releases/stable/amd64/release-notes/ch-whats-new.de.html#new-interface-names, https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c#L20 (Beschreibt nach welchen Regeln, die neuen voraussagbaren/vorhersagbaren Namen aufgebaut sind), https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/, file:///usr/share/doc/udev/README.Debian.gz

Benutzerdefinierte Namen für Netzwerkschnittstellen

In manchen Fällen ist es praktisch, eigene Namen für Netzwerkschnittstellen zu definieren.

Dies kann mittels zwei verschiedener Methoden erreicht werden. Einmal mittels Network Device Configuration: systemd.link(5) und einmal mittels Dynamic Device Management: udev(7), welche wesentlich mehr Möglichkeiten bietet.

In folgenden Beispielen, wird der Netzwerkschnittstelle mit der MAC-Adresse 00:a0:de:63:7a:e6, der feste Namen dmz zugewiesen:

  • Dynamic Device Management – udev(7):
    Beispielsweise kann /etc/udev/rules.d/76-netnames.rules erstellt und dort Netzwerkgeräte anhand beliebiger Attribute und Eigenschaften identifiziert und benannt werden.
    Hier ein Beispiel, um ein Gerät über die MAC-Adresse zu identifizieren und zu benennen:

    cat /etc/udev/rules.d/76-netnames.rules
    # identify device by MAC address
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:a0:de:63:7a:e6", NAME="dmz"
    

    Gegenüber systemd.link(5), bietet diese Methode auch die Möglichkeit Geräte anhand anderer Übereinstimmungsschlüssel, wie der Vendor/Model-ID oder des Gerätepfads zu Identifizieren. Siehe dazu auch die Handbuchseite udev(7), für die Dokumentation, wie man udev-Regeln schreibt.

  • Network Device Configuration – systemd.link(5):
    Alternativ geht auch eine Konfiguration ohne udev(7), mittels systemd.link(5) und des Name-Schlüssels:

    cat /etc/systemd/network/10-dmz.link
    [Match]
    MACAddress=00:a0:de:63:7a:e6
    [Link]
    Name=dmz
    

Damit diese Änderungen übernommen werden, ist ggf. eine Aktualisierung der initrd-Datei mittels update-initramfs -u und ein Neustart des Systems erforderlich.

openresolv

Friday, May 26, 2017

Da hier (o2/Berlin) in letzter Zeit andauernd Verbindungsbrüche und Probleme mit dem DNS auftreten, habe ich das Paket openresolv installiert und die DNS-Server von Google hinzugefügt:

root@debian:~# apt-get install openresolv
root@debian:~# cat /etc/resolvconf.conf 
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details
[...]
name_servers_append="8.8.4.4 8.8.8.8"
root@debian:~# resolvconf -u
root@debian:~# cat /etc/resolv.conf 
# Generated by resolvconf
domain localdomain
nameserver 192.168.1.1
nameserver fe80::1%eth0
nameserver 8.8.4.4
nameserver 8.8.8.8

Die Option name_servers_append sorgt für das Anhängen von Nameservern, an die dynamisch von openresolv generierte resolv.conf-Konfiguration. Nach dem ändern der Konfigurationsdatei /etc/resolvconf.conf muss resolvconf -u ausgeführt, oder das System neu-gestartet werden, damit die Änderungen in die Datei resolv.conf geschrieben werden.

Das dies nur gegen die DNS-Ausfälle hilft – klar^^ Aber diese sind z.Z. eh vorrangig…

PS: Es ist jetzt auch nur eine Notiz für mich, aber vielleicht hat ja jemand noch einen schlauen Kommentar ;-) Vor allem, weil ich jetzt mehr als 3 Nameserver in der /etc/resolv.conf stehen habe und ab dem 4ten nameserver Eintrag, werden die Nameserver ignoriert – sind also eigentlich Sinnlos. Siehe die Option nameserver in resolv.conf(5).

Optionen für den Resolver setzen

Mit der Option resolv_conf_options, können bestimmte interne Variablen des Resolvers beeinflusst werden. In den Kommentaren wurde folgender Wert vorgeschlagen:

resolv_conf_options="ndots:1 timeout:0.3 attempts:1 rotate"

Was diese Optionen bewirken, steht in der Handbuchseite resolv.conf(5).

Alternative DNS-Anbieter

In den Kommentaren wurden auch alternative DNS-Anbieter angesprochen.

Die bekanntesten sind u.a. OpenNIC, Cesidian Root oder Open Root Server Network. Alle stellen eine Alternative zu den von der ICANN koordinierten Root-Nameservern bereit und zensieren nach eigener Aussage nicht.
Siehe auch: https://de.wikipedia.org/wiki/Domain_Name_System.

Will man diese Anbieter dauerhaft nutzen, setzt man am besten die Option name_servers entsprechend.

Debian; GNOME 3: Neue Datei über das Kontextmenü anlegen

Friday, June 10, 2016

Von GNOME 2 kennt man den Punkt neue Datei anlegen, im Kontextmenü des Dateimanager Nautilus. Dieser fehlt in GNOME 3.

Um eine neue Datei (leere Textdatei) über das Kontextmenü im Dateimanager Nautilus anlegen zu können, wird eine entsprechende Vorlage unter ~/Vorlagen/ benötigt.

Eine Vorlage für einfache Textdateien erstellen

$ mkdir ~/Vorlagen
$ touch  ~/Vorlagen/Textdatei

Jetzt können via rechtem Mausklick im Dateimanager Nautilus, über das Kontextmenü, neue Textdateien angelegt werden.

Siehe auch: Vorlagen für häufig genutzte Dokumenttypen.

CyanogenMod auf dem Samsung Galaxy S4 mini GT-I9195 (serranoltexx) installieren

Sunday, May 8, 2016

Habe CyanogenMod (CM) auf meinem Samsung Galaxy S4 mini GT-I9195 (serranoltexx) installiert. Das funktionierte problemlos.

Hier ein Gedächtnisprotokoll dazu. Die offizielle Dokumentation, Schritt-für-Schritt Anleitung usw. zu serranoltexx findet man hier: https://wiki.cyanogenmod.org/w/Serranoltexx_Info.

Anstelle von ClockworkMod (CWM) und anderen, bietet CyanogenMod inzwischen ein eigenes Custom ROM an – die CyanogenMod Recovery (CMR).

Für Samsung Galaxy S Geräte muss allerdings weiterhin, statt des fastboot Befehl aus der Android Debug Bridge (ADB), die Heimdall Suite verwendet werden, um das ROM auf das Gerät zu flashen. Doch Heimdall kann mittlerweile aus den Debian-Paketquellen installiert werden: https://packages.debian.org/heimdall-flash.

Wer die Google Apps (OpenGApps) installieren möchte, findet diese hier: http://opengapps.org/. Es wird der Download für die Platform ARM benötigt. Das Google Apps .zip muss im selben Schritt wie das ClockworkMod .zip installiert werden. Ein nachträgliches installieren der Google Apps funktionierte hier nicht.
Wer die Google Apps nicht möchte, installiert später unter Android einfach das FDroid.apk von hier: https://f-droid.org/. Und hat damit einen alternativen App Store zur Verfügung stehen.

Wurde mit Heimdall das CyanogenMod Recovery ROM auf das Gerät geflasht, ist es wichtig das Gerät nicht neu zu starten. Sondern: Ausschalten und direkt den CyanogenMod Recovery-Mode starten. Da bei einem Neustart das Custom ROM wieder auf das Samsung original ROM zurückgesetzt wird, solange das CM-Build noch nicht installiert ist.

Ist das Gerät im CyanogenMod Recovery-Modus. Wählt man Facroty reset und danach dann Apply update, um zuerst das CyanogenMod .zip und danach das OpenGApps .zip zu installieren.
Mit Reboot system now neu starten… fertig.

Ergänzende Hinweise:

  • Unter Android in den Geräteinformationen nachlesen, welches Modell man hat.
  • Mit vollem Akku und Netzstrom beginnen.
  • Root-Rechte braucht es auf dem Gerät nicht, dafür besteht kein Grund (rooting).
  • Für adb muss unter Android, in den Entwickleroptionen der USB-Debugging-Modus aktiviert sein. Die .zip-Dateien können aber auch manuell via Dateimanager, ohne adb auf das Gerät kopiert werden.