Donnerstag, 28. Dezember 2017

Netzlaufwerke verbinden Windows 10 Version 1709

Mit der Version 1709 von Windows 10 hat man mal wieder ein verändertes "Anmelde" Verhalten Microsoft hat da wieder kräftig "optimiert" - was (wie schon so oft im Leben von Windows) mal wieder dazu führt, dass Netzlaufwerke nach der Anmeldung mit einem roten Kreuz versehen sind und Applikationen die diese Netzlaufwerke brauchen nicht funktionieren.
Klar, ein Doppelklick auf das rote Kreuz im Explorer behebt das Problem.
Das Verhalten ist davon abhängig wie schnell man sich nach dem Systemstart anmeldet, wartet man erst eine Weile, hat man unter Umständen rote Kreuze an den Laufwerken:

Automatische Abhilfe würde eine kleine Batchdatei schaffen, die man einfach in den Autostartordner des Benutzers legt, der sich anmeldet.
Apropos Autostart Ordner - wo ist der eigentlich? - Der wird seit einigen Windows Versionen auch ziemlich versteckt. Man erreicht ihn eigentlich nur noch über:
Windows + "R"
shell:startup eintippen und enter

Dort erzeugt man eine neue Textdatei mit beliebigen Namen und der Endung bat oder cmd mit folgendem Inhalt:

@echo off
set Server=<Servername>

REM es gibt Problem mit dem find Befehl wenn man sich nicht im Systempfad befindet
cd %SystemRoot%\system32

REM zunächst prüfen ob der Server online ist, wenn nicht Warteschleife
:Loop
ping -n 1 -w 5000 %Server% | find /i "Zeit" && (goto Online)
echo Server %Server% ist nicht erreichbar! 
timemout 10
goto Loop

:Online
REM zunächst Laufwerk löschen und dann wieder verbinden
if exist V: net use /d /yes V: > NUL
net use V: \\%Server%\Videos /yes > NUL

Dieses Script muss man natürlich für Servernamen,  Laufwerk und Share anpassen. Es sind mehrere Laufwerke möglich, einfach die letzen beiden Zeilen kopieren, einfügen und modifizieren.

Eine von vielen alternativen Möglichkeiten diese Datei bei der Anmeldung auszuführen wäre die Aufgabenplanung.

Die Grundlage für mein Script stammt aus dieser Quelle. Es gibt aber ganz wesentliche Änderungen:

  1. find /i "TTL" im Original funktioniert nur für IPV4, bei IPV6 ist die Antwort ohne TTL. Das "Zeit" Feld existiert aber bei beiden IP Versionen. Hier kann sich jederzeit wieder etwas ändern. Insbesondere Sprachabhängigkeiten!
  2. net use im Original forciert nicht die vorhandene Verbindung zu überschreiben. Mit dem Zusatz /yes wird auch eine leicht anders lautende Verbindung für das gleiche Laufwerk überschrieben.

Sonntag, 26. November 2017

Windows Speicherpools umziehen

Was ist ein Speicherpool?

Speicherpools sind ein Windows Feature ab Version 8 bzw. Server 2012. Dabei werden physische Datenträger quasi virtualisiert und es lassen sich allerlei Skalierungs- und Ausfallsicherheitsfeatures einrichten.

            physische Datenträger -> Speicherpool -> virtuelle Datenträger

Wenn man einen solchen Speicherpool von einer Installation auf eine Andere einfach "umstecken" will - also im einfachsten Fall einen Server nicht aktualisieren sondern neu installieren will und die Datenplatten erhalten bleiben sollen, muss man im neuen System den Speicherpool wieder aktivieren. Er wird nicht von selbst wieder eingebunden!

Ansicht in der Datenträgerverwaltung 

Ist der Speicherpool aktiv werden die virtuellen Datenträger angezeigt, die physischen sind nicht zu sehen.
Ist der Speicherpool nicht aktiv, werden die physischen Datenträger offline oder nicht angezeigt.

Einen unbekannten Speicherpool wieder einbinden

Die Verwaltung erfolgt im Servermanager - die ersten beiden Schritte im
-> Datei und Speicherdienste -> Volumes -> Speicherpools

Es ergibt folgendes Bild:
Physischer Datenträger: ok
Virtueller Datenträger und Speicherpool: gelbes Dreieck (unbekannt/getrennt unbekannt/unbekannt)

Man klickt mit mit rechts auf den Speicherpool und wählt "Schreibzugriff festlegen".
Damit verschwindet das gelbe Dreieck vor dem Speicherpool. Offenbar wird dieser Schreibzugriff in den Speicherpool geschrieben, dies ist beim zweiten Versuch nicht mehr wiederholbar.

Danach klickt man rechts auf den virtuellen Datenträger und wählt "virtuellen Datenträger anfügen".

Man wechselt im Servermanager die Ebene für die abschließenden zwei Schritte
-> Datei und Speicherdienste -> Volumes -> Datenträger
Hier erscheint jetzt der virtuelle Datenträger aber mit dem Zusatz offline.
Mit einem Rechtsklick kann man ihn online Schalten, allerdings erhält er den nächsten freien Laufwerksbuchstaben. Den kann man hier aber sofort ändern.

Dieser virtuelle Datenträger (nicht der physische) erscheint jetzt auch in der normalen Datenträgerverwaltung.

Leider ist diese Einbindung noch nicht dauerhaft und würde einen Neustart nicht überleben.
Mit powershell und dem Befehl
Get-VirtualDisk
Sieht man das der virtuelle Datenträger auf "IsManualAttach" steht. Powershell liefert uns die Möglichkeit das zu ändern (Quelle):
Get-VirtualDisk | Where-Object {$_.IsManualAttach –eq $True} | Set-VirtualDisk –IsManualAttach $False

Freitag, 24. November 2017

Acer easystore H340 noch etwas aufpolieren

Der H340 ist zwar schon ein paar Jahre alt, aber für eine Linux basierte NAS ist er immer noch top und das Gehäuse mit 4 x 3,5" Schächten ist schön klein.
Leider braucht man einen Schacht als Systemplatte, das ist in Anbetracht kleiner SSD Platten eigentlich Verschwendung. Das Board hat aber auch nur 4 SATA Anschlüsse. Da ich keine richtig passenden Adapterkombination gefunden habe, musste ich mit dem Lötkolben etwas improvisieren.

Es gibt für unter 10 € den LT304 PCIe mSATA /SATA Adapter in verschiedenen Handelsbezeichnungen. Dazu braucht man nur noch eine mSATA  SSD (8, 16 oder 32 GB) für ca. 20 € und ein kurzes SATA Kabel aus der Bastelkiste.

Das BIOS des H340 kann leider nicht von einem Sata Adapter im Onboard PCIe Slot booten, sondern nur von den onBoard SATA und USB Anschlüssen.
Deshalb kam mir die Idee: Die mSATA Platte einfach adaptieren und mit dem SATA 1 Anschluss auf dem Board und den SATA 1 Anschluss vom Plattenkäfig mit dem SATA Anschluss des LT304 verbinden. Vom Linux OS wird der SATA Adapter sehr wohl erkannt und unterstützt.
Der Adapter kommt also "zwischen" die Sata 1 Verbindung vom Motherboard zum Backplane/HDD Käfig und stellt einen zusätzlichen (fünften) Sata Anschluss:

  • Motherboard PCI - mSataAdapter - mSata - angelötetes Kabel - Sata1 Motherboard
  • Backplane Sata1 - Sata Anschluss am mSataAdapter

Die Modifikation ist minimal. Die im Bild rot markierten Kondensatoren C31-C34 verbinden den asmedia 1601 Chip mit dem mSATA Connector. Diese lassen sich mit einer breiten Lötkolbenspitze leicht entfernen. Damit ergeben sich auf der linken Seite (dem Connector zugewandt) perfekt vier kleine Lötflächen für das SATA Kabel. Ein SATA Kabel wird einfach in entsprechende Länge (ca. 18 cm) abgeschnitten, kurz abisoliert und in richtiger Reihenfolge angeschlossen.
Das flache SATA Kabel ist 1 zu 1 mit den 7 Pins verbunden, neben Pin 7 liegt die Verdrehsicherung.

Kabel   -> Cxx - Pin mSATA
1 - Gnd frei 
2 - Tx+ -> C34 - Tx+(33)
3 - Tx- -> C33 - Tx-(31)
4 - Gnd frei
5 - Rx- -> C32 - Rx-(25)
6 - Rx+ -> C31 - Rx+(23)
7 - Gnd frei
Verdrehsicherung






An der Kante von der Controllerplatine wird das Kabel mit etwas Heißkleber fixiert und kann so nach hinten auf kurzem Wege mit SATA Anschluss 1 auf dem Board verbunden werden. Das Kabel vom Käfig wird einfach an den SATA Anschluss oben am Controller angeschlossen.
Die mSATA  SSD kann praktisch jede x-beliebige Kapazität haben, openmediavault braucht aktuell nur knapp 2 GB an Speicherplatz. Ich habe mich für eine 32 Gb SSD entschieden.

Bei der mechanischen Befestigung muss man etwas in der Bastelkiste suchen, der Controller ist leider ein paar mm höher als Low Profile, so dass kein passendes Slotblech beiliegt. Platz ist aber im H340 genug vorhanden.

openmediavault 1-2-3 fertig

Ein paar Notizen zur Grundeinrichtung

Aktuell gültig für OMV Version 3.086

Manuelle Konfiguration nach der Installation

Ein paar Grundeinstellungen

Immer wenn man die Konfiguration ändert kommt als Abschluss noch ein gelber Balken und man muss den "Anwenden Knopf" drücken. Den kann man auch nach einer Reihe von Änderungen ganz zum Schluß einmal drücken. Wichtig ist im jeweiligen Menü den Speichern Knopf zu drücken

Genaue Zeit
Datum und Zeit
NTP Server benutzen -> aktivieren -> speichern

WOL
Netzwerk
Schnittstellen -> eth0 auswählen -> bearbeiten -> Wake-on-LAN aktivieren -> speichern

Auf Knopfdruck ausschalten
Energieverwaltung
Einschaltknopf -> Herunterfahren -> speichern

Zugang per ssh
Zugriffskontrolle -> Benutzer -> Benutzer auswählen -> bearbeiten
                             -> Gruppen -> ssh anhaken -> speichern -> anwenden

System auf neuesten Stand bringen
Aktuell müssen zwei Pakte mit 0,00 Byte nach der Neuinstallation abgewählt werden, sonst geht die Aktualisierung nicht.

Benutzer zum sudoer machen
Einfach im Terminal (putty)
sudo su
echo "<Benutzer> ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/22_<Benutzer>-nopasswd

Ein öffentliches Share einrichten

Ziel: keine Anmeldung, kein User, kein Passwort

Dateisysteme -> einbinden der vorhandenen Dateisysteme auf den Platten oder Neue anlegen

Freigegebener Ordner
               -> Hinzufügen -> Namen eintragen
               -> Laufwerk auswählen -> Pfad auswählen
               -> Zugriffsrechte -> jeder:lesen/schreiben -> speichern
         Tab ACL -> rekursiv -> Aktivieren -> anwenden -> schließen

SMB/CIFS -> aktivieren -> Local Master Browser deaktivieren -> speichern
     Tab Freigaben -> hinzufügen -> Freigegebenen Ordner auswählen
                             -> Öffentlich -> nur Gäste -> speichern

Hintergrundinformationen

Die Weboberfläche macht bei der Einrichtung eine Kombination aus Ausführung von Debian Systembefehlen und Speichern von Informationen in der /etc/openmediavault/config.xml
Systembefehle werden sofort ausgeführt und eventuelle Meldungen erscheinen im Fenster.
Änderungen in der config.xml werden sofort in der Umgebung aktiv und mit einem gelben Balken angezeigt aber erst bei "Anwenden" in diese Datei geschrieben.
Genau aus diesem Grund gibt es praktisch keine Möglichkeit die gesamte Konfiguration einfach so zu speichern und wieder herzustellen.

Sonntag, 19. November 2017

Openmediavault von Version 2 auf Version 3 aktualisieren

Update oder neu?

Es gibt zwar einen Updatepfad, aber ich habe mich für Neuinstallation entschieden.

Aber es ist relativ entspannt. USB Stick erstellen, booten und Installation starten.
Die Systemplatte wird dabei gelöscht, alle anderen Platten und Partitionen bleiben erhalten und werden sofort wieder eingebunden. Auch Software RAIDs sind kein Problem.

Allerdings müssen alle Freigaben von Hand wieder eingerichtet werden. Meine Konfiguration war aber eher minimal.

Angenehmer Nebeneffekt: Bei meinem H340 funktionierte die Power Off Funktion nicht zuverlässig (sofort Neustart und erst beim zweiten Shutdown wurde die Box ausgeschaltet). Das funktioniert jetzt sauber!

Tipp

Achtung! Unbedingt den Browser Cache nach der Umstellung löschen. Ansonsten erhält man bei jeder Konfigurationsveränderung unklare Fehlermeldungen!

Handbuch OMV

Samstag, 28. Oktober 2017

Hyper-V in in Arbeitsgruppen remote verwalten

Ich habe mal wieder etwas mit Virtualisierungsumgebungen gespielt. Hyper-V 2016 gibt es ja als freie Version ohne GUI. Damit man mit diesem Server arbeiten kann braucht man schon irgendwie den Hyper-V Manager auf einer Remotestation (Windows 10).
Nur leider so einfach geht das nicht. Die Microsoft Dokumentation beschreibt zwar viel, aber nicht alles. Ich habe hier eine Beschreibung gefunden die funktioniert, allerdings waren mir ein paar Dinge nicht ganz klar. Deswegen habe ich das Ganze nochmal aufgearbeitet.

Integrierte Firewall

Beide Maschinen sollten mit privaten Netzwerken verbunden sein. Im Netzwerk und Freigabecenter kann man das überprüfen. Ansonsten greifen die voreingestellten Firewall Regeln nicht.

Namensauflösung

Der Remote Computer muss vom Steuernden Computer per Hostnamen erreichbar sein! IP Adressen und DNS Namen sind zwar prinzipiell verwendbar, aber auch nur der Hostname muss aufgelöst werden. Notfalls muss die Maschine einfach in der Datei c:\windows\system32\drivers\etc\hosts eingetragen werden.

Einrichtung für Windows 10 Pro -> Hyper-V Server 2016

Man öffnet am Besten auf beiden Stationen eine Powershell als Administrator.

Auf dem Hyper-V Server 2016 muss Remote Management und der Credential Security Support Provider aktiviert werden.
Enable-PSRemoting
Enable-WSManCredSSP -Role server

Auf Windows 10 (bzw. steuernder Computer) muss der Hyper-V Manager und die Tools installiert werden und Remote Management  aktiviert werden.
Ersteres muss man leider per Hand in der GUI tun (Die Powershell macht es nur komplett):
  • Im Punkt Windows-Features aktivieren müssen die Hyper-V Verwaltungstools ausgewählt werden. 
Remote Management  kann man auch per PowerShell Befehl aktivieren.
Enable-PSRemoting

Ergänzung: Neues Notebook und der Eintrag fehlt in Windows-Features? Dann hat man nur Windows 10 Home gekauft? Auf vielen Seiten findet man, wie man Windows Home "aufrüsten" kann (Beispiel). Ich habe mal eine Powershell Variante gebaut, die man so per c&p in die Kommandozeile werfen kann und die die Anzahl der Dateien ausgibt. 
$arr=(gci $env:systemroot\servicing\Packages\*Hyper-V*.mum -name)
$i=$arr.Count
foreach ($datei in $arr) {
dism /online /norestart /add-package:$env:systemroot\servicing\Packages\$datei
$i--
Write-Output "noch $i Dateien zu installieren"
}
dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL

Ergänzung: für Windows 11

Der obige "Hack" läuft auch unter Windows 11. Leider wird ab Version 24H2 bei einigen Updates der Verwaltungsdienst für virtuelle Computer gestoppt und auf manuellen Start gesetzt. Abhilfe:

Set-Service vmms -StartupType Automatic -PassThru|Start-Service
Um in einer Workgroup eine andere Maschine zu Verwalten muss das Konto der Maschine und ein Admin Konto der zu steuernden Maschine eingetragen werden.
Dazu ein kurzes Script
$server = "<Hostname der zu steuernden Maschine>"
$user = "<lokaler user auf der zu steuerenden Maschine>"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $server -force
Enable-WSManCredSSP -Role client -DelegateComputer $server -force
cmdkey /add:$server /user:$user /pass
Nach interaktiver Eingabe des Passwortes ist die Konfiguration abgeschlossen.
Nun kann einfach nur der Computername im Hyper-V Manager eingetragen werden und die Verbindung wird hergestellt. Sollte ein Fehler auftreten in Richtung Host wird nicht gefunden oder WinRM Client kann nicht zugreifen, dann bitte die IP Adresse und den Hostnamen in die hosts Datei eingetragen. Warum das so ist weiß ich leider nicht.

Zusätzliche Informationen

Hyper-V Feature installieren

Bei der freien Version Hyper-V Server 2016 sind natürlich alle notwendigen Features installiert. Auf allen anderen Windows und Server Versionen kann man die Installation entweder über Programme und Features oder mit Powershell erfolgen.
Mit Get-<> kann man die möglichen Features ermitteln (3 Varianten):
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V*
Get-WindowsOptionalFeature -Online | ? featurename -match 'Microsoft-Hyper-V*'
Get-WindowsOptionalFeature -FeatureName "Microsoft-Hyper-V*" -online | Format-Table 
Mit Enable-<> oder Disable-<> kann man die Features installieren oder entfernen.
Enable-WindowsOptionalFeature -Online -FeatureName <>
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All
Leider funktioniert das nicht so wie es in der Doku steht. Ist noch kein Feature von Hyper-V installiert lässt sich keines der Einzelnen Sub-Features mit Powershell installieren. Der übergeordnete Schlüssel wird in der Registry nicht gefunden. Sobald ein Feature installiert ist, können weitere Features auch per PS installiert werden.

Zwischen den Versionen

Die Remote Administration von Hyper-V funktioniert nur einwandfrei untereinander bei gleichen Windows Versionen (Windows 10 und Server 2016). Von Windows 10 einen Hyper-V auf Server 2012 R2 funktioniert nicht. Ob man mit den separaten RSAT Versionen noch etwas erreichen kann habe ich nicht probiert.

Tools, Alternativen und Tipps

Mit cmdkey kann man Anmeldeinformation für Netzwerkobjekte speichern und bearbeiten. Oder man geht in die Systemsteuerung und dort dann:
Systemsteuerung / Benutzerkonten / Anmeldeinformationsverwaltung
Als Dateimanager kann man recht einfach den FreeCommander portabel nachrüsten.

Wird auf der steuernden Maschine selbst ein Hyper-V Host ausgeführt, erzeugt Enable-PSRemoting eine Fehlermeldung. Am Ende funktioniert es trotzdem. Allerdings lässt sich auf einer solchen Station offenbar wegen dem Virtuellen Switch die Netzwerkverbindung (private public) nicht mehr ändern. Die Maske öffnet sich einfach nicht. (Windows 10 pro 1703/Netzwerk und Interneteinstellungen/Status/Verbindungseigenschaften ändern)

Will man nested Hyper-V betreiben, muss man das pro VM aktivieren (Doku):
Set-VMProcessor -VMName <Name der VM> -ExposeVirtualizationExtensions $true

Donnerstag, 5. Oktober 2017

Homematic Nachrichten sniffen

Der Wiki Artikel dazu ist ziemlich kurz.
Nachrichten Sniffen ist im Prinzip loggen mit speziellen Einstellungen. Dazu wird vor allem der HM IO in einen speziellen Log Modus versetzt. Die Nachrichten landen in der zentralen Logdatei von FHEM.

Durch setzen bzw. modifizieren folgender Attribute wird er Sniffer Modus beim Homematic IO aktiviert:
attr global verbose 1
attr global mseclog 1
attr <IO> logIDs <ID1>,<ID2>

Was genau passiert dadurch?
  • verbose 1 schaltet so ziemlich alles aus. Konzentration aufs Wesentliche!
  • mseclog 1 schaltet die "exakte" Zeit ein, es werden die Millisekunden geloggt.
  • logIDs schaltet das Logging für bestimmte HM Komponenten wieder ein. Dabei können mehrere Angaben mit Komma getrennt werden:
    • all - steht für alle Homematic Geräte
    • sys - steht für Systemnachrichten
    • <HMID> - HMID des Gerätes/Channels für ein oder mehrere selektive Geräte/Kanäle

Normales Logging - Sniffen wieder ausschalten


Ist man fertig mit Sniffen löscht man einfach die zusätzlichen Attribute und versetzt das globale Logging wieder in den gewünschten Zustand (Standard verbose 3)
deleteattr global mseclog
deleteattr <IO> logIDs
attr global verbose 3

Mehrere IOs setzen


Man kann den Namen des <IO> durch einen devSpec ersetzen. Z.B. alle IOs die der VCCU zugeordnet sind.
attr owner_CCU=VCCU logIDs ID1,ID2

deleteattr owner_CCU=VCCU logIDs

Praktisches Beispiel


Ich logge in einer zweiten FHEM Instanz, mein produktives System bleibt wie es ist. Ich sniffe zwei Fernbedienungen
attr global verbose 1
attr global mseclog 1
attr myHmUARTLGW logIDs 101E78,53F520

Wenn man parallel den Event Monitor öffnet kann man sehr gut verfolgen welche Nachrichten und Events zusammengehören. Im Event Monitor muss man dazu folgendes Regexp im Filter eintragen
101E78|53F520

Drücke ich jetzt auf beiden Fernbedienungen kurz eine Taste bekomme ich folgende Einträge im Log

2017.10.05 14:50:57.978 0: HMUARTLGW myHmUARTLGW recv: 01 05 00 00 31 msg: A2 A4 40 101E78 152B02 0264
2017.10.05 14:50:58.110 0: HMUARTLGW myHmUARTLGW recv: 01 05 00 00 3F msg: A2 80 02 152B02 101E78 0101C80048
2017.10.05 14:51:02.752 0: HMUARTLGW myHmUARTLGW recv: 01 05 01 00 37 msg: 3A A2 40 53F520 200DB8 0305

Dazu gehört diese Bild im Event Monitor


Erste einfache Auswertung

Die Nachrichten werden pro Gerät fortlaufend Hex nummeriert (Zahl vor msg:)

Der erste Tastendruck (msg 31) geht von Gerät (101E78) zu Gerät (152B02) und wird quittiert (msg 3F). Diese Taste ist gepeert. 

Der zweite Tastendruck geht (msg 37) vom Gerät (53F520) zur Zentrale (200DB8) und wird nicht quittiert. Diese Taste ist nicht gepeert.