phonelockmobilelocationkeyboardlock ibubbles4

Blog

Diese Seite holt sich die Blogbeiträge von meiner Blogseite https://rotkohlsuppe.de. Dort habe ich (früher mehr als heute), Beiträge aus all meinen Interessenbereichen veröffentlicht: Fotografie, Computer, Werbung, etc.

ImageMagick Format Konvertierungen

13.9.2023, 16:56:36

Umwandlung aller Bilder eines Types aus verschiedenen Unterordnern in ein spezielles Verzeichnis

Wenn du mehrere Unterverzeichnisse hast, in denen die Bilddateien verstreut sind und du willst sie alle platzsparend kleinrechnen und ein ein eigenes Verzeichnis abspeichern dann probiere diesen Code aus:


find . -name *.TIF -print0 | \
xargs -n1 -0 -I% sh -c \
'convert -format jpg -quality 80 \
"%" klein/$(basename "%" .TIF).jpg'

# Dateien suchen
# Pipe zu xargs
# führt ein Shell Kommando mit convert aus
# schreibt alle Dateien in ein! Unterverzeichnis

Ich hatte viele große TIF Dateien vom Fotografen aus mehreren WeTransfer ZIP Dateien extrahiert, die nun in verschiedenen Ordnern verstreut lagen. Eine Datei wog über 100 MB. Die vielen überflüssigen GB Speicherplatz wollte ich wieder auflösen.

Ein find . -name *.TIF sucht rekursiv nach allen TIF Dateien.
-print0 sorgt dafür dass ein null character als Trennzeichen gesetzt wird, weil sonst Leerzeichen in den Ordnernamen für Falschinterpretationen nach der Pipe entstehen können.

xargs -n1 führt maximal ein Argument im nachfolgenden Befehl aus
-0 löst die null character als Trennzeichen auf
-I% ist der Platzhalter für den Pfad/Dateinamen
sh -c führt ein Shell Kommando von einem String aus, das in einfachen Anführungszeichen folgt
convert -format jpg -quality 80 stellt die Konvertierung auf JPG und Qualität 80% ein
"%" Damit die Leerzeichen richtig interpretiert werden muss der Platzhalter in Anführungszeichen
$(basename "%" .TIF).jpg sorgt dafür, dass nur der Dateiname vom Platzhalter verwendet wird und das .TIF ausgelassen wird, so dass ich lediglich die Endung jpg am Ende habe.

Mac Laptop akkuschonend schlafen legen

21.6.2023, 08:49:13

Solange der Laptop Zuhause steht, habe ich ihn am Strom angeschlossen. So spare an Ladezyklen, die den Akku altern lassen würden. Natürlich ist ein voller Akku auch nicht der Optimalzusand für LiIon Akkus, aber besser so als ständig zwischen 30% und 80% zu pendeln.

Der Akku entlädt sich aber über einen längeren Zeitraum von alleine. Fällt seine Kapazität auf unter 95% wird er über das Netzteil auf 100% nachgeladen. Wer also den eingebauten Akku schonen will, weil der Laptop meistens auf dem Schreibtisch steht, versucht den Ladezustand über 95% so lange wie möglich zu halten.

Wenn man aber den Laptop transportiert, um ihn an anderer Stelle wieder mit dem Stromnetz zu verbinden, z.B. bei einem Arbeit- oder Auftraggeber oder bei Freunden, dann kann es sein, dass er am Zielort bereits 1% oder mehr an Kapazität verloren hat. Wir erinnern uns, 5% dürfen wir uns erlauben, bevor ein neues Ladezyklus initiiert wird.

Der Verlust an Kapzität tritt auf, wenn man ihn in den Ruhemodus versetzt, z.B. in dem man ihn zuklappt und anschließend vom Stromnetz trennt. Im Ruhezustand behält er den aktuellen Systemzustand im RAM. Das sorgt dafür, dass er nach dem Aufklappen fast instantan den Zustand aufrufen kann, an dem den Laptop schlafen legte. Denn aus dem RAM lässt sich bekanntlich am schnellsten lesen.

Nun verbraucht das Speichern der Daten im RAM aber Strom, den er sich aus dem Akku holen muss. Darum verliert der Laptop während des Transportes Strom.

Lösung

Man kann unter OSX (macOS) einstellen, wie der Hibernation-Zustand, der Ruhemodus, ausgeführt wird. Es gibt mehrere Varianten:

Speichern des Zustands

  • (0) nur im RAM (geht der Akku auf 0%: Totalverlust)
  • (25) nur auf der Festplatte (langsames speichern und laden des Zustands)
  • (3) im RAM und auf Festplatte (safe sleep – Standard)

Eine Änderung an den Systemeinstellungen kann man über das Terminal, die Kommandozeile vornehmen. Man kann mit pmset -g erfahren, welche Power Management Settings gesetzt sind. Hinter dem Stichwort hibernationmode steht eine Zahl, die für den Modus steht (s.o.). Will man den Modus auf akkuschonenenden Festplattenmodus stellen, muss man sudo pmset -a hibernationmode 25 eingeben und anschließend neu starten. Anschließend kann man das sleepimage aus dem Pfad /private/var/vm mit sudo rm -f /private/var/vm/sleepimage löschen und einiges an Platz auf der Festplatte frei machen.

Im Modus 25 wird der Zwischenstand allein auf die Festplatte geschrieben, was bei einer SSD kaum Zeit benötigt. Dann wird der Rechner komplett ausgeschaltet und kann durch Drücken auf den Powerknopf wieder geweckt werden. Man verliert (fast) keinen Strom unterwegs.
Es gibt aber einige Fallen die unterwegs doch für Akkuverlust sorgen könnten. Der Rechner startet (bei mir) alle 2 Stunden, um sich dem Netzwerk zu zeigen. Das sollte man unterbinden mit sudo pmset -a ttyskeepawake 0. Dass er nicht gleich beim Öffnen des Deckels angeht, sollte man sudo pmset lidwake 0 setzen.

PiHole, DHCP, und lokale Namensauflösung

2.7.2021, 13:47:15

Ich habe auf meiner Synology DiskStation den Pi Hole im Docker Container eingerichtet. Die DHCP Funktion habe ich aber abgestellt, weil ich nicht erkannt habe, dass ich damit meine VLAN DHCP Zuweisung aus dem Edge Router abbilden kann. Darum bin ich darauf angewiesen die DHCP Funktion des Routers weiter zu nutzen.

Wie geht also die Einrichtung, wenn PiHole nur als DNS Server arbeiten soll, danach aber noch, quasi als Fallback, der Router kommt, der die lokale DNS Auflösung übernimmt?

In der Frage steckt schon ein Teil der Antwort. Mein DHCP Server vergibt als DNS Server 1 die lokale Adresse vom PiHole. Er selber löst DNS Adressen nicht über den PiHole auf. Er ist das Gateway und löst die DNS über den externen DNS Dienst auf, den ich normalerweise im PiHole angeben würde. Statt dass ich den externen DNS Server jetzt im PiHole angebe, gebe ich als externen DNS Server den Router an. Der nimmt jetzt alle Anfragen entgegen: die für die lokalen Adressen und die gefilterten externen Adressen. Damit werden die lokalen Adressen richtig aufglöst und die externen werden nach aussen geleitet. Zwar ohne DNSSEC und DoT, etc. aber das ist vielleicht nicht so problematisch, wenn es nur um den Filter geht.

Edge Router Nameserver einstellen
Hier stellt man den Nameserver im Edge ein
PiHole Settings für lokale DNS Server
Hier stellt man den Router als DNS Server ein

Also noch mal: der DHCP Server im Router teilt den Clients mit, dass ihr DNS Server der PiHole ist. Der PiHole ist jetzt der erste DNS Server im Netzwerk. Im PiHole stellt man für die externe DNS Auflösung nicht Quad9, OpenDNS, Cloudflare oder was auch immer ein, sondern gibt die IP des Routers ein (Settings > DNS). Und dem Router sagt man, dass der DNS Anfragen dann über den externen DNS Server seiner Wahl übernimmt. Im Fall des Edge Routers ist das in der Leiste am untersten Bildrand (System > Nameserver

DisplayPort: Helligkeit und Lautstärke beim Mac steuern

27.1.2020, 10:43:22

Bildschirmfoto 2020-01-27 um 10.39.02

Mein Monitor wird über DisplayPort angesprochen, von meinem 2015 Mac. Leider kann ich über die Systemeinstellungen weder die eingebauten Lautsprecher lauter oder leiser machen, noch die Helligkeit regeln. Doch dafür habe ich ein kleines Programm gefunden (MonitorControl, OpenSource), das mir die gewünschen Schieberegler zur Verfügung stellt. Entweder als DMG herunter zu laden oder als Homebrew Cask: brew cask install monitorcontrol.

OpenElec SSH „PasswordAuthentication no“

6.1.2019, 01:39:48

OpenElec SSH

Ich wollte für einen Bekannten ein OpenElec (Kodi) auf einem RaspberryPi via SSH nach außen zugänglich machen. Das eigentliche Problem ist, dass man die Zugangsdaten (Username root oder Passwort openelec) in der Kommandozeile nicht ändern kann, aufgrund von deaktiviertem sudo. So entsteht, wenn man eine Portweiterleitung im Router auf den Raspberry einstellt, eine unangenehme Sicherheitslücke. Wenn man das Passwort nicht ändern kann, bleibt noch die Möglichkeit den Zugang zu SSH über Passwörter zu deaktivieren. Schlau gedacht und damit /etc/ssh/sshd_config angepasst: PasswordAuthentication no. Schade, das Filesystem ist read-only, speichern nicht möglich. Einen Remount mit rw ging nicht.

Aber man kann dem SSHDaemon trotzdem Startparameter unterschieben.
Der SSHD Start wird in folgender Datei definiert:
/usr/lib/systemd/system/sshd.service.
Und die sucht Konfigurationen wiederum hier:
/storage/.cache/services/sshd.conf.
In Zeile 2 kann man nun folgendes eintragen:
SSH_ARGS="-o 'PasswordAuthentication no'".
Beim nächsten Neustart ist die Passwortabfrage deaktiviert.
Darum vorsicht, den Public Key vorher in
/storage/.ssh/authorized_keys kopieren.

Blockiertes Gast-Netzwerk umgehen

21.6.2017, 23:24:12

Ports blockiert, wie umgehen

Ich war neulich auf Reisen und bekam eine LTE Verbindung mit Volumenbegrenzung von 10GB spendiert. Problem war, dass ich von einer Flatrate ausgegangen war. Nun hatte ich darauf verzichtet vorher alle für die Arbeit benötigten Daten auf lokale Speichermedien zu kopieren, da ich dachte, dass ich ja auch später noch alles was fehlt nachträglich über das Netz laden kann. Doch wenn man sich seine 10GB doch einteilen muss, sucht man nach anderen Internet-Quellen. Die nächste Flatratequelle war in diesem Fall ein kostenloses Gastnetzwerk in der Nähe. Auf diesem Gastnetzwerk waren nicht viele Ports offen: 80, 443, 25, 143, 993, 995, 8080, um den Großteil zu nennen. Alle Ports die ich für eine Downloadverbindung zum Server brauchte, waren verschlossen und da meine OpenVPN Verbindung auf UDP 1194 eingestellt war, kam ich damit auch nicht weiter.

SSH Port Weiterleitung am Router

Welche Ports blockiert werden, kann man ganz einfach mit curl portquiz.net:993 herausfinden. Wobei 993 der Port ist, den man testen will. Die Seite portquiz.net bietet auch noch andere Testvarianten.

Zum Hauptproblem fand ich mehrere Lösungswege. Der erste schien mir am schnellsten. Wollte ich doch zu erst meine SSH Verbindung wieder nutzen, ohne den Port vom SSH Client zu ändern. Ich hatte zwar schon eine Portweiterleitung eingerichtet, aber die benutzte einen Port, der ebenfalls blockiert wurde.
Die Portweiterleitung ändere ich eigentlich am einfachsten mit dem Webinterface meines entfernten Routers, der die Zugänge zu meinem Server hinter dem Router regelt. Dort leite ich einfach einen im Gastnetzwerk freien Port (bspw. 993) auf meinen SSH Client um.
Das funktionierte leider nicht sofort und ich habe erst später gemerkt, woran es lag. Ich hatte in meiner Portweiterleitung mehrere Weiterleitungen angelegt, die alle auf den gleichen Port zeigten. Doch es fand weiterhin nur eine Weiterleitung über meinen alten Port statt, nie über die neu angelegten. Und der alte war nach wie vor im Gastnetzwerk gesperrt. Nach langem Rumprobieren kam ich drauf, dass ich die Portweiterleitungen, die ich für den Zielport 22 angelegt hatte, ein mal alle komplett abschalten musste, abspeichern und dann auf dem neuen Port wieder aktivieren musste. Dann übernimmt er die neue Weiterleitung. Doch darauf war ich erst ganz am Schluss gekommen. Denn vorher habe ich meine OpenVPN Verbindung auf TCP 443 eingestellt.

Open VPN auf https-Standardport 443 einstellen

Mit dem Umstellen von UDP Port 1194 auf TCP 443 habe ich eine sichere Fallback Lösung für alle Fälle, denn 443 müsste immer und überall offen sein und mit der VPN Lösung sollte ich immer alles über das Netzwerk bekommen, was ich brauche. Was ist eigentlich besser: OpenVPN via UDP oder TCP? (engl)

SSH Tunnel mit lokaler Portweiterleitung

Die dritte und und interessanteste Lösung war der SSH Tunnel, den ich ausprobieren musste, um ihn wirklich zu verstehen.
Angenommen ich erreiche meinen SSH Client neuerdings über Port 25, gebe ich im Terminal folgendes ein
sudo ssh -p 25 user@sshclient.de -L 8080:meinserver.de:5006 -N
macOS wollte sudo, weil Privileged ports can only be forwarded by root.
Ich verbinde mich also zuerst mit -p Port 25 auf meinen SSH Client.
Warum noch mal 25? Ist beispielhaft für einen Port im Gastnetzwerk, der nicht gesperrt ist, so dass nun der angerufene Router den Verkehr von 25 auf 22 weiterleiten kann.
Jetzt steht schon mal eine SSH Verbindung im blockierten Gastnetzwerk.
Wenn ich jetzt mit dem Browser auf das unerreichbare Webinterface meines Servers kommen möchte brauche ich noch -L offenerPort:angerufenerServer:geblockterPort.
Mit -L leite ich alle „local“ Anfragen, auf den im Gastnetzwerk freien Port 8080, über die etablierte SSH Verbindung. Mein verbundener SSH Client erzeugt einen Tunnel auf dem offenen Port 8080 und holt darüber die Pakete von dem im Gastnetzwerk unerreichbaren Port 5006 aus meinem Server.
Das -N weist SSH an, keine Befehle zu erwarten, das heißt, SSH stellt keine Eingabeaufforderung her, sondern ist im Horch-Modus.

Um die Adresse, die ich normalerweise mit https://meinserver.de:5006 aufrufen würde, zu erreichen, gebe ich jetzt im Browser https://localhost:8080 ein. Dann kann ich über den Port 8080 in den Tunnel meiner SSH Verbindung steigen und komme am anderen Ende auf meinem Server mit dem Port 5006 raus.

Mit diesen drei Lösungsmöglichkeiten ist man wirklich gut ausgestattet, um seine Daten in blockierten Umgebungen zu erreichen.

Firefox Fehlermeldung

Ein Problem gibt es aber noch, nämlich wenn man im Browser über einen Nicht-Standard-Port in den Tunnel möchte. Wenn man, wie ich, über Port 993 seine getunnelte Seite ansurfen will, gibt es bei allen Browsern eine Fehlermeldung, bspw. Firefox Fehler: Port aus Sicherheitsgründen blockiert.

Um den Fehler zu beheben gibt man in die Firefox Adresszeile about:config ein und sucht oder erstellt den Eintrag network.security.ports.banned.override. Als Wert wird der Port eingetragen bspw. 993.

Raspberry Pi + OpenELEC, Blitz Symbol

4.6.2017, 23:18:20

Unterspannung

Ich habe lange mit dem Raspberry Pi 1 Model B Radio und Mediathek-Videos in meine Küche gebracht. Jetzt habe ich ihn endlich gegen den noch aktuellen Raspberry Pi 3 ausgetauscht und mit OpenELEC 8.04 bespielt. Schon auf dem alten habe ich nach einiger Zeit statt XBIAN OpenELEC benutzt, weil Geschwindigkeitsvergleiche zeigten, dass OpenELEC schneller war als die anderen, und da das auf dem Pi 1 ein wichtiges Kriterium war, bin ich dabei geblieben.

Jedenfalls – mich störte das Blitzsymbol in der rechten oberen Ecke. In vorigen Versionen war es ein regenbogenfarbiges Rechteck. Es signalisiert Unterspannung. Das Symbol verschwindet, wenn ich das 5V 3A Netzteil nehme und erscheint bei allen 5V 2A Netzteilen. Mag sein, dass auch mein Kabel eine Teilschuld trägt. Ich hatte aber nicht das Gefühl, dass die Leistung unausreichend war, während ich mit einer 10GB BluRay-Datei versuchte ihn auszulasten.

Ich wollte, dass es verschwindet. Das ist einfach zu machen, in dem man die SD Karte entnimmt, wieder mit dem Computer verbindet und auf oberster Ordnerebene die Datei „config.txt“ bearbeitet. Man fügt die Zeile avoid_warnings=1 hinzu, speichert und steckt die Karte wieder in den Pi. Das wars schon. Sollen die Warnungen wieder angezeigt werden, dazu können auch seltenere Warnungen gehören, wie bspw. das Überhitzungssymbol, dann schreibt man avoid_warnings=0.

Synology Diskstation Fesplatte vergrößern

30.5.2017, 20:07:28

Volle Festplatte = schlechte Performance

Meine Synology Diskstation war voll. Ich musste die Festplatten vergrößern. Ich betreibe sie aber nicht wie die meisten im RAID 0, 1 oder 5, sondern zwei Platten laufen separat. Platte 1 beinhaltet das System und einen Teil der Daten. Platte 2 beinhaltet den zweiten Teil der Daten. Ich mache Backups regelmäßig mit rsync über das Netzwerk auf Journaled formatierte Platten, die im OSX hängen. So bleiben meine Backupplatten meistens aus und werden nur zum Backup hochgefahren. Nach meiner Überlegung schont das die Backup-Platten und damit Ressourcen.

Als ich nun Platte 1 im System vergrößern wollte, wusste ich nicht was auf mich zukommmt. Vorallem viele Rückschläge, aber auch viel neues Wissen.

Rückschläge

Mein erster Gedanke ist, dd if=/dev/alt of=/dev/neu, wird es schon richten. Ich halte das System an, baue die Festplatte aus und hänge sie und die neue an meinen Rechner, spiegle sie und baue die neue wieder ein. Warum genau das nicht ging, blieb mir ein Rätsel. Fakt war, ich konnte die gespiegelte Platte nicht einfach einsetzen und das System hochfahren. Er akzeptierte sie schlichtweg nicht. Ich probierte verschiedene Anläufe. Im zweiten Schritt versuchte ich die zu vergößernde Platte im laufenden Betrieb mit dd zu spiegeln, in dem ich die zweite Platte an den USB 3.0 Port hing. Auch das ging nicht. Ich versuchte noch andere Ansätze, in dem ich mit rsync alle Daten kopierte und so weiter. Es wäre genau so müßig weiter aufzuzählen, was ich alles versucht habe, insofern will ich zur Lösung kommen, die ich erfolgreich angewendet habe.

Bildschirmfoto 2017-05-10 um 18.52.35
dd läuft im Hintergrund

Dazu muss man wissen, dass, wenn die Platten nicht im RAID Verbund sind, trotzdem von der Diskstation als RAID formatiert werden. Beide Platten im System sind RAID 1 (gespiegelt), aber jeweils nur mit einer Platte im Verbund. Es ist also ein nichtgespiegeltes Array, weil es nur aus einer Platte besteht.

Der richtige Weg

Auf der Kommandozeile konfiguriert man sein RAID Array mit dem Befehl mdadm (multiple devices admin).
Man kann ein Array damit anlegen, erweitern, Platten abkoppeln, synchronisieren und alles, was man mit einem Software Array so machen muss.
Grob formuliert geht der Weg so:

  • Partitionstabelle der alten Platte auf die neue kopieren
  • eindeutige UUID der neuen Platte zuweisen
  • mdadm nutzen um die neue Platte in das Array einzugliedern
  • das Array auf 2 Plattem vergrößern und synchronisieren lassen
  • die alte Platte aus dem Array entfernen und das Array wieder auf eine Platte verkleiner
  • die Partitionsgröße der neuen Festplatte auf das Maximum verrößern

Meine Diskstation hat auf der alten Platte 3 Partitionen. Jede Partition ist eigentlich ein RAID 1 Array, mit nur einer Platte.
Raid Arrays haben im System eine neue Bezeichnung.
Auf der Diskstation ist

md0 = Root = sda1 // die Systempartition
md1 = Swap = sda2 // die Auslagerungsdatei
md2 = Daten = sda3 // die kompletten Daten

Festplatten vorbereiten

Damit die neue Platte dem Array hinzugefügt werden kann, muss sie natürlich über die gleiche Partitionstabelle verfügen. Alle drei Partitionen sda1, sda2 und sda3 müssen auf beiden Platten identisch sein. Da ich die Partitionen mit dd gespiegelt hatte, waren sie bereits identisch.

Wer diesen Schritt nicht machen will, kommt nicht umhin beide Platten an einem anderen Computer anzuschließen, am besten mit Linux Betriebssystem, um das Layout mit sgdisk, zu kopieren. Der Befehl ist nicht auf der Diskstation installiert und darum muss er auf einem anderen Rechner ausgeführt werden. sgdisk erlaubt Partitionstabellen mit sgdisk -R=/dev/sdq /dev/sdb zu kopieren. Es gibt auch eine Möglichkeit mit dd auf dem Server nur die Layoutouts zu kopieren. Da ich beides nicht gemacht habe, kann ich keine verlässliche Aussage zu den Methoden machen, würde mich aber selber für sgdisk entscheiden, wenn die Möglichkeit besteht, die Festplatten an den Linuxrechner zu hängen.

Update November 2021: Ich habe eine Formel gefunden, mit der ich, als ich mal wieder die Festplatte verößern musste, die GPT-Partitionstabelle auch mit dd kopieren konnte.
(128 x ANZAHL_DER_PARTITIONEN) + 1024
Das sind bei 3 Partitionen: 1408 Bytes müssen kopiert werden
Dann lautet der Befehl: dd if=/dev/sda of=DATEI_ODER_LAUFWERK count=1408 bs=1

An dieser Stelle der Hinweis, dass man seine alte Platte vielleicht ein mal auf einer Platte sichert, die nicht die alte ersetzen soll. Ich hatte mir als Ersatz für die alte Platte zwei neue Platten gekauft. Die eine wird für die Diskstation vorbereitet, die andere habe ich, wie immer, als Backup mit allen alten Daten bespielt, ohne besonderen Wert auf Bootbarkeit zu legen.

Wenn die Partitionstabelle auf der neuen Platte ist, vergeben wir neue GUIDs mit sgdisk -G /dev/sdq.

Jetzt können wir die alte Platte wieder in die Diskstation einbauen und das System starten. An einen freien USB Port hänge ich die neue vorbereitete Platte. Sie hat die Laufwerksbezeichnung /dev/sdq

Das Array mit Kommandozeile vergrößern

Doch zu erst die Basics. Wir loggen uns per ssh als Administrator auf der Diskstation ein. Wir wechseln in mit sudo su in einen Modus, der uns nicht ständig dazu zwingt sudo vor jedem Befehl einzugeben.

Als erstes verschaffen wir uns einen Überblick über die RAID Arrays mit cat /proc/mdstat.
Anschließend können wir die neue Platte mit der alten partitionsweise synchronisieren. sdq ist in diesem Fall das USB Laufwerk.

// dem ersten RAID füge ich eine neue Partition hinzu
mdadm --add /dev/md0 /dev/sdq1
mdadm --grow /dev/md0 -n 2 (3 s. u.)
// danach muss ich das RAID auf 2 oder 3 Laufwerke ausdehnen
// md0 und md1 (Root und Swap) sind über alle Laufwerke (HDD 1 , HDD 2 und USB) verteilt sind deswegen:
mdadm --grow /dev/md0 -n 3
mdadm --grow /dev/md1 -n 3
// abhängig davon welche Platte ausgetauscht wird:
// md2 ist Platte in Schacht 1
// md3 ist Platte in Schacht 2
mdadm --grow /dev/md2 -n 2
mdadm --grow /dev/md3 -n 2

Die Synchronisation beginnt jetzt.
Man kann den Fortschritt mit cat /proc/mdstat verfolgen, oder mdadm --detail /dev/md0.

Die nächsten Partitionen im selben Verfahren synchronisieren:

mdadm --add /dev/md1 /dev/sdq2
mdadm --grow /dev/md1 -n 3
mdadm --add /dev/md2 /dev/sdq3
mdadm --grow /dev/md2 -n 2
// hier sind es tatsächlich nur zwei Partitionen. Wie oben gesagt verteilen sich Swap und Root über alle drei Laufwerke, ausser die Datenpartition

Bildschirmfoto 2017-05-20 um 18.13.58
Fortschritt im Blick behalten

Update November 2021: Falls der Prozess viel zu lange dauert, kann man ihn beschleunigen. Entweder über das Webinterface: Speichermanager > Speicherpool > Konfiguration
Dort einfach höhere MB-Werte eintragen. Ich habe es über das Terminal gemacht, deswegen weiß ich nicht, wie zuverlässig das funktioniert.

sudo sysctl -w dev.raid.speed_limit_max=5000000
sudo sysctl -w dev.raid.speed_limit_min=500000

Wenn alles synochronisiert ist hat man ein funktionierendes RAID 1 mit zwei gespiegelten Platten, eine intern, die andere auf dem USB Port.
Ein RAID mit einem USB Laufwerk macht für mich keinen Sinn, ich nehme die USB Platte ja nur als Hilfsmittel. Also die interne, alte und kleine Platte auskoppeln.

mdadm --fail /dev/md0 /dev/sda1 --remove /dev/sda1
mdadm --grow --force /dev/md0 -n 2
mdadm --fail /dev/md1 /dev/sda2 --remove /dev/sda2
mdadm --grow --force /dev/md1 -n 2
mdadm --fail /dev/md2 /dev/sda3 --remove /dev/sda3
mdadm --grow --force /dev/md2 -n 1

Das piept zwischendurch unangenehm, da die Synology das Auskoppeln als Festplattenfehler mitteilt. Lässt sich aber in der Systemsteuerung ausschalten.

Jetzt muss die Partition noch vergrößert werden.

parted /dev/sda resizepart 3 6000GB
die neue Platte fasst 6TB. Parted versucht jetzt die GPT Tabelle zu fixen und hilft einem, egal wie groß ich die Größe angegeben habe.

mdadm --examine /dev/sda3
nachgucken ob die neue Größe zugeschrieben wurde

mdadm --grow /dev/md2 --size max
resize2fs /dev/md2

Jetzt das System herunterfahren und die Platten tauschen, hochfahren und im DSM schauen, ob die neue Plattengröße angezeigt wird.

Bildschirmfoto 2017-05-30 um 20.45.06

Es ist dennoch zu betonen, dass der hier aufgezeigte Weg zwar bei mir funktioniert hat, mag aber bei anderen nicht funktionieren. Ich hatte meine Platte bspw. als ext4 formatiert und kein SHR verwendet.

    • Inspiration:

Out of home office, draußen arbeiten dank NAS

19.8.2016, 13:15:13

Meine überarbeitete Website habe ich zu großen Teilen in freier Natur mit vim geschrieben. Nicht immer habe ich dafür einen Laptop benutzt. Auch das Smartphone, ein iPad oder Zuhause der stationäre Rechner, kamen zum Einsatz.

Damit ich unabhängig vom Gerät die gleiche Entwicklungsumgebung habe, musste ich mich erst mal mit dem Gedanken anfreunden, dass ich mich von der grafischen Oberfläche meines hoch geschätzten Atom-Editors verabschieden muss und die Grundlagen von vim, als Texteditor, und tmux, als Terminal Multiplexer, zu lernen habe. Beides Programme die auf der Kommandozeile laufen. Denn nur die Kommandozeile ist auf jedem Gerät und jedem OS installierbar und somit der kleinste gemeinsame Nenner aller Geräte, sei es Smartphone, Tablet oder Computer. Diese beiden Programme sind der Schlüssel zum Cloud Computing. Die wichtigste Rolle spielt dabei tmux.

Was ist tmux?

Tmux sorgt dafür, dass auch nach dem Ausloggen aus der Shell die Session auf der Maschine weiter ausgeführt wird. Normalerweise werden alle Prozesse die während einer SSH Verbindung ausgeführt werden, nach dem Beenden der Remote Session beendet. Ein laufender Download bspw. wird nur so lange ausgeführt, wie man sich in der Session befindet. Tmux sorgt dafür, dass der Prozess auch dann auf der Maschine weiterläuft, nach dem man die Session beendet hat. Solange der Server nicht herunterfährt, laufen alle Prozesse auch nach dem Ausloggen noch. Ich kann also zu jedem späteren Zeitpunkt die Arbeit an genau der Stelle wieder aufnehmen, an der ich sie beendet habe, ganz egal mit welchem Gerät ich mich auf den Server verbinde.

Tmux ist ebenfalls eine Art Windowmanager. Innerhalb einer tmux Session kann ich parallel unabhängig von einander laufende Sessions betreiben, also mehrere Fenster erstellen. Ich habe bspw. für jede Aufgabe ein Fenster, in der tmux Session. Zum Beispiel verwende ich eine ähnliche Konfiguration wie die folgende: Auf Fenster 0 ist vim im Verzeichnis der Templatedateien geöffnet. Im Fenster 1 ist vim im Javascript Verzeichnis geöffnet. Im Fenster 2 ist vim im SASS Verzeichnis geöffnet. Auf der 3 mache ich git. Auf der 4 ist das Root Verzeichnis des Projekts. Auf der 5 der Lynx Browser. Auf der 6 mein Home Ordner …. usw. So kann ich sehr schnell zwischen den zu bearbeitenden Datien wechseln. Tmux kann jedes einzelne Fenster auch horizontal und vertikal teilen, wenn man zwei Dokumente parallel nebeneinander geöffnet sehen will.

Sogar das parallele Arbeiten mit mehreren Rechnern in der selben tmux Session ist möglich. So kann ich mitverfolgen, was über die zweite Verbindung gerade auf der SSH Session gemacht wird. Absolute Synchronizität ist damit gesichert. Voraussetzung ist, dass der Server dauerhaft an ist. Ansonsten kann man sich auch Startscripte für rmux schreiben, die eine Session mit allen Fenstern, Programmen und Dateien erzeugt, die man benötigt. So ein Script sollte pro forma angelegt werden. Fährt der Server doch mal runter, ist die mühsam eingerichtete tmux-Umgebung nämlich futsch. Man fängt von vorne an seine Fenster, Programme und Dateien neu aufzurufen und einzurichten. Ein Startscript automatisiert diesen Prozess.

Zentrale Lösung: NAS

Nun kann ich nicht anfangen tmux und vim auf Smartphone, Tablet und verschiedenen Rechnern zu installieren und die Konfigurationen synchron halten. Das ist technisch nicht möglich und wenn doch, viel zu umständlich. Zum Glück habe ich eine Synology Diskstation, ein NAS. Auf den Server kann ich mit SSH von jedem Gerät aus zugreifen, egal ob ich Zuhause im eigenen Netzwerk bin oder unterwegs im Handynetz, egal ob ich vor einem Smartphone, Tablet oder Computer sitze. Auf meinem Server habe ich mir nun peu à peu meine Entwicklungsugebung aus Plugins, Syntaxhighlightern, Snippets, Tastenkürzeln usw., aufgebaut.

SSH Verbindung herstellen

Um eine SSH Verbindung auf den Server aufzubauen, kann man entweder per VPN Verbindung ins Heimnetz gehen und dann die lokale IP des Servers anrufen oder gleich den SSH Port am Router öffnen und ohne Umweg auf die Shell zugreifen. Wer seinen SSH Port nicht öffnen möchte, greift zu Lösung 1 oder überlegt, ob er nicht einfach den Standardport von SSH ändern möchte.
Auf Android kann ich als SSH Client JuiceSSH empfehlen, mit dem ich gerade diese Zeilen schreibe, oder auf iOS: Serverauditor. JucieSSH ist meiner Meinung nach ein hervorragender SSH Client, der sogar Swipe Gesten in Fensterwechsel unter tmux umwandelt.
Wer vom Rechner eine SSH Verbindung aufbauen will, gibt normalerweise ssh NUTZERNAME@DOMAIN_ODER_IP.DE:PORT ein. Wenn man mehrere SSH Verbindungen managt, kann die Schreiberei und das Merken nerven. Es lohnt sich im Verzeichnis ~/.ssh eine Datei mit Namen config anzulegen. Dort kann man seine Verbindungen mit Aliasen versehen. Ein Eintrag sieht bspw. so aus:
Host ALIAS_EINTRAGEN
HostName IP_ODER_DNS
User NUTZERNAME

Für mehr Informationen einfach mal nach ssh config im Internet suchen

Weitere Argumente für einen Heimserver

Ein weiterer Punkt der für die Lösung mit dem Heimserver spricht, ist der Fakt, dass ich nicht nur vim auf allen Geräten hätte installieren müssen, sondern auch alle Prozessoren, die für die Entwicklung unabdingbar sind. Das sei zum Beispiel der Static Site Generator jekyll, den ich für meine statische Seite als Grundlage ausgewählt habe. Er benötigt zum generieren der HTML Dateien aus meinen Templates Ruby. Man kann doch nicht Ruby auf jedem Rechner installieren, von dem aus an der Website gearbeitet werden soll… Hinzu kommen noch git und in der weiteren Entwicklung Grunt, imagemagick und mehr.
Um eine Pflege über mehrere Rechner zu ermöglichen, hätte man als erste Idee auch git als zentrale Lösung verwenden können, um so alle Projektdaten zwischen den Geräten mit viel Handarbeit synchron zu halten. Git verwende ich zur Dokumentation und Versionierung zwar sowieso, wäre aber wieder nur schwer auf Smartphone und Tablet zu implementieren gewesen. Ein ständiger Push und Pull Workflow ist zudem noch sehr fehleranfällig, wenn man nicht gewissenhaft arbeitet. Mit der zentralen Lösung eines Entwicklerservers, der per SSH angesprochen wird, installiere ich alle Softwarebausteine ein einziges Mal auf einem Gerät und habe unabhängig von der technischen Spezifikationen des Client immer die exakte selbe Rechenleistung, Speicherstände und Arbeitsumgebung zur Hand.

_DSC7703
Entweder, oder. Doch allein schon mit Smartphone und Tastatur kann man produktiv werden.

Außer Haus arbeiten

Damit ich von unterwegs mit dem Tablet, Laptop oder Smartphone auch auf den Heimserver komme, brauchte ich einen mobilen Accesspoint. Dazu habe ich mir günstig auf eBay einen Huawei E5331s gekauft. Man kann natürlich auch einfach mit seinem Handy einen Hotspot errichten oder bspw. aus einem RaspberryPi einen mobilen Accesspoint basteln. Da sich die Übertragungsrate bei SSH Verbindungen im untersten Kilobytebereich bewegt, kann auch mit überzogenem Datenvolumen problemlos weitergearbeitet werden.
Für den Anfang reicht auch eine Karte von netzclub, kostenlos 100 MB jeden Monat. Man bekommt Werbung im Gegenzug.
Für die Arbeit am Smartphone ist es ratsam Displaygrößen von ca. 5.5 Zoll zu haben. Auch ein faltbarer Ständer und eine Bluetooth Tastatur erleichtern das Arbeiten. So hat man mit wenig Gepäck und wenig Stromaufgebot eine portable Entwicklungsumgebung.

Browsertests

Zur Kontrolle der Entwicklung gibt es je nach Arbeitsschritt verschiedene Möglichkeiten. Will man wissen, ob die Textstelle eingepflegt wurde, kann man den terminalbasierten Lynx Browser verwenden, um Datenvolumen zu sparen. Wenn man seinen CSS Code im Browser kontrollieren will, helfen Browser Plugins, die nur die CSS Datei neu laden (CSS Reloader – FireFox). Auch hilfreich sind Plugins, die einzeln das Laden von JS, CSS, Bildern, Cookies, Flash usw. verhindern können. Sehr gut gefällt mir das QuickJava Addon für Firefox, das allgemein gut ist, wenn man unnötige Datenmengen im Handynetz sparen möchte. Auch das automatische Nachladen der CSS-Datei bei erkannten Änderungen an selbiger ist ja bekanntlich mit Addons möglich. Der Opera Browser ist darüber hinaus in der Lage Traffic zu sparen, in dem er die angeforderte Seite zu erst auf den operaeigenen Servern komprimiert und die komprimierte Version in den Browser zurückschickt.

revolt 42 Ah Powerbank
ca. 800g schwer, sorgt aber für deutlich höhere Reichweite

Stromversorgung

Ein weiteres Hindernis ist der Strom unterwegs. Will man im Park über längere Zeiträume verweilen und hat am Laptop nur Akkulaufzeiten von ca. 3 Stunden, der sollte sich überlegen eine Powerbank der größeren Sorte zu bestellen. Ich habe mir von revolt eine 45 Ah (45.000 mAh) Powerbank besorgt, die meinen MacBook Air (von 2009) über 8 Stunden (!) mit Strom versorgen kann. Hinzu kämen die 3 Stunden aus dem eingebauten Akku. Völlig unabhängig von kurzen Akkulaufzeiten zu sein macht sich auch dann bezahlt, wenn man auf einem Fototermin im Freien ist, und man seine Fotos vor Ort sichten und bearbeiten muss. Gerade wenn die Prozessorlast hoch ist, kommt man nicht sehr weit. Die besagt Powerbank hat auch USB Anschlüsse, falls der Accesspoint nachgeladen werden muss.

_DSC7709

Optimierung der SSH Verbindung

Im laufenden Betrieb einer SSH Verbindung über das Handynetz stellt man fest, dass bei Denkpausen ab 5 Sekunden die Verbindung unterbrochen wird. Um dem Abhilfe zu schaffen, läuft neben der SSH Session auch noch ein Ping, der alle 1–2 Sekunden 2 Bytes zu Google.de schickt. So bleibt die Verbindung immer gut ansprechbar. ping -i 2 -s 2 google.de

Jekyll Websites mit Synology Diskstation rendern

Da man nicht ohne weiteres auf einer Diskstation jekyll installieren kann, habe ich mir einen jekyll Dockercontainer heruntergeladen. Als Volume gibt man den Root-Pfad vom Projekt an und als Mount-Pfad /srv/jekyll. Sobald der Container läuft versucht er aus den Template Dateien eine fertige Seite nach _site/ zu schreiben. Weil man während der Entwicklung nicht immer über das Webinterface der Diskstation gehen will, um das Protokoll von jekyll zur Fehleranalyse auszuwerten, kann man den Container über das Terminal steuern. docker logs --since 10m NAME_DES_CONTAINERS zeigt stdout der letzten 10 Minuten von dem Container an. Wenn man was an der _config.yml ändert, muss der Container neu gestartet werden. Das passiert mit docker restart NAME_DES_CONTAINERS. Die Seite wird mit https://SERVERADRESSE:4000 im Browser aufgerufen.

Zusammenfassung

Ich habe hier nur grob angerissen, was ich auf meinem Weg bisher gelernt habe. Im Großen und Ganzen ist es eine lohnenswerte Investition (zeitlich vor allem) gewesen, das System wie beschrieben einzurichten. Mit vim umgehen lernen macht viel Freude und macht einen frei von grafischen IDEs. Wenn vim auf nur einer Maschine eingerichtet werden muss, die per SSH erreichbar ist, erspart man sich das x-malige Einrichten seiner IDE auf den verschiedenen Geräten, was technisch manchmal sogar unmöglich wäre.
Geräteunabhängig, stromsparend, zeitsparend: ich glaube das macht die Lösung mit dem NAS so interessant und flexibel einsetzbar. Auch weil dort noch Dienste wie der eigene Git Server, Docker, node.js und weitere Pakete per ipkg zum Laufen gebracht werden können, hat man alles unter einem Hut. Es entsteht eine schlanke textbasierte Cloud im Terminal, die man in vielerlei Hinsicht produktiv verwenden kann. Mit dieser Geräteunabhängigkeit kann ich viele Aufgaben stromsparender und ortsunabhängiger und damit effizienter erledigen. Auf in eine Zukunft mit einem schlanken tragbarem Büro…

Weitwinkel Objektivtest an Sony A7R

3.1.2016, 00:48:17

Ich habe mal meine beiden Superweitwinkelobjektive zum Vergleich herangezogen und für beide meinen bevorzugten Einsatzzweck herausgestellt. Auf der einen Seite das Samyang f2.8/14mm, auf der anderen das Minolta MD Rokkor f4/17mm. Äußerlich sind mindestens drei wichtige Unterschiede zwischen Samyang und Minolta festzustellen. Testbilder am Ende des Artikels

1. Das Samyang hat eine große gewölbte Frontlinse
2. Das Samyang hat eine fest eingebaute Streulichtblende
3. Das Samyang hat eine gewölbte Austrittslinse

Wenn man sich den reinen Objektivkörper ansieht, sind beide in ihren Abmessungen in etwa vergleichbar. Doch die Unterschiede, die ich für das Samyang aufgezählt habe, haben direkten Einfluss auf die optische Leistung und Bedienung.

Testaufbau

Zum Vergleich der optischen Leistung habe ich beide an einer Sony A7R arretiert, die auf einem Gitzo Stativ mit Monoball Z Stativkopf befestigt wurde. Es gab einen 10 Sekunden Selbstauslöser. In den 10 Sekunden bin ich 3 Schritte vom Stativ weggegangen. Das Stativ wurde zusätzlich mit einer ca. 2 Kg schweren Tasche belastet. Das Samyang Objektiv wurde mittels LA-EA3 Adapter, der ohne Folie auskommt, mit der Kamera verbunden. Das Minolta Objektiv kam mittels Kipon Minolta SR-Adapter an die Kamera. Beide Motive wurden mit größtmöglicher Präzision auf das gleiche Objekt fokussiert. Die Entfernung ist fast unendlich. Alle Bilder sind völlig unbearbeitet und lediglich von RAW auf JPG in eine kleinere Auflösung mit Lightroom gerendert worden.

Auffällige Unterschiede zwischen den Objektiven

Das Samyang hat eine merklich gelb bis grünliche Färbung, die das unbearbeitete Bild erst mal farbverälschter aussehen lässt, als die kühlere, kontrastreichere Abstimmung der Minolta Linse. Die Minolta Farben gefallen auf Anhieb und müssen nicht korrigiert werden. Per Weißabgleich oder Objektivprofil lässt sich aber auch das Samyang dauerhaft vom Farbstich befreien.

Die Schärfe ist beim Samyang schon bei Offenblende auffällig hoch. Die Randschärfe zieht bis max. f5.6 noch ordentlich an, danach ist aber nur noch deutliche Verschlechterung sowohl am Rand als auch in der Bildmitte zu sehen. Mit anderen Worten, das Objektiv ist bei Offenblende und leicht abgeblendet absolut scharf bis in die Ecken. Hier mache ich die gewölbte Frontlinse für das ausserordentlich gute Randergebnis verantwortlich. Denn im Vergleich dazu schneidet die Minolta Linse durchgängig schlecht ab. Es ist nicht möglich durch Abblenden, an die Randschärfe vom Samyang zu gelangen. Doch dafür ist das Minolta Objektiv bei Offenblende f4 in der Mitte schon sehr scharf und zieht bis f5.6 noch mal an. Anders als das Samyang kann das Objektiv aber die Schärfe annähernd halten, wenn abgeblendet werden muss. Das Samyang wird ab f5.6 immer weicher und kontrastärmer. Jeder Abblendeversuch sollte vermieden werden. Der subjektive Schärfeeindruck beider Objektive im idealen Blendenbereich in der Bildmitte ist beim Minolta Objektiv einen Tick besser. Dennoch kommt es nie an die hervorragenden Schärfeergebnisse am Bildrand des Samyangs ran.

Das Samyang hat ausserdem eine hervorragende Schärfeausdehnung, die von Unendlich bis 1m reicht. Schon bei Blende f4 ist der Vorder- und Hintergrund so scharf, dass keine Wünsche offen bleiben. Das sieht bei dem Minolta Objektiv anders aus. Das hat die Mitte scharf, und schafft es konstruktionsbedingt nicht, den eingestellten Fokus bis zur Entfernung von 1m scharf zu zeichnen, weil dieser Bereich zum Großteil ausserhalb der Mitte liegt.
Das liegt an der planen Frontlinse, die aber ein Filtergewinde bietet, und so, anders als beim Samyang, mit herkömmlichen Schraubfiltern bestückt werden kann. Soweit ich weiß gibt es aber einen Adapter für Filterfolien, der am Samyang Objektiv angebracht werden kann.
Weil die Frontlinse beim Minolta Objektiv stehend ist, ist es ein filterfreundliches Objektiv.

Was bei den Aufnahmen auffällt ist, dass das Samyang gar nicht streulichtanfällig ist. Das Minolta hingegen schon. Wer das als Effekt wünscht, ist mit dem Minolta besser bedient.

Die Vignettierung ist bei beiden Objektiven bei Offenlende deutlich sichtbar und eigentlich unerträglich. Abblenden um eine Stufe hilft aber merklich.

Samyang Austrittspupille

Konstruktionsbedingt ragt die Austrittslinse beim Samyang über den Flansch und ist sehr anfällig für Kratzer, wenn man den falschen Objektivrückdeckel verwendet. Es muss der mitgelieferte oder ein baugleicher sein, damit die Antirflexbedampfung nicht beschädigt wird. Ein alter AF-Rückdeckel aus meinem Deckelarsenal scheuerte an der Rücklinse, ohne dass ich das gleich merkte.
Apropos Beschädigung. Die großflächige Frontlinse des Samyangs ist sehr empfindlich. Ihre exponierte Lage zieht Beschädigungen förmlich an. Meine Beschichtung hat im harten Alltag schon gelitten. Das Objektiv sollte immer mit der Objektivkappe in der Tasche sein, sonst hat man schnell eine Spur auf der Vergütung, wenn herumfliegendes Equipment die Linse trifft.

Fazit

    Samyang

  • Farblich ist das Samyang schlecht.
  • Schärfetechnisch ist es bei den ersten 3 Blenden hervorragend.
  • Randschärfe ist anstandslos.
  • Die Größe ist alles andere als kompakt.
  • Die Kratzeranfälligkeit auf Front- und Rücklinse ist sehr hoch.
  • Das Streulichanfälligkeit ist kaum vorhanden.
    Minolta

  • Das Minolta hat eine sehr schöne Anmutung in Kontrast und Farbe.
  • Die Bauqulität ist haptisch genussvoll.
  • Die Größe ist halbwegs als kompakt zu bezeichnen.
  • Filterverwendung ist kein Problem.
  • Die Schärfe ist in der Bildmitte und über den gesamten Blendenbereich sehr gut. Vor allem die ersten zwei Blenden sind enorm.
  • Die Randschärfe lässt bei allen Blenden sehr zu wünschen übrig.
  • Streulichanfälligkeit ist nicht von der Hand zu weisen.

Zusammenfassend ist das Samyang ein lichtstarkes, kratzempfindliches, nicht nur randscharfes Weitwinkelobjektiv mit unschönem Farbstich und schlechten Werten bei geschlossener Blende.
Das Minolta ist ein solides Vollmetallobjektiv, mit enormer Schärfe in der Bildmitte über den gesamten Blendenbereich und mäßiger Schärfe am Rand. Es ist kompakt, reisetauglich und dank schöner Farben auch analog problemlos zu verwenden (wenn keine digitale Dunkelkammer zur Korrektur vorhanden).

vergleich_mitte

Samyang 2.8/14mm (Mitte)

Minolta 4/17mm (Mitte)

vergleich_rechts

Samyang 2.8/14mm (rechts aussen)

Minolta 4/17mm (rechts aussen)

vergleich_links

Samyang 2.8/14mm (links aussen)

Minolta 4/17mm (links aussen)