WSL: C++ Entwicklung mit CLion

Beiträge der WSL Serie

Die Entwicklungsumgebung CLion von JetBrains bringt keinen eigenen Compiler mit sondern kann mit diversen Compilern umgehen.

Eine Option ist dabei, ein Windows Subsystem für Linux zu nutzen. Dann kann der Windows Arbeitsplatz genutzt werden, um Software für Linux zu entwickeln.

Software auf Debian installieren

Damit auf dem Debian WSL entwickelt werden kann, müssen erst die notwendigen Voraussetzungen geschaffen werden. Dazu werden die folgenden Pakete installiert:

Paket Beschreibung
build-essential Grundlegende Tools rund um den Compiler.
cmake cmake als Standard Make-Tool von CLion
gdb Debugger
ssh Sammlung von SSH Paketen incl. openssh-server

Die Installation kann mit folgendem Befehl durchgeführt werden:

sudo apt-get install build-essential cmake gdb ssh

Nach der Installation von ssh muss der Server noch gestartet werden:

sudo service ssh start

Konfiguration der CLion Toolchain

Als nächstes können wir die Toolchain in CLion konfigurieren. Dazu öffnen wir in CLion die Settings (File -> Settings…)
In den Settings finden sich die Toolchains unter Build, Execution, Deployment

Dort öffnet sich über das (+) ein kleines Menü, in dem WSL ausgewählt werden kann. Danach sind folgende Felder ausfüllbar:

Feld Beschreibung
Name Hier kann ein beliebiger Name für diese Toolchain eingegeben werden. Default ist WSL.
Environment In dem Dropdown kann keine WSL Umgebung ausgewählt werden, so mehrere installiert wurden.
Credentials Hier muss konfiguriert werden, wie CLion per ssh auf die WSL zugreifen soll. Eingabe von localhost als host und speichern von User/Passwort reicht schon aus. Wer kein Passwort speichern möchte, kann auch über einen SSH Key zugreifen.

Die übrigen Felder sollten automatisch gefüllt werden. CLion kann auf das System zugreifen und selbständig feststellen, welche Tools in welcher Version installiert sind.

Gratulation, CLion ist bereit, um mit dem Linux Subsystem C++ Projekte zu übersetzen!

Links

Edits

19.06.2020 Tippfehler beseitigt, Paket heißt build-essential und nicht build-essentials

WSL: Interaktion zwischen den Systemen (II)

Beiträge der WSL Serie

In diesem Beitrag möchte ich etwas auf die Interaktion zwischen Linux und Windows Applikationen auf der jeweiligen Shell / Eingabeaufforderung eingehen.

Starten von Linux Programmen unter Windows

Wenn wir eine Windows Eingabeaufforderung geöffnet haben, dann können Linux Prozesse gestartet werden, in dem vor dem Aufruf ein wsl vorrangestellt wird. Wenn ich z.B. in der Windows Eingabeaufforderung das aktuelle Verzeichnis mittels „ls“ anzeigen lassen möchte, dann kann ich dieses mittels

wsl ls

ausführen.

Wenn sich die Befehlszeile aus mehreren Befehlen zusammen setzt (z.B. getrennt durch das Pipe Zeichen („|“), so kann dies bei jedem Befehl erfolgen. Z.B. über

dir | wsl grep file

Der Windows Befehl „dir“ gibt seine Ausgabe an den Linux Befehl „grep file“, d.h. es wird von grep nach Zeilen mit der Zeichenkette ‚file‘ gesucht.

Starten von Windows Programmen aus Linux

Umgekehrt ist es auch möglich, aus der Linux Shell ein Windows Programm zu starten. Dazu muss der Befehl mit der Endung (z.B. .exe) eingegeben werden:

notepad.exe

Links

WSL: Interaktion zwischen den Systemen (I)

Beiträge der WSL Serie

Nach der Installation des Windows Subsystems für Linux und einer Linux Distribution haben wir nun zwei Systeme. Aber die zwei Systeme sind nicht komplett voneinander getrennt zu sehen, denn Microsoft hat viele Möglichkeiten eingebaut, damit die zwei Systeme miteinander agieren können und Anwender so das Beste aus beiden Welten kombinieren können.

Keine getrennten Systeme!

Eine wichtige Tatsache ist, dass es sich hier nicht um zwei getrennte Systeme handelt, wie es z.B. bei den den üblichen VM wie VirtualBox oder Vmware Workstation der Fall wäre.

Um dies etwas aufzuzeigen, installieren wir einmal ssh unter Linux (Debian):

sudo apt-get install ssh
sudo service ssh start

Sobald der ssh Service unter Debian startet bekommen wir unter Windows das Popup der Firewall: Bei welchen „Netzwerkklassen“ darf auf den Port zugegriffen werden.

Wenn wir unter Windows einen ssh Client haben, dann können wir da auch drauf zugreifen über die ip 127.0.0.1.

Wir können aber auch die IPs vergleichen:

ip address

Wir bekommen die Devices angezeigt und die IPs von Windows (Welche wir uns z.B. mit

ipconfig -all

auf der Eingabeaufforderung anzeigen lassen können).

Zugriff auf Windows Dateien aus der WSL

Wenn wir nun in einer Shell von Debian sind, dann können wir auf die Dateien von unserem Windows System zugreifen. Dazu werden die Laufwerke unter /mnt gemounted.

Somit finden wir unter /mnt/c unser Laufwerk C:

Wir können dies unter Linux prüfen über den Befehl

mount

Dies gibt uns unter anderem aus, wie einzelne Filesysteme eingebunden wurden:

C:\ on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,case=off)

Bei einem System von mir, war hier aber uid und gid 0 statt 1000. Daher hatte nur root Schreibzugriff. Dies kann man über die /etc/wsl.conf steuern:

[autoconf]
options = "metadata,uid=1000,gid=1000"

Hier können wir die Optionen, die der mount Befehl unterstützt, eintragen.

Gemeinsames Home

Derzeit ist es so, dass wir zwei Home Laufwerke haben. Unter Linux finden wir unsere Dateien unter /home/<username>/ und unter Windows haben wir c:\Users\<username>.

Dies können wir aber auch noch anpassen und alle unsere Dateien unter c:\users\<username> legen. Der erste wichtige Schritt ist die Kontrolle, dass unser User die notwendigen Schreibrechte auf /mnt/c hat. Ist dies gegeben, dann können wir unser Unix-Homelaufwer verschieben und statt dessen einen Softlink auf das Windows Verzeichnis einrichten.

In dem folgenden Beispiel habe ich <username> durch konrad ersetzt – mein User unter Linux und Windows ist konrad:

cd /home
sudo mv konrad konrad.old
sudo ln -s /mnt/c/Users/konrad konrad
cp konrad.old/.??* konrad/

Der letzte Befehl kopiert die Dateien, die mit . anfangen, in das Windows Homeverzeichnis. Hier ist vor allem die .bashrc mit Einstellungen für die Linux Shell wichtig.

Sollten bereits weitere Dateien erzeugt worden sein, so sind diese ggf. auch noch zu kopieren.

Zugriff auf Linux Dateien von Windows aus

Nun haben wir unter Linux auf die Windows Dateien zugegriffen. Aber vielleicht wollen wir auch den umgekehrten Fall: Zugriff aus z.B. dem Windows Explorer auf die Dateien des Linux Subsystems.

Dafür hat Microsoft den Share \\wsl$ erzeugt. Wenn man im Windows Explorer in der Adresszeile 

\\wsl$

eingibt, dann werden alle Linux Subsysteme angezeigt. (Bei mir gibt es nur das Debian System, somit wird Debian angezeigt)

Ein Doppelclick zeigt dann den Inhalt des Debian Dateisystems an. Ich kann aber auch immer die Adresse direkt angeben:

\\wsl$\Debian

Damit haben wir nun Zugriff auf alle Dateien sowohl unter Linux als auch unter Windows.

Im nächsten Beitrag „WSL: Interaktion zwischen den Systemen (II)“ werde ich auf die Interaktion zwischen Projekten eingehen.

Windows Subsystem für Linux (WSL)

Beiträge der WSL Serie

Microsoft hat schon eine ganze Zeit lang das Windows Subsystem für Linux (kurz: WSL) unter Windows 10 bereit gestellt so dass dies inzwischen aus dem „Versuchsstadium“ heraus sein sollte.

Unter Windows war ich bisher ein Fan von cygwin, denn ich wollte unter Windows auch die gewohnten Tools nicht missen.

Daher wird es nun für mich Zeit, diese Microsoft Lösung näher anzusehen und eine kleine Serie aufzusetzen, welche die wichtigsten Schritte kurz erläutert und auch mögliche Anwendungsgebiete aufzeigt.

WSL 1 und WSL 2

Das Windows Subsystem für Linux existiert nun schon in der zweiten Version. Microsoft hat hier aus meiner Sicht kräftig nachgebessert, so dass ich auf jeden Fall empfehlen würde, immer gleich auf die WSL 2 gehen.

Voraussetzung für WSL 2 ist Windows 10 in Version (Build) 19041 oder neuer

Installation

Die Installation erfolgt entweder über die GUI:
– Einstellungen Öffnen
– Apps auswählen
– Ganz unten „Programme und Features“ anklicken
– im neuen Fenster dann „Windows Features aktivieren oder deaktivieren“
– Feature „Windows-Subsystem für Linux“ auswählen und Installation starten.

Oder man öffnet einfach eine Eingabeaufforderung oder PowerShell mit Administrator-Rechten und gibt ein:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Nach der Installation des Windows Subsystems für Linux müssen wir den Rechner einmal neu starten.

Das blanke Subsystem nützt uns aber erst einmal nichts. Was wir nun noch benötigen ist eine Linux Distribution. Diese können wir einfach über den Microsoft Store installieren. Die gängigsten Distributionen sind verfügbar und als Debian Fan ist meine Wahl direkt auf Debian gefallen.

Nach der Installation können wir uns noch einen Eintrag in dem Startmenü anlegen lassen.

Der ersten Start dauert etwas, da jetzt die Debian Installation weiter konfiguriert wird. Im Rahmen dieser Installation wird der User erstellt, mit dem zukünftig gearbeitet werden kann.

Erster Überblick

Beim Start von Debian öffnet sich ein Fenster und man sieht eine Shell vom angelegten User.

Sudo ist eingerichtet und man kann sich z.B. per

sudo su -

eine root-Shell holen (nach Eingabe des vergebenen Passwortes).

Unter /mnt werden die Windows Laufwerke gemappt, jedoch hat hier nur root Schreibzugriff (Dies passen wir noch im nächsten Beitrag an).

Software

Auf dem System ist noch nicht viel an Software installiert. Je nachdem, was man alles machen will, kann man aber Debian Pakete nachinstallieren. Ein X11 Server steht hier aber erst einmal nicht zur Verfügung, so dass X11 Programme erst einmal nicht zur Verfügung stehen. Wie diese Thematik gelöst werden kann, werde ich in Kürze ebenfalls beleuchten.

Der Zugriff auf die Repositories funktioniert aber ohne Probleme, wie man mit apt-get schnell sehen kann. Eine Aktualisierung des Systems erfolgt über die folgenden zwei Befehle:

sudo apt-get update
sudo apt-get upgrade

Links

certbot mit Windows

Nachdem ich certbot unter cygwin nutzen konnte, stellte sich direkt die Frage: Ist dies überhaupt notwendig? Für mich war dies naheliegend, da ich auch Scripte im Einsatz hatte, die die neuen Zertifikate bei Bedarf direkt weiter verarbeitet haben.

Aber da Python auch unter Windows zur Verfügung steht, habe ich keinen Grund gesehen, dass dies nicht auch unter Windows funktionieren sollte. Und ein kurzer Test hat schnell erstaunlich gute Ergebnisse gezeigt:

Installation unter Windows

Zuerst wird natürlich python benötigt. Die Downloads finden sich unter https://www.python.org/downloads/windows/ und die Installation erfolgt wie unter Windows gewohnt einfach und unkompliziert ab. (Aktuell war Python 3.8.1 aktuell, welches ich für alle Anwender auf meinem Windows Server 2016 Essentials System installiert habe.)

Als nächstes erfolgt, ebenso wie unter cygwin, die Installation von certbot:

pip install certbot

Die Installation lief zügig durch und nach kurzer Zeit stand mir certbot zur Verfügung. Schnell ein kleiner Test:

certbot certonly --manual -d test.kneitzel.de --preferred-challenge dns

Der erste Versuch in einem Terminal ohne Adminrechte erbrachte gleich einen Fehler: Die Applikation möchte mit Adminrechten aufgerufen werden!

Also das Ganze noch einmal mit Administrativen Rechten und es kamen die gewohnten Abfragen, so wie unter anderen Systemen auch. Und nach Aufspielen des TXT Eintrags für _acme-challenge.test im DNS lief alles problemlos durch und ich hatte die Zertifikate.

Die Dateien liegen jetzt natürlich nicht wie bei Unix gewohnt unter /etc/letsencrypt sondern es wurde c:\Certbot angelegt und verwendet.

Anmerkung

Ich habe hier natürlich nur einen sehr kleinen Bereich von Certbot getestet – speziell die manuelle Erstellung/Aktualisierung von Letsencrypt Zertifikaten mit Certbot.
Certbot bietet aber einiges mehr – so sorgt Certbot in der Regel selbst für die Autorisierung (z.B. über das Hinterlegen von Dateien in einem Webserver) und das Einspielen von Zertifikaten. Dies habe ich nicht angetestet und ich kann keine Aussage dazu treffen, ob und wie dies funktionieren würde.

Links

certbot mit Windows (cygwin)

Wenn man selbst Zertifikate von https://letsencrypt.org/ beantragen möchte und ein Windows System sein eigenen nennt, der findet dann erst einmal keine sofortige Lösung:

Man wird auf die Seite vom Certbot geleitet und dort finden sich dann Anleitungen für diverse Distributionen aber leider nicht für Windows. Bei Non Unix findet man lediglich die Aussage: „Certbot is currently only available for UNIX-like operating systems.“, was einem nicht unbedingt direkt weiter hilft.

Aber Unix? Da fällt zumindest mir sofort Cygwin ein. (Microsoft bietet aber auch eine Lösung, um ein Linux System unter Windows laufen zu lassen, das Windows-Subsystem for Linux: https://docs.microsoft.com/de-de/windows/wsl/install-win10)

Cygwin ist schnell von https://www.cygwin.com/ herunter geladen und bei der Installation darauf achten, dass das aktuelle Python mit installiert wird. (Ich habe die paar python38 Pakete installiert.)

Das certbot lässt sich dann über pythen pip installieren:

pip3.8 install certbot

(Den Befehl in einem Cygwin Terminal mit Administrationsrechten eingeben und in Ruhe abwarten, bis die Installation durch ist.)

Die Nutzung von certbot erfolgt dann wie in der Dokumentation beschrieben. Da ich keinen direkten Zugriff auf die Webhosting Server habe, nutze ich die manuelle Verifikation:

cerbot certonly --manual -d fqdn.of.my.server --preferred-challenge dns

certbot gibt dann klare Anweisung, was für ein TXT Eintrag man in der Domain setzen soll und nach setzen des Keys wird dann das Zertifikat ausgestellt / verlängert.

Links

Nokia 800 Tough

Ich habe schon lange diese ganze Entwicklung mit den Smartphones kritisch gesehen: ständig haben die Leute ihr Smartphone in der Hand und machen damit irgendwas. Egal, was um sie herum passiert.

Das mag lustig sein, wenn man z.B. ein Video von einem Überfall auf eine Bar sieht, bei dem ein Mann am Tresen so auf sein Smartphone fokusiert ist, dass er nichts vom Überfall mitbekommt und sich am Ende wundert, dass alle Anderen noch auf dem Boden liegen nachdem der Täter eben erst die Bar verlassen hat… Aber wenn Freunde oder Bekannte zusammen stehen und alle haben Ihr Smartphone in der Hand? Das finde ich kritisch.

Hinzu kommt, dass es ein Objekt ist, in das zu viel Zeit investiert wird. Es kommt eine Nachricht und man will nur kurz schauen, wer einem geschrieben hat. Aber wenn man das Gerät einmal in der Hand hat: Was für Neuigkeiten gibt es denn in aller Welt? Oder kurz in ein Spiel rein schauen …

Somit habe ich in den letzten Wochen massiv über Alternativen nachgedacht. Die Erreichbarkeit möchte ich nicht missen (Telefon, SMS), weil ich dies auch beruflich benötige. Aber darüber hinaus ist vieles unnötig…

Somit habe ich mich umgesehen und gleich viele Möglichkeiten gefunden: Nokia bietet eine ganze Reihe von Geräten: die reinen Mobiltelefone (Nokia 105, Nokia 130) über Geräte mit KaiOS (Nokia 2720 flip und Nokia 800 tough). Da ich das Gerät auch bei Feuerwehr Einsätzen mitnehmen möchte, habe ich mich für ein Nokia 800 tough entschieden. Dank KaiOS wird auch WhatsApp und Facebook unterstützt und die Kamera hat mit 2 MP wenigstens die Chance, Fotos zu machen, die etwas anzeigen.

Die Akku-Laufzeit wird bei dem Gerät auch mit bis zu 43 Tagen Standby angegeben, was mich  fasziniert hat: Nur ein bis zwei Mal im Monat das Gerät laden! Somit wurde das Gerät gekauft um es im Detail zu testen.

Der erste Eindruck

Der erste Eindruck beim Auspacken des Gerätes war sehr gut. Das Gerät ist handlich, etwas dicker als ein Smartphone aber dafür schmaler. Die Verarbeitung macht einen guten Eindruck.

Das einlegen der SIM Karten war aber relativ problematisch. Wie bei vielen Smartphones muss man mit so einem mitgelieferten Drahtstift an der Seite einen Träger für die SIM Karten heraus drücken. Dabei wird der Träger aber nur sehr wenig heraus gedrückt und man kann ihn noch nicht fassen. Eine kleine Zange hat mir aber geholfen und ich konnte meine beiden SIM Karten (privat und beruflich) einlegen.

Die Inbetriebnahme war bei mir problematisch. Ich war diesen Wipp-Schalter, mit dem man man im Menü hoch und runter gehen kann und auch die Auswahl bestätigt, nicht mehr gewohnt und so passierte, was passieren musste: Bei Auswahl der Sprache habe ich zugleich die Auswahl geändert und ich hatte ein Handy in einer fremden Sprache. So gab es dann noch ein nettes Spiel: Mach ein Reset des Gerätes ohne das Menü wirklich zu verstehen :). Das ist aber etwas, das ich dem Gerät nicht anlaste. Die Bedienung ist ok und nach kurzer Gewöhnung gab es da auch keine Probleme mit der Bedienung mehr.

Nutzung

Synchronisierung

Das Gerät bietet vielseitige Möglichkeiten an. So kann man Kontakte, Termine, Emails, … synchronisieren. Auch Google wird hier unterstützt und ich konnte schnell und einfach meinen GSuite Account hinterlegen. (Mit Unterstützung der aktuellen Sicherheitsvorgaben, also wirklich ganz problemlos). Da ich zwei SIM Karten nutze und so nur wenig freien Speicherplatz habe, wollte ich erst einmal mit den Kontakten anfangen:

Kontakte geöffnet und ihm gesagt, dass er synchronisieren soll. Dies ist aber leider mit einem wenig aussagenden Fehler fehlgeschlagen. Eine Synchronisierung ließ sich auch mit einigem rumprobieren nicht durchführen.

Es gibt auch eine Import Funktion. Auch wenn ich mir hier keinen Erfolg versprochen habe, habe ich den Import probiert. Das bereits eingerichtete Konto gewählt und schwups: alle meine Kontakte waren importiert. Das ist super! Natürlich nicht perfekt aber so oft ändern sich die Kontakte nicht, so dass dies für mich voll und ganz akzeptabel ist.

Die Synchronisation der anderen Elemente habe ich mir an dieser Stelle erspart und nicht weiter ausprobiert. Meine Kontakte und Co pflege ich in einem A5 Terminkalender in dem auch genug Platz für weitere Dinge sind, so dass ich dies nicht auf meinem Handy brauche.

Weitere Funktionalitäten, die ich eingesetzt habe:

  • Wecker – der Wecker hat bei mir einwandfrei und sicher funktioniert mit der üblichen Funktionalität (z.B. Wecker, der an Werktagen einen wecken soll).
  • Taschenlampe – ich finde es gut, dass die Taschenlampe an der schmalen Seite zu finden ist. So ist es die übliche Haltung einer Taschenlampe und nicht so wie bei Smartphones ein aufrechtes Halten des Smartphones. Die Lichtstärke der Taschenlampe ist aber deutlich geringer als der „Blitz“, den ich von Smartphones her kenne (iPhone 7, Huawei P10 lite). Aber die Lichtstärke ist vollkommen ausreichend für das ausleuchten der näheren Umgebung um z.B. im Dunkeln mit dem Hund spazieren zu gehen.

Verbindungsmöglichkeiten

Das Handy ist super, was die Verbindungsmöglichkeiten angeht. Da steht es den Smartphones in nichts nach. So wird auch LTE unterstützt. Tethering ist möglich – sowohl per USB als auch per aufgespanntem WLAN. Damit ist es ein guter Begleiter, wenn man unterwegs mit seinem Laptop Internet benötigt.

Sprache kann nicht nur über 2G sondern auch über aktuelle Protokolle geführt werden. Auch WLAN wird unterstützt, was ich immer gut fand, denn so kann man auch im Haus problemlos telefonieren, wo sonst der Empfang durch die Wände erschwert wurde.

WhatsApp ist vorhanden, aber mit stark eingeschränkter Funktionalität: Zum einen werden keine Sprachanrufe unterstützt (Aber wer viel Datenvolumen hat, so dass Sprachanrufe möglich sind, der hat doch in der Regel auch eine Sprach-Flat? Zumindest ich habe auch eine Sprach Flat, so dass dieser Punkt mich nicht stört) und auch das Web WhatsApp ist nicht möglich, d.h. man hat keine Möglichkeit, vom Computer einen QR Code zu scannen um dann am Computer WhatsApp zu nutzen.) Dadurch wurde die Kommunikation über WhatsApp sehr beschwerlich, denn Nachrichten mit der Telefon Tastatur zu schreiben ist doch recht mühsam. Damit beschränkte ich mich auf Sprachnachrichten, die unterstützt werden.

Akkulaufzeit

Eine Laufzeit von bis zu 43 Tagen Standby wurde versprochen. Aber nach etwas Nutzung war der Akku nach nur drei Tagen leer. Das war so nicht wirklich erwartet. Ich hatte hier schon so ein bis zwei Wochen erwartet. Somit wurde einiges optimiert:

  • Sprache über LTE verbraucht mehr Strom -> abgeschaltet.
  • WLAN -> abgeschaltet (Also kein Telefonieren zuhause über WLAN)
  • Datenverbindung -> abgeschaltet (Also auch kein WhatsApp mehr)

Somit wurde mein Gerät zu einem reinen Mobiltelefon, Wecker und Taschenlampe degradiert. Die Laufzeit wurde dadurch auch massiv erhöht, aber die Laufzeit beträgt nun immer noch nur ein bis zwei Wochen und damit immer noch deutlich weniger als die versprochenen „bis zu 43 Tage“. Das ist natürlich enttäuschend aber immer noch besser als als die maximal 2 Tage bei meinen Smartphones.

Fazit

Ich bin von dem Gerät etwas enttäuscht. Aber ein Teil der Enttäuschung sind nicht eingehaltene Versprechen (43 Tage versprochen, die fast 2 Wochen sind aber immer noch sehr gut und ausreichend finde ich!) und falsche Hoffnungen (Ich habe halt auf das WhatsApp Web gehofft). Das Handy bietet einige Funktionen, die ich sehr gut finde, so werde ich es als mein Haupt-Telefon behalten um damit erreichbar zu sein. Aber mein Smartphone wird auch weiter im Betrieb bleiben. Damit habe ich dann gewisse weitere Funktionen. Aber dank des Nokia 800 tough ist das bisherige Smartphone nun nicht mehr mein ständiger Begleiter und damit die Ablenkung deutlich kleiner.

Ob nun ein Nokia 105 oder 130 die bessere Wahl gewesen wäre? Es wäre auf jeden Fall deutlich günstiger aber dafür weniger robust. Und die Verbindungsmöglichkeiten wären deutlich geringer.

Ein vollwertigen Ersatz für ein Smartphone sehe ich aber nicht. Aber ich könnte mir gut vorstellen, dass es in Verbindung zu einem Tablet auch sehr gute Arbeit leisten würde! Als einziges Gerät wäre es für mich aber dann doch zu wenig.

Links

HP ZBook 15 G2

Für die Arbeit Zuhause habe ich mir nun einen ’neuen‘ Laptop gekauft. Für mich war wichtig, dass ich zur Software Entwicklung einen großen Monitor mit mindestens Full HD Auflösung bekomme.

Und natürlich sollte der Rechner nicht gerade langsam sein. Da ich immer mehrere Applikationen parallel nutze die auch gleichzeitig Rechenpower benötigen, waren 4 Cores ein Wunsch. An Speicher soll es wenn möglich auch nicht scheitern und schnelles WLAN wäre toll…

Und da wird klar: Diese Wünsche deuten klar auf eine ‚Workstation‘ hin, aber dieses Preissegment (1.000€+, wenn nicht sogar schnell 2.000€+) wollte ich eigentlich nicht betreten, so dass ich mich nach Alternativen umgesehen habe.

Eine Workstation, welche schon ein paar Jahre Dienst geleistet hat, könnte eine Lösung sein, so dass ich mich bei ITSCO etwas umgesehen habe. Hier fand ich ein HP ZBook 15 G3 für unter 600€, die vielversprechend aussah und dann auch näher analysiert wurde:

Ausstattung schien durchaus brauchbar:

  • i7-4180 CPU
  • 16GB Speicher, erweiterbar auf 32GB (DDR3L SDRAM)
  • 512GB SSD
  • 15,6″ FHD Display
  • NVIDIA Quadro K2100M Optimus mit 2 GB

Die Performance der CPU habe ich mir noch etwas mehr im Detail angesehen und habe mir Tests angesehen bezüglich Geschwindigkeit. Die ältere i7 CPU hat hier bei Single Thread Performance gut mithalten können und bei Multi Thread Performance ging die quad-core CPU wie zu erwarten war, deutlich in Führung gegenüber der neuen dual-core i5 CPU.

Der Datendurchsatz ist aber bei der i5 CPU in der Regel höher. Das war aber auch zu erwarten, denn auch die Speichertechnologie hat sich weiter entwickelt. Die neuen, eher günstigen Notebooks mit i5 CPU nutzen hier aber die Möglichkeiten auch nicht voll aus, so dass der Unterschied auch nicht so groß ist.

Was fehlt, ist natürlich schnelles WLAN. Das verbaute Modul bietet die damals gute Leistung, aber kann natürlich die aktuellen Standards nicht einhalten. Hier kann es dann schon interessant sein, das Gerät noch zusätzlich mit einem WLAN USB Strick wie dem Maxesla WLAN Adapter 1200Mbps zu erweitern.

Als nette Beigabe hat das Gerät statt einem optischen Laufwerk eine UMTS Karte verbaut. Da ich das Gerät auch unterwegs nutzen möchte, ist dies für mich auch sehr interessant.

Praktische Erfahrungen

Im praktischen Einsatz verhält sich das Gerät wie erwartet. Linux ließ sich problemlos installieren. KDE Neon habe ich auf diesem System jetzt im Einsatz und das Gerät funktioniert einwandfrei (LAN, WLAN, UMTS Modem, Power Management, ….)

Links

Helligkeit des Bildschirms steuern

Die Helligkeit des Bildschirms kann man über die Einstellungen manuell anpassen oder auch automatisch anpassen lassen.

Leider funktioniert dies mit Deepin bei meinem Apple MacBook Air nicht ganz so gut, so dass ich öfters die Helligkeit von Hand einstellen möchte.

Mit der Maus ist dies zwar problemlos möglich, aber von der Bedienung her nicht immer ganz handlich. Da ich aber immer auch ein Terminal offen habe, habe ich mich nach einer Lösung für die Kommandozeile umgesehen.

Das Tool xrandr kann die Helligkeit einstellen. Ein einfacher Aufruf von xrandr zeigt erst einmal alle vorhandenen Monitore an incl. der Information, ob diese angeschlossen sind oder nicht und welche Modi unterstützt werden. Für die Einstellung benötigen wir den Namen des aktiven Monitors, daher schauen wir nach der Zeile mit „connected primary“.

Die Helligkeit lässt sich nun mit einem Aufruf

xrandr –output <Name> –brightness <Level>

einstellen. <Name> ersetzen wir durch den Namen des Monitors und <Level> mit der Helligkeit. 0 ist dabei komplett dunkel und 1 ganz hell.

Damit ist die Helligkeit mit einem einfachen Befehl anpassen kann, habe ich mir kleine Scripte geschrieben, die ich mit einem Befehl aufrufen kann, z.B.:

#!/bin/sh
# Sets the bightness of active monitor to 1
#
monitor=`xrandr -q | grep "connected primary" | awk '{ print $1 }'`
xrandr --output $monitor --brightness 0.7

So habe ich mir kleine Scripte geschrieben für low, medium und high Einstellungen.

Aktueller Kernel für Deepin

Der Eine oder Andere, der Deepin nutzt, spielt evtl. mit dem Gedanken, einen neuen 5er Kernel für sein System zu besorgen. Deepin 15.11 nutzt derzeit noch den Kernel 4.15 und es den 5er Kernel gibt es schon eine gewisse Zeit und bringt evtl. das eine oder andere Feature mit, das für einen interessant ist.

Hinweis: Der 4er Kernel wird natürlich auch weiter gepflegt! Es ist also kein Zeichen für ein Sicherheitsrisiko, dass diverse Distributionen noch auf einen 4er Kernel setzen! Wenn alles funktioniert, dann gibt es in der Regel keinen Grund für irgendwelche Experimente oder Aktionen!

Es gibt mehrere Möglichkeiten, wie man an den neuen Kernel kommen kann.

  1. Es gibt ein neues Tool: Deepin Kernel Updater, mit dem auch etwas unbedarfte Nutzer schnell und einfach an einen neuen Linux Kernel kommen können (Achtung: Derzeit noch in der Beta Phase!) Dies ist ein einfacher und schneller Weg zum 5er Kernel.
  2. In dem internationalen Deepin Forum finden sich oft Threads zu neuen Kerneln, teilweise stellen Anwender den von Ihnen gebauten Kernel dort auch bereit. Wobei dies durch den neuen Deepin Kernel Updater wohl Vergangenheit sein müsste.
  3. Es ist natürlich möglich, den aktuellen Linux Kernel von Debian sid zu verwenden. Wenn die sid Repositories eingebunden sind, dann lässt sich z.B. aktuell der Kernel 5.2.0 mit einem einfachen Aufruf installieren:
    sudo apt-get -t sid install linux-image-amd64
  4. Eine letzte Variante ist die eigene Übersetzung des aktuellen Linux Kernels. Dies bedeutet aber einiges an Aufwand und Geduld. Falls aber bestimmte Dinge benötigt werden, die in den bereitgestellten Paketen nicht enthalten sind, dann ist dies oft die letzte Möglichkeit.

Im Folgenden beschäftige ich mich mit dem manuellen Übersetzen eines aktuellen Kernels auf einem Deepin System.

Vorarbeiten

Als erster müssen wir die notwendigen Pakete installieren:

apt-get install libncurses-dev wget bzip2 make build-essential bc chrpath gawk texinfo libsdl1.2-dev whiptail diffstat cpio libssl-dev flex bison libelf-dev libssl-dev libncurses5-dev qt4-default qt4-dev-tools

Herunterladen und Entpacken der Linux Kernel Sources

Der Linux Kernel kann unter https://www.kernel.org/ herunter geladen werden. Dazu einfach den tarball des gewünschten Kernels herunter laden.

Nun entpacken wir den Kernel an einem geeigneten Ort. Dies kann z.B. mit folgendem Befehl erfolgen

tar xf ~/Downloads/linux-5.2.8.tar.xz
cd linux-5.2.8

Nun kopieren wir die aktuelle Konfiguration des Kernels, den wir im Einsatz haben:

cp /boot/config-`uname -r` .config

Anpassung der Konfiguration

Nun müssen wir die Konfiguration anpassen. Wir müssen mindestens einmal ein

make oldconfig

laufen lassen um die Einstellungen, welche neu zu der eingespielten Konfiguration sind, vornehmen zu können. Wer hier die ganzen Optionen nicht durchgehen möchte, kann einfach ein

yes "" | make oldconfig

laufen lassen.

Eine individuelle Einstellung diverser Einstellungen kann man mit einem der folgenden Befehle vornehmen:

make config
make menuconfig
make xconfig

Ich selbst rate zu make menuconfig oder make config, da diese am intuitivsten zu bedienen sind.

Übersetzen des Kernels

Als nächstes übersetzen wir den Kernel. Da hier sehr viele einzelne Dateien zu übersetzen sind, macht es Sinn, make anzuweisen, mehrere Dateien parallel zu übersetzen. Dazu dient der Parameter -j<x> wobei x für die Anzahl der parallelen Übersetzungen steht, z.B. -j4 für 4 parallele Übersetzungen.

Übersetzen des Kernels

make -j4 bzImage modules

Bau von Debian Paketen (diese finden sich dann im Anschluss ein Verzeichnis höher)

make -j4 pkg-deb

Installation des compilierten Kernels

Die Installation kann man nun direkt von den Sourcen aus anstoßen:

sudo make install install-modules

Alternativ lassen sich die erstellten Debian Pakete nutzen (Dies ist der von mir empfohlene Weg!):

cd ..
sudo dpkg -i ../

Nun noch den Bootloader grub aktualisieren und das System neu starten

sudo update-grub
sudo reboot

Links