Das Open-Source-Programm Calibre hat sich ganz auf die
Verwaltung von E-Books spezialisiert. Für wirklich große Sammlungen lohnt sich
Calibre als Server, der die Bibliothek über jeden Browser für alle Netzgeräte
bereitstellt.
Mit der Verbreitung von Tablets gewinnen E-Books – oft im
PDF-, MOBI-, CHM- oder EPUB-Format – immer mehr Freunde. Selbst bibliophile und
konservative Leser sind leicht durch die unbestreitbaren Vorteile zu überzeugen,
die E-Books auf einem handlichen Tablet bieten: Textgröße, Kontrast, Helligkeit
lassen sich an jede Situation anpassen. Und auf einem Tablet passt eine ganze Bibliothek
ins Handgepäck. Für eine opulente oder systematische Sammlung belletristischer
und technischer Bücher ist aber die Aufbewahrung auf verstreuten Lesegeräten
suboptimal: Neben der Frage „Was habe ich eigentlich wo (doppelt)?“
wird dort auch schnell der Speicher knapp. Eine ideale zentrale Lösung für das
Heimnetz bietet die Software Calibre mit seiner Server-Komponente.
Calibre installieren und Bibliothek erstellen
Calibre gibt es für alle Betriebssysteme unter https://calibre-ebook.com/download.
Diese Anlaufstelle ist auch für Linux zu empfehlen, weil eine Installation über
die Paketquellen etwa unter Debian/Ubuntu/Mint mit
sudo apt install calibre
nur ältere Versionen anbietet. Für die lokale Nutzung auf
einem Rechner spielt das keine große Rolle, aber gerade die Serverkomponente
hat in den aktuellen Versionen funktional dazugelernt und kommt auch optisch
wesentlich frischer daher. Verwenden Sie daher zur Installation diese
Befehlskombination:
Das komplexe Kommando kann von der oben genannten Downloadseite oder von hier ohne Tippaufwand direkt ins Terminal kopiert werden. Diese Installationsmethode funktioniert auch als Update einer älteren Version, wobei eine bereits bestehende Bibliothek erhalten bleibt. Calibre ist nach der Installation über das Desktop-Menü oder mit dem Aufruf calibre im Terminal zu erreichen.
Für den Aufbau und die
Erweiterung einer Bibliothek dient die Schaltfläche „Bücher
hinzufügen“. Den Massenimport von heterogenen Formaten und ganzer
Verzeichnisebenen ermöglicht die Unteroption „Bücher aus verschiedenen
Verzeichnissen […], jede e-Book-Datei ist ein anderes Buch“. Damit
integrieren Sie unstrukturierte Sammlungen von PDF-, HTML-, EPUB- und
Office-Formaten in die Calibre-Datenbank. Beachten Sie, dass Calibre alle
Dateien physisch kopiert und standardmäßig im Ordner ~/Calibre-Bibliothek/
einsammelt. Beim Import aus unstrukturierten Quellen wird die Software versuchen,
aus Dateinamen und Metadaten Informationen zu beziehen, um jedes Buch sinnvoll
zu katalogisieren. Fehler aufgrund unzulänglicher Metadaten sind beim
Massenimport unvermeidlich, können aber später über „Metadaten
bearbeiten“ manuell und mit der Hilfe von Online-Diensten („Metadaten
herunterladen“) korrigiert werden.
Die Suche bestimmter
Titel erfolgt im Suchfeld über dem Hauptfenster. Weitere Filtermöglichkeiten
bieten Kategorien in der linken Navigationsleiste wie „Autoren“,
„Formate“, „Bewertung“ oder „Schlagwörter“. Zum
Lesen eines markierten Titels verwenden Sie die Schaltfläche „Bücher
öffnen“.
Da es nicht primärer
Gegenstand dieses Beitrags ist, die zahlreichen Filter-, Konvertierungs- und
Einstellungsoptionen der komplexen Software zu erläutern, verweisen wir an
dieser Stelle auf das größtenteils deutschsprachige Online-Handbuch
unter https://manual.calibre-ebook.com/de/.
Calibre als Lektüre-Server im Netz
Ist eine Bibliothek erst einmal eingerichtet, kann
Calibre diese für das Netzwerk freigeben. Für den Start der Serverkomponente
genügt der Klick auf „Verbinden/Teilen -> Inhalteserver starten“.
Danach informiert Sie ein weiterer Klick auf „Verbinden/Teilen“,
unter welcher Adresse der Blbliotheksserver zu erreichen ist. Eine Angabe wie
„192.168.178.10, port 8080“ zeigt, dass jeder Browser im lokalen Netz
mit der Adresse „192.168.178.10:8080“ zum Calibre-Server gelangt. Wie
bei jedem Server ist es auch hier von Vorteil, diese IP-Adresse statisch zu
setzen (über den Router), damit Sie sich künftig jederzeit mit einem
Lesezeichen verbinden können. Der Calibre-Server kann unter „Einstellungen
-> Netzwerkserver“ detailliert konfiguriert werden. Falls nötig, gibt
es unter „Benutzerkonten“ auch eine Benutzerverwaltung mit
Zugriffskennwörtern.
Auf Client-Seite ist das wichtigste Werkzeug das
Lupensymbol im Seitentitel. Im einfachsten Fall geben Sie im Suchfeld einen
Autoren- oder Titelnamen ein. Die Treffer werden mit ihrem Titelbild angezeigt,
und ein Klick darauf bietet Detailinformationen sowie die Optionen
„Lesen“ und „Herunterladen“. Für die Option
„Lesen“ wechselt der Browser automatisch in den Vollbildmodus.
Bei einer umfangreichen und gut gepflegten
Calibre-Bibliothek können Sie unterhalb des Suchfeldes die Suchkategorie
eingrenzen und etwa nur in der Kategorie „Schlagwörter“ nach einem
bestimmten Begriff suchen oder unter „Bewertung“ nach einem
speziellen Rating.
Calibre-Server
„headless“: Die bislang beschriebenen Einrichtungs- und Server-Möglichkeiten
orientierten sich an der grafischen Oberfläche von Calibre. Für den grundsätzlichen
Aufbau der Bibliothek und insbesondere für Nachbesserungen an den
Meta-Informationen ist die grafische Oberfläche in der Tat dringend zu
empfehlen. Calibre bietet jedoch darüber hinaus Kommandozeilenwerkzeuge, die
eine vollständige Steuerung über eine SSH-Konsole ermöglichen. Somit kann der
Lektüre-Server auch auf einem Platinenrechner ohne Monitor und Tastatur laufen
(headless). Der wichtigste Befehl
calibre-server /home/ha/Calibre-Bibliothek/
startet die Server-Komponente und ist im Prinzip
gleichbedeutend mit dem Menüpunkt „Verbinden/Teilen -> Inhalteserver
starten“ an der grafischen Oberfläche. Der Befehl gibt nur den einfachsten
Einsatz wieder, ist aber für das Heimnetz in der Regel völlig ausreichend. Die
Hilfeseite
calibre-server --help
informiert darüber, dass Sie auf der Kommandozeile alles
steuern können, was auch auf der grafischen Oberfläche unter
„Einstellungen -> Netzwerkserver“ zu finden ist.
Für den Ausbau und die Verwaltung der Bibliothek ist das
mächtige Kommandozeilenprogramm calibredb zuständig. Der wichtigste Schalter
„add“ kann alles, was die Optionen unter „Bücher
hinzufügen“ auf der grafischen Oberfläche anbieten. So importiert der
Befehl
calibredb add --recurse /media/ha/Data/PDFs
alle E-Book- und Textformate, die im angegebenen Pfad
liegen, in die Calibre-Bibliothek. Weitere add-Optionen zeigt die Hilfeseite calibredb add –help undden Gesamtumfang des Tools calibredb der
Befehl calibredb –help. Theoretisch
lässt sich damit ein Calibre-Server von Anfang an und vollständig ohne
Oberfläche betreiben – wirklich komfortabel ist das allerdings nicht. Wir
empfehlen daher, die Basis im grafischen Programm zu legen. Der Serverstart und
gelegentliche Nachbesserungen bereiten hingegen über das SSH-Terminal im
Headless-Betrieb keine Mühe.
Falls sich bei dem Namen „Windows“ ganz konkrete Vorstellungen einstellen, sollte man sich davon bei Windows 10 IoT Core erst einmal radikal verabschieden. Etwas mehr als den Kernel bringt dieses Windows „Core“ zwar schon mit, aber es ist von einem Desktop-Windows wesentlich weiter entfernt als etwa ein Raspbian von einem Ubuntu. Unterm Strich ist Windows IoT ausschließlich für die Headless-Steuerung via Netzwerk (SSH, Web-Oberfläche, Powershell) und vorwiegend für die Entwicklung eigener Projekte konzipiert. Wir erklären hier, was mit dem System auch ohne Programmierung mit dem Entwicklerwerkzeug Visual Studio 2015 anzustellen ist und wie es sich dabei im Vergleich zu Linux verhält.
1. System-Image für den Raspberry
Bei der Image-Auswahl und Bestückung der SD-Karte muss sich Windows
IoT Core schon mal einige Punkteabzüge gefallen lassen. Den diversen,
bereits funktional spezialisierten Linux-Varianten für den Raspberry
steht genau ein Windows gegenüber und dessen Installation ist nicht
überall trivial. Eine erste Hürde ist die nicht klar kommunizierte
Tatsache, dass das aktuelle „Windows 10 IoT Core Release Image“ auf dem
jüngsten Raspberry 3 noch nicht läuft. Wer die Downloadseite https://ms-iot.github.io/content/en-US/Downloads.htm
ganz genau liest, kann dies vermuten, weil der Raspberry Pi 3 nur unter
der Vorversion „Windows 10 IoT Core Insider Preview“ namentlich
aufgeführt ist. Es kann gut sein, dass demnächst die normale
Hauptversion auch den neuesten Raspberry unterstützt, aber Anfang Mai
2016 war dies noch nicht der Fall und wir mussten auf die Insider
Preview ausweichen. Dabei ist es aber nicht nötig, am Insider-Programm
von Microsoft teilzunehmen, weil auch der bewährte NOOBS-Installer der
Raspberry Foundation diese Insider Preview einrichten kann (Download
unter www.raspberrypi.org/downloads/noobs).
Wenn Sie den Raspberry mit NOOBS booten und dann die Option „Windows 10
IoT Core“ wählen, holt sich NOOBS die aktuellste Preview von Windows
IoT aus dem Netz. Eine flotte Internetverbindung ist ratsam, weil der
Download circa 1825 MB umfasst.
Wichtige Anmerkung: Beachten Sie, dass die beschriebene Einrichtung über NOOBS nicht die von Microsoft vorgesehene Installationsweise darstellt. Microsoft zielt nämlich auf eine enge Zusammenarbeit eines Windows-10-PCs mit der Raspberry-Platine. Beim Download des „Windows 10 IoT Core Release Image“ von https://ms-iot.github.io/content/en-US/Downloads.htm erhalten Sie ein ISO-Image, das Sie unter Windows 10 „Bereitstellen“ (Mounten) sollen, um anschließend die dort enthaltene MSI-Datei auszuführen. Dabei wird am Windows-Rechner das eigentliche Image (flash.ffu) entpackt, ferner zwei Hilfsprogramme eingerichtet – eines zum Schreiben des ffu-Images (IoTCoreImageHelper.exe), ein weiteres (WindowsIoTCoreWatcher.exe) zur besonders einfachen Verwaltung einer oder mehrerer Raspberry-Platinen mit Windows IoT.
Dies mag den Eindruck erwecken, dass sich ein Raspberry mit Windows
IoT nur über ein Windows 10 einrichten und bedienen lasse. Das ist aber
falsch: Richtig ist nur, dass die Entwicklung eigener
Programmierprojekte ein Windows 10 mit Visual Studio 2015 voraussetzen.
Die Nutzung und Fernwartung eines Raspberry mit Windows Core
funktioniert hingegen auch ohne diese Hilfsprogramme und ohne
Windows-PC.
Hinweis zur Hardware: Der WLAN-Chip auf dem neuen Raspberry 3 wird von der Windows IoT Insider Preview nicht erkannt. Dieses Manko kann bei Erscheinen dieses Heft eventuell behoben sein. Wann genau das der Fall sein wird, das lässt sich der vagen Aussage „coming soon“ auf http://ms-iot.github.io nicht entnehmen.
2. Erster Start: Was läuft auf dem Raspberry?
Falls am Raspberry Monitor und Maus angeschlossen sind, erscheint
nach dem Start eine einfache Oberfläche, die nur eine wesentliche
Information anbietet, nämlich die lokale IP-Adresse. Über das
Zahnradsymbol ist nicht mehr zu erreichen als die Einstellung der
Sprache. Der Punkt „Lernprogramme“ gibt auch nicht viel her. Generell
ist die hübsche, aber praktisch funktionslose Oberfläche entbehrlich bis
nutzlos. Der Raspberry mit Windows IoT wird komplett über das Netzwerk
verwaltet.
Bei den automatisch gestarteten Standarddiensten hat Microsoft nichts
Wesentliches ausgelassen. Das System und die Dateien auf dem System
sind auf viele Wege zu erreichen:
* Der SSH-Server läuft. Der Raspberry ist von jedem Client-System via ssh administrator@192.168.0.22 (Beispiel) und dem Standardkennwort „p@ssw0rd“ erreichbar (Zahl 0 statt Buchstabe o!).
* Der Web-Server läuft: Die Verwaltungsoberfläche des Raspberry ist von jedem Client-System im Browser über http://192.168.0.22:8080 erreichbar (Beispiel). Die Standardauthentifizierung lautet wieder „Administrator“ und Kennwort „p@ssw0rd“
* Der FTP-Server läuft: Der Raspberry ist von jedem Client-System via
FTP über seine IP-Adresse erreichbar. Hier ist der anonyme Zugriff ohne
Authentifizierung vorgesehen. Freigegeben ist standardmäßig das
Systemlaufwerk (C:\).
* Der Lanmanserver läuft: Spezielle Freigaben sind per SSH leicht
einzurichten, die dann von jedem Client-System erreichbar sind. Sofort
ab Installation, also ohne jede Einrichtung, sind die typischen
administrativen Standardfreigaben (C$, D$) erreichbar – allerdings nur
mit Windows-Clients.
* Das Windows Remote Management läuft: Somit kommen Windows-Client
auch über die Windows Powershell an den Raspberry, die mehr
Möglichkeiten bietet als die normale Kommandozeile Cmd (die bei
SSH-Verbindung startet).
* Wer Windows IoT über einen Windows-10-Rechner installiert hat, erhält auf diesem Rechner zusätzlich den schon genannten „Windows IoT Core Watcher“ als Hilfsprogramm: Der spürt Raspberry-Platinen mit Windows IoT im lokalen Netz auf und bietet per Rechtsklick deren Verwaltungsoberfläche und die administrativen Datenfreigaben. Das Tool ist aber vollständig entbehrlich, wenn der Raspberry mit fester IP über ein Browser-Lesezeichen und die Datenfreigaben im Dateimanager des PCs zu erreichen sind.
3. Windows IoT im praktischen Einsatz
Die ersten Maßnahmen auf einem Windows IoT unterscheiden sich nicht
grundsätzlich von einem Linux-System auf dem Raspberry: Eine der
wichtigsten Aktionen ist ein feste IP-Adresse für das Gerät, was Sie am
besten zentral im Router erledigen. Damit ist das System per SSH oder
Browser zuverlässig zu erreichen. Ob der Zugriff dann unter Linux mit
(Beispiel)
ssh administrator@192.168.0.22
oder mit Putty/Kitty unter Windows erfolgt, spielt keine Rolle.
Zu empfehlen ist ferner ein individuelles Kennwort für das
„Administrator“-Konto (vergleichbar mit root unter Linux). Dies kann der
Befehl
net user administrator meinkennwort
auf der SSH-Konsole erledigen, ist aber auch auf der
Verwaltungsoberfläche unter „Home -> Preferencies“ vorgesehen. An
gleicher Stelle können Sie auch den Standard-Hostnamen „minwinpc“
individuell einstellen.
Windows IoT kann mit oder ohne Bildschirmoberfläche („headed“ oder
„headless“) gestartet werden. Falls Sie kein eigenes Projekt planen, das
eine Bildschirmausgabe vorsieht: Die Standardoberfläche des Systems und
ein am Raspberry angeschlossener Bildschirm sind reichlich nutzlos. Für
die Abschaltung gibt es ein Extra-Programm:
setbootoption.exe headless
Dies und ein Reboot schaltet die Oberfläche ab und bringt etwa 60 MB
zusätzlichen Speicher (der Parameter „headed“ schaltet die Oberfläche
jederzeit wieder ein). Einen Reboot lösen Sie am bequemsten über die
gleichnamige Schaltfläche in der Verwaltungsoberfläche aus, aber
natürlich funktioniert auch ein shutdown /r /t 0 auf der SSH-Konsole.
Neben dem überall funktionierenden SSH-Zugriff gibt es unter Windows auch noch den Remote-Zugang via Powershell (Beispiel):
Die zweite Befehlszeile ist nur ein einziges Mal notwendig, um den Raspberry dem Windows-PC bekannt zu machen. Der erste Befehl ist nur einmal innerhalb einer Windows-Sitzung notwendig. Für die Eingabe des Kennworts nach dem dritten Befehl erscheint dann ein grafischer Dialog.
Die Verwaltungsoberfläche liefert unter „Processes“ und „Performance“
einen guten Überblick über die Systemauslastung und über laufende
Tasks, die sich hier auch beenden lassen. Ohne Monitorausgabe
(„headless“) sollte das pure Standardsystem deutlich unter 200 MB
liegen. Bei Aufgaben als einfacher Datenserver liegt die CPU-Last bei 10
bis maximal 30 Prozent. Das sind Werte, die auch ein schlanker
Debian-Server nicht signifikant unterbieten kann.
Auf der Seite „Processes“ lassen sich unter „Run command“ einzelne
Kommandozeilen direkt übergeben, ohne dafür eine SSH- oder
Powershell-Verbindung aufbauen zu müssen. Wenn es sich um einen Befehl
des Kommandointerpreters Cmd handeln soll, muss dies in der Form „cmd /c
[Befehl]“ erfolgen.
Wenn Sie beim Systemstart automatisch Programme starten (oder beenden) oder Umgebungsvariablen setzen wollen, nutzen Sie vorzugsweise die Datei IoTStartupOnBoot.cmd unter \Windows\System32. Diese wird, wie der Name anzeigt, beim Start automatisch berücksichtigt.
4. Einrichtung eines einfachen Datenservers
Die Rolle eines einfachen lokalen Datenservers kann Windows IoT
problemlos und mit sehr geringem Konfigurationsaufwand übernehmen. Dazu
eignen sich externe USB-Geräte an den vier verfügbaren Ports.
USB-Datenträger sind „hot plugable“, werden also im laufenden Betrieb
gemountet – in aufsteigender Reihe der Windows-typischen
Laufwerksbuchstaben. Um ein komplettes USB-Laufwerk E: für das
Standardkonto „Administrator“ freizugeben, genügt ein einziger Befehl
(Beispiel):
net share USB_2TB=e:\ /grant:administrator,full
Weitere Konten sind etwa mit
net user /add Sepp geheim
schnell eingerichtet und Netzfreigaben analog dem obigen Befehl zu
gestatten, nur mit geändertem Kontonamen. Für die Korrektur eventuell
fehlender lokaler Rechte auf Datenträgern ist das Tool icacls.exe an
Bord.
Der FTP-Server, der standardmäßig Laufwerk C: anbietet, kann jeden
beliebigen Pfad per FTP freigeben. Es genügt, den Dienst zunächst mit
kill ftpd*
zu beenden und dann mit der gewünschten Pfadangabe neu zu starten (Beispiel):
start c:\windows\system32\ftpd.exe e:\daten
Es gibt aber offenbar keine Möglichkeit, den FTP-Server auf ein
bestimmtes Konto zu beschränken. Eine Öffnung für den Internet-Zugriff
via Portfreigabe scheidet daher aus Sicherheitsgründen aus, und für den
Zugriff im lokalen Netz reichen an sich die normalen Freigaben aus.
5. Windows IoT: Ohne Eigenentwicklung geht nicht viel
Die voranstehenden Abschnitte zeigen, dass Windows IoT auf dem
Raspberry wesentliche Dienste automatisch mitbringt und mit etwas
Erfahrung auf der Windows-Kommandozeile (Cmd) oder der
Windows-Powershell gut übers Netzwerk zu verwalten ist – und zwar nicht
nur über Windows, sondern auch über Linux oder Mac OS X (SSH und
Browser). Alltagstaugliche Einsatzmöglichkeiten, wie wir sie von
Linux-Systemen wie Raspbian, Open Media Vault, Openelec und zahlloser
Software wie Kodi, Plex, Owncloud, Mediawiki kennen, sind aber nicht
annähernd in Sicht. Die skizzierte Einrichtung als lokaler Datenserver
(Punkt 4) ist das einzige alltagstaugliche Szenario, das sich mit dem
purem Windows-IoT-System umstandslos realisieren lässt. Batch-Frickler
können sich mit den angebotenen Kommandozeilen-Tools unter
\Windows\System32 und dem Cron-ähnlichen Scheduler Schtasks sicher noch
einige zusätzliche Komfortfunktionen hinzubasteln. Ein Hemmschuh ist
dabei, dass nicht einmal ein Texteditor an Bord ist und somit Änderungen
an Batch- oder Konfigurationsdateien immer über die Freigaben am
Remote-PC erfolgen müssen.
Über diese engen Grenzen hinaus führt nur die Entwicklung eigener
Programmierprojekte. Hier steht man allerdings mit einem Linux-Rechner
komplett außen vor. Die Entwicklung benötigt einen Windows-10-Rechner
mit Visual Studio 2015 (wobei aber die kostenlose Community-Edition
ausreicht: www.visualstudio.com/de-de/downloads).
Selbst Nutzer, die nur das eine oder andere schon existierende
Beispielprojekt auf ihrem Raspberry ausprobieren wollen, kommen nur mit
Hilfe von Windows ans Ziel: Die überall verfügbare Verwaltungsoberfläche
im Browser sieht zwar unter „Apps -> Install package“ das Laden von
Projekten auf den Raspberry vor, dazu müssen diese aber als Appx-Pakete
vorliegen, was wiederum Visual Studio oder zumindest das Windows-Tool
Makeappx erfordert.
Ist auf einem Windows-10-PC Visual Studio installiert, ist der
Transport von Projekten auf den Raspberry hingegen recht einfach: Die
Sammlung mit den Demo-Projekten unter https://github.com/ms-iot/samples
lässt sich mit der Schaltfläche „Download ZIP“ rechts oben komplett
herunterladen. Nach dem Entpacken des Archivs genügt ein Doppelklick auf
die SLN-Datei des gewünschten Projekts, der das verknüpfte Visual
Studio startet und dort automatisch den Debug-Modus und die
ARM-Systemarchitektur einstellt (in der Tool-Leiste oben). Daneben muss
dann nur noch unter „Device“ die Option „Remotecomputer“ gewählt werden,
wobei der Raspberry erkannt und automatisch angeboten wird und ein
Klick auf „Auswählen“ das Ziel festlegt. Danach genügt „Erstellen ->
[Projektname] erstellen“ zum Kompilieren des Projekt und anschließendes
„Erstellen -> [Projektname] bereitstellen“, um das Projekt auf den
Raspberry zu befördern. Die Verwaltungsoberfläche zeigt unter „Apps
-> Installed Apps“ alle Projekte in einer Dropdown-Liste an. Das
jeweils ausgewählte starten Sie dort mit der Schaltfläche „Start“ oder
löschen es wieder mit der Schaltfläche „Remove“.
Die meisten der bislang vorliegenden Projekte haben Demo-Charakter, um die technischen Möglichkeiten und den zuständigen Programmcode anzuzeigen. Praxistaugliche und für größere Zielgruppen zu empfehlende Lösungen sind bislang nicht in Sicht.