LINUX, DAS ALLES KANN



Ubuntu als Haupt-Betriebssystem


Verfasst von Alexander Sofianos - +30 697 438 8332


alexander.sofianos@gmail.com - alexander-sofianos.com



Abstract

Distro-Auswahl

Neun Distros wurden teilweise als Multiboot-System auf zwei ThinkPads, W530 und T520, installiert.

Ubuntu hat sich als die goldene Mitte zwischen Linux-from-Scratch und Bloat-Distros durchgesetzt, und rangiert sehr gut in Bezug auf: Stabilität, Font-Wiedergabe, Vielseitigkeit und größte Hilfsgemeinde.

Betriebssystemklonen-Konzept

Ein eigenes Konzept für das Klonen des Betriebssystems (BS) durch den Einsatz von: Rsync, Persistent-Live-USB mittels Mkusb, FSTAB-Konfiguration, rEFInd-Boot-Manager, Grub-Reinstallation und -Updaten.

Testen durch mehrfache und langfristige Einsetzung aktualisierter Klone als Vorgabe-BS.

Klon-Portabilität

BS-Klone sind wenig portabel: Eine „Live CD Customization From Scratch“ für eine eigene Distro-Erstellung wie auch die Virtualisierung einer physischen Installation anhand Virt-p2v sind geplant.

KVMs

Mehrfache Ubuntu-KVMs laufen gleichzeitig, brauchen wenig CPU und können pausiert parat stehen. Sie werden vernetzt, geklont, synchronisiert und bekommen eine neue Identität.

KVM-CPU-Zyklen steigen bei Video-Anwendungen trotzt Virgil3d-Treiber-Einsetzung. Neuere Hardware wird benötigt um GPU-Beschleunigung mittels Intel-GVT-g zu testen.

Windows-KVMs (WVMs) sind umständlich zu erstellen und durch Pool-Änderungen und VM-Umbenennungen, booten sie nicht mehr. Ihr Einsatz ist nicht zwingend nötig, da Linux viele versteckte Fähigkeiten hat.

Vernetzung

Alle Systeme werden problemlos durch SSH vernetzt und anhand der Fahne -X wird der X11-Fenstermanager weitergeleitet. NoMachine-Remote-Desktop wird ergänzend eingesetzt wie auch CIFS und Samba für WVMs.

Gocryptfs - Rclone - Electrum-Bitcoin-Wallet

Gocryptfs , ein gestapeltes Dateisystem, wird für Verzeichnisse-Verschlüsselung vewendet und Rclone für Verschlüsselung und Synchronisierung von Cloud-Backends. Electrum-Bitcoin-Hot-Wallet: Sicherheitsmaßnahmen und Vorgehensweisen werden erklärt.

DE-Erweiterungen - Paketverwaltung - PDF-Bearbeitung

BS- und Desktop-Umgebung-Anpassung anhand Erweiterungen und vielseitiger Paketverwaltung. Ergänzende Programme und Tools für PDF-Bearbeitung und für jede Aufgabe.

Vorwort

Der Reiz zur Themenwahl kam durch die angeborene Übereinstimmung mit dem Linux-Spruch „frei wie in Freiheit, nicht wie in freies Bier“.

Am Anfang des Projekts im Jahr 2020 wurde ein Zertifikat in „Introduction to Linux“ von edX und The LinuxFoundation erlangt, und danach wurde dieses Projekt verwirklicht, von Ideen die Jahrelang im Kopf waren.

Danksagung

Lob an alle die teilweise freiwillige Arbeit leisten, und die Zeit nehmen in Foren, Blogs und Distro-Seiten, Wissen über Linux und Open-Source-Apps zu verbreiten.

Inhaltsverzeichnisse

Zusammenfassend


Abstract 1

Distro-Auswahl 1

Betriebssystemklonen-Konzept 1

Klon-Portabilität 1

KVMs 1

Vernetzung 1

Gocryptfs - Rclone - Electrum-Bitcoin-Wallet 1

DE-Erweiterungen - Paketverwaltung - PDF-Bearbeitung 2

Vorwort 2

Danksagung 2

Inhaltsverzeichnisse 2

Abkürzungen und Glossar 3

Einleitung 4

Testen und Experimente 4

Kapitel-Rangordnung 4

Ziele 4

Fortsetzungsprojekt 4

Literatur-Resourcen klassifiziert 5

Manpages 5

Online-Resourcen 5

Methodik und Analyse 7

Hardware 7

Distrofamilien 7

Paketverwaltungssysteme 7

Auswahl von Ubuntu als Haupt-BS 8

GPT-Partitionierung 10

Ubuntu-Paketverwaltung 15

Gnome 17

Verschiedene Anwendungen 19

PDF-Editors 22

LibreOffice 27

Bereinigung unötiger Dateien 28

Netzwerken 30

BS-Backup und -Klon-Erstellung als Konzept des Verfassers 34

Virtuelle Maschinen - VMs 41

Rsync-Zusammenfassung 57

Electrum-Wallet für Bitcoins 58

Sicherheitsmaßnahmen und Datenverschlüsselung 62

Tar mit GPG 74

7z 74

Stapel-Umbennenug von Dateien 74

Schlussfolgerungen 76

Beweggrund 76

Befehlszeile-Lernen 76

Closed-Source-BSs vermeiden 76

Ubuntu-Zuverlässigkeit hat sich bewährt 76

Paketverwaltung 76

PDF-Bearbeitung 76

LibreOffice 76

Vernetzung 77

BS klonen und aktualisieren 77

BS-Portabilität 77

KVMs 77

Viren - Crypto-Wallets 78

Verschlüsselung 78

Literaturquellen 79


Vollständig

Abstract 1

Distro-Auswahl 1

Betriebssystemklonen-Konzept 1

Klon-Portabilität 1

KVMs 1

Vernetzung 1

Gocryptfs - Rclone - Electrum-Bitcoin-Wallet 1

DE-Erweiterungen - Paketverwaltung - PDF-Bearbeitung 2

Vorwort 2

Danksagung 2

Inhaltsverzeichnisse 2

Abkürzungen und Glossar 6

Einleitung 8

Testen und Experimente 8

Kapitel-Rangordnung 8

Ziele 8

Fortsetzungsprojekt 8

Literatur-Resourcen klassifiziert 9

Manpages 9

Online-Resourcen 9

Die größeren Foren und Gemeinde 9

Wiki.archlinux.org 9

Office 9

Kubuntu 9

VMs 9

Verschlüsselung und Crypto-Wallet 10

Tutorial-Blogs 10

Methodik und Analyse 11

Hardware 11

Distrofamilien 11

Paketverwaltungssysteme 11

Auswahl von Ubuntu als Haupt-BS 12

Font-Wiedergabe 12

Schwierigkeitsgrad der BS-Verwendung 13

Zuverlässigkeit 14

Kubuntu 14

Mint 14

Ubuntu 14

Canonical 14

GPT-Partitionierung 14

Warum GPT und nicht LVM? 14

Partitionierungs-Konzept 15

T520-Thinkpad Festplatte und externe Festplatte mit dazugehörigen BSs 15

W530-Thinkpad Festplatte 16

Fstab angepasste Einträge 18

Ubuntu-Paketverwaltung 19

Repos 19

Synaptic 20

Snap 20

PPA - Personal Package Archive - Persönliches Paket-Repo 20

Deb-Dateien Paketemanagement 20

Ubuntu-Software 21

Gnome 21

Erweiterungen 22

Verschiedene Anwendungen 23

DE bestimmte Programme 23

Dateimanager 23

Texteditor 25

PDF-Editors 26

Okular 26

Master-PDF-Editor und Qoppa-PDF-Studio 27

Linux-Acrobat abgeschafft 28

Foxit 28

LibreOffice-Draw als PDF-Editor 28

Anfängliche Probleme 28

Konfiguration für PDF-Dokumente 29

Minuspunkte 30

Pdf2odt 30

Arranger 31

Pdf-Fazit 31

LibreOffice 31

Vorlagen 31

Writer - der Mangel der geteilten Ansicht 32

Bereinigung unötiger Dateien 32

Übriggebliebene Konfigurationsdateien entfernen 32

Unnötige Pakete mit autoremove löschen 33

Daten im Cache löschen 33

Daten im Snap-Cache löschen 33

Festplattenbelegungsanalyse 33

Netzwerken 34

SSH 34

Rsync über SSH 36

Remote-Desktop 36

Remote-Desktop gegen ssh -X 37

BS-Backup und -Klon-Erstellung als Konzept des Verfassers 38

Rsync 38

Woher soll der Befehl ausgeführt werden 39

Persistent-Live-USB 39

Wo sollen die Klone erstellt und aktualisiert 40

UUIDs in FSTAB ändern 41

Booten mit dem rEFInd-Bootmanager von Roderick Smith 41

Grub-Bootloader für unsere Arbeitspartition installieren 44

Portabilitätsbeschränkungen von Ubuntu-Installationen 44

Installationen externer Festplatten 44

Authentifizierungsfehler an der Bildschirmsperre 44

SSH - Gebrochene Packete 45

Installationen auf USB-Sticks 45

Den persönlichen Ordner in eine andere Installation kopieren 45

Virtuelle Maschinen - VMs 45

Leistungsvergleich - KVM gegen VirtualBox 45

KVM gegen Xen 45

Performance Evaluation of Xen, KVM, and Proxmox Hypervisors 46

KVM-Vorinstallationshandlungsweisen 46

KVM-Installation 46

Standard-Pool-Speicherstelle ändern 47

VMs-erstellen und -bearbeiten 48

Gasterweiterungen 49

Spicetreiber 49

VirtIO-Treiber 49

Gasterweiterungen für Windows-Gäste 49

Hohe CPU 49

Systemweit CPU-Zyklen 49

Videobezügliche CPU-Zyklen 51

VM-Netzwerken 52

Linux 52

Windows-VMs 54

Virtuelle Maschinen kopieren - updaten - umbenennen 55

VM klonen 55

VM löschen 56

VM aktualisieren 56

VM umbenennen 56

Benutzername ändern 56

Hostname ändern 57

VM-Name ändern 57

VM-Sicherungskopien 57

VM-Verwaltung und -Resourcen 58

Probleme mit Windows-VMs 58

Speicher 59

VMs als Haupt-BS gegen Distroerstellung 59

Distroerstellung 60

Virtualisierungslösung 60

Virtualisierung einer physischen Installation 60

Netzwerk-Synchonisierung der VMs 60

Fazit: Distroerstellung gegen Virtualisierung 60

Rsync-Zusammenfassung 61

BS synchronisieren 61

EXT-Daten synchronisieren 61

EXT-DATEN über SSH synchronisieren 61

QCOW2-VD-Datei synchronisieren 61

NTFS-Daten synchronisieren 61

Ein Beispiel mit EXT-Daten 61

Electrum-Wallet für Bitcoins 62

Überprüfen der Schlüsselsignaturen 63

Optionale Abhängigkeiten fehlen 64

Cryptodomex 64

Zbar-tools 64

Startwert oder Seed 64

Privater Hauptschlüssel oder Master Private Key (MPK) 64

Native-Segwit gegen Legacy 64

Transaktionsgebühren dynamisch gestalten 65

Wallets verschiedener Software erstellen 65

BTC Börsenplätze als Nebenbemerkung 66

Sicherheitsmaßnahmen und Datenverschlüsselung 66

Rclone 66

Client-ID erstellen 66

Remotes 68

Crypt 70

Duplikate 72

Gocryptfs 73

Daten-Korruption 77

Tar mit GPG 78

7z 78

Stapel-Umbennenug von Dateien 78

Schlussfolgerungen 80

Beweggrund 80

Befehlszeile-Lernen 80

Closed-Source-BSs vermeiden 80

Ubuntu-Zuverlässigkeit hat sich bewährt 80

Paketverwaltung 80

PDF-Bearbeitung 80

LibreOffice 80

Vernetzung 81

BS klonen und aktualisieren 81

BS-Portabilität 81

KVMs 81

Windows-VMs 81

KVM-GPU-Beschleunigung 81

Viren - Crypto-Wallets 82

Verschlüsselung 82

Rclone 82

Gocryptfs - GPG 82

Literaturquellen 83


Abkürzungen und Glossar

BS = Betriebssystem

Confs = Konfigurationen

DE = Desktop Environment - Desktop-Umgebung

Distro = Linux-Variante - Distribution

FOSS = Frei- und Open-Source-Software

Konf- oder Conf-Datei = Konfigurationsdatei

KVMs = Kernelbasierte Virtuelle Maschinen

Manpages = Manual-Pages - Handbuchseiten

PPA - Personal Package Archive - Persönliches Paket-Repo

Repos = Repositorys

SSH = Secure Shell

UVMs = Ubuntu Virtuelle Maschinen

VMs = Virtuelle Maschinen

WVMs = Windows Virtuelle Maschinen


Einleitung

Testen und Experimente

Das vorhandene Projekt ist ein Prozess um Linux so zu installieren, anzupassen und bereichern, dass es ein ganz individuelles Konzept darstellt, um alles zu bewältigen.

Diese Forschung bezieht sich auf eigenes Testen durch Experimente, nach kritischer Betrachtung der Bibliographie.

Kapitel-Rangordnung

Der Kern des Projekts liegt in den letzten Kapitel, und obwohl manche Leser wollen nur diese betrachten, die Kapitel-Rangordnung wurde so festgelegt, um einen natürlicheren Informationsaufbau durch die Projektstufen zu ermöglichen und eventuelle Zusammenhänge leichter zu erkennen.

Nachstehend werden aber die Ziele der Kapitel reihenfolgend vom Kern zum Rand aufgelistet um die schwerwiegendere Abschnitte zu unterstreichen.

Ziele

BS klonen und updaten als eigenes Rsync-Konzept

Portabilitätsbeschränkungen der BS-Klone erforschen

KVMs einsetzten, klonen, updaten, umbenennen und Windows-KVMs als Plan-B-Test

Partitionierungs-Konzept um alles getrennt zu speichern

Distro-Auswahl durch Multiboot

Rclone: Cloud-Speicher-Backends verschlüsseln und synchronisieren.

Gestapeltes, kryptographisches Gocryptfs-Dateisystem und Gpg mit Tar lokal einsetzen

Einfach und schnell alles mit SSH und RD vernetzen

Electrum-Bitcoin-Wallet: Installation, Transaktionen, Sicherheitsvorkehrungen

Paketverwaltung mit einer Vielfalt von Optionen

Font-Wiedergabe verbessern

Gnome-Anpassung durch Erweiterungen

Lösungen für die PDF-Problematik finden

LibreOffice-Mangeln überwinden

Eine Anwendungen für jede Aufgabe parat haben

Das System von unnötigen Dateien befreien

Fortsetzungsprojekt

Hervorgetretene Anliegen die vom Ausmaß der erforderlichen Arbeit und Hardware nicht mehr im Rahmen des vorliegenden Projekts bewältigt werden könnten, wurde betreffend nur die Bibliographie überblickt mit dem Vermerk dass sie als Fortsetzungsprojekt geplant sind.

Betreffend die wichtigsten Punkte sind: Distro-Erstellung, KVM-GPU-Beschleunigung und Virtualisierung einer physischen Installation.


  Literatur-Resourcen klassifiziert

Linux ist „im Bau befindlich“. Es muss ständig gegoogelt werden um Puzzlestücke zu sammeln die oft gar nicht zusammenpassen.

Es gibt keine Anleitung in der alles über ein BS oder Programm steht.

Manpages

In den Manpages sind die meisten Anwendungen gut dokumentiert. Eine Ausnahme ist ffmpeg, da vieles nicht dokumentiert wird, man kann viele Optionen auf ffmpeg.org auch schlecht finden.

Hierzu sind Blogs oder auch Youtube-Videos oft die einzigen Quellen. Ghostscript ist auch ein Fall wo Infos in den Manpages nicht komplett sind.

Online-Resourcen

Die folgende hinweisende Liste versucht die Landschaft der unzähligen Quellen die beraten wurden zu schildern.

Die meisten Infos befinden sich in Frage-Foren, Foren, Blogs und Distro-Seiten.

Die größeren Foren und Gemeinde

Die größten Frage-Foren sind askubuntu.com und seine Verwandtforen: serverfault.com, superuser.com, stackoverflow.com und stackexchage.com.

Bezüglich Ubuntu und Gnome sind auch folgende Quellen vorhanden: help.ubuntu.com, ubuntu.com, ubuntuforums.org und wiki.ubuntu.com und extensions.gnome.org, bugs.launchpad.net

Reddit.com ist eine große Gemeinschaft mit zahlreichen Linux-Infos und github.com ist das Entwickler-Heim von Open-Source-Anwendugen.

Wiki.archlinux.org

Das ist ein Blog mit oft sehr präzise Infos und Anleitungen über komplizierte und exotische Themen.

Office

Für LibreOffice, ask.libreoffice.org ist sehr hilfreich wie auch documentation.libreoffice.org, extensions.libreoffice.org, help.libreoffice.org, libreofficehelp.com und wiki.documentfoundation.org

Docs.gimp.org und imagemagick.org bieten Hilfe für Bild-Dateien.

Kubuntu

Um Kubuntu zu testen, Infos finden sich unter kubuntu.org, community.kde.org, kde.org und userbase.kde.org.

VMs

Die größeren Foren sind sehr gut solange es um beliebte Themen geht. KVM- oder Xen-Virtualisierung sind etwa exotische Fächer die nicht viel in Foren diskutiert werden.

Die Distroseiten redhat.com und docs.fedoraproject.org, sowie das wiki.archlinux.org sind die Vorgabe-Quellen in dieser Hinsicht und anschließend spezifische Seiten wie libguestfs.org, libvirt.org, linux-kvm.org, spice-space.org und virgil3d.github.io.

Fedora und Redhat stellen außerdem zu Verfügung nützliche Treiber und Guest-Addons für Windows-Gäste.

Für Xen und Proxmox: xenproject.org, wiki.xenproject.org, citrix.com, proxmox.com

Hierzu wurde auch eine wissenschaftliche Arbeit „Performance Evaluation of Xen, KVM, and Proxmox Hypervisors betrachtet.

Hardware-Eigenschaften sollen auch recherchiert werden beispielsweise unter ark.intel.com für CPUs und unter crucial.com für Speicher.

Verschlüsselung und Crypto-Wallet

Rclone.org bietet detaillierte Anleitungen und ein sehr hilfreiches Forum unter forum.rclone.org.

Gocryptfs unter nuetzlich.net/gocryptfs. Der Entwickler ist sehr hilfsbereit und antwortet auf Fragen unter github.com/rfjakob/gocryptfs/issues.

Für den Crypto-Wallet: electrum.org, electrum.readthedocs.io, bitcointalk.org, bitcoin.stackexchange.com, en.bitcoin.it, bitcoinops.org, kraken.com

Tutorial-Blogs

Sehr gute Blogs mit Tutorials sind: fosslinux.com, geeksforgeeks.org, howtoforge.com, howtogeek.com, itsfoss.com, kifarunix.com, linuxconfig.org, linuxhint.com, linuxinsider.com, linuxize.com, linuxuprising.com, ostechnix.com, techrepublic.com, vitux.com.


Methodik und Analyse

Hardware

Zwei ThinkPads: W530 und T520. Zwei externe Toshiba-Festplatten und verschiedene USB-Sticks.

Distrofamilien

Linux-Distros können in drei Hauptfamilien geordnet werden: Debian, OpenSuse und RedHat. Weitere bemerkenswerte Familien sind Archlinux und Gentoo.

Ubuntu ist debianbasiert und viele Distros sind wiederum ubuntubasiert.

Kommandozeile-Befehle sind im allgemeinen unterhalb der verschiedenen Familien kompatibel, mit der Ausnahme des Paketverwaltungssystems.

Paketverwaltungssysteme



Distro

Paketverwaltung

Debianbasiert

Apt

RedHat

Yum

Fedora

Dnf

OpenSuse

Zypper

Archlinux

Packman

Gentoo

Portage



Weitere Erläuterungen unter https://en.wikipedia.org/wiki/List_of_software_package_management_systems

Auswahl von Ubuntu als Haupt-BS

Aufgrund des Linux-Seminars wurden anfänglich, außer Ubuntu, auch OpenSuse und CentOS installiert.

Nach dem Seminar, auch folgende Distros wurden installiert: Deepin, Manjaro, MX, Debian, Fedora und Kubuntu.

Mint wurde als bereits installiertes System getestet.

Font-Wiedergabe

Ohne viel Konfiguration, die Schriftwiedergabe lässt bei den meisten Distros viel zu wünschen übrig. Am Projektanfang, wurde einige Zeit mit Fedora um Verbesserung versucht, ohne zufriedenstellenden Erfolg.

Jedenfalls, in Ubuntu sehen wir von Anfang an, eine bessere Schriftwiedergabe, im Vergleich mit allen andern Distros die installiert wurden, und in Übereinstimmung mit den allgemeinen Meinungen von Foren und Blogs.

Schrift-Rendering sieht am schlimmsten in Browsern aus, weil viele Webseiten, MS-Schriftarten verwenden, die nicht gut genug durch entsprechende Linux-Schriftarten ersetzt werden. Der erste Schritt hierzu ist das Paket ttf-mscorefonts zu installieren mit

$ sudo apt install ttf-mscorefonts

und in Firefox „Seiten das Verwenden von eigenen statt der oben gewählten Schriftarten erlauben“ nur fallweise aktivieren.

Da müssen auch viele zusätzlich Schriftarten installiert. Texgyre und Roboto sind ein gutes Beispiel für Fonts die wir in Browsern brauchen, die nicht vorinstalliert sind. Je mehr Schriftarten installiert werden, desto erhöhen sich die Chancen, dass die Schriftart die wir lesen wollen, oder deren bestmöglichen Ersatz, verfügbar ist.

Zu diesem Zweck ist das Fontocofig-Config-Paket automatisch installiert: „Konfiguration Fontconfig ist eine Bibliothek zur Konfiguration und Anpassung von Schriften, die nicht vom X Window System abhängt. Sie wurde entwickelt, um Schriften innerhalb des Systems aufzufinden und gemäß der Anforderungen auszuwählen, die von Anwendungen gestellt werden.“ (Von der Paketbeschreibung.)

Für eine mehrfache Installation von kleinen Paketen wie Schriftarten, ist Synaptic, die zuerst installiert werden muss, die bessere Lösung, und das war auch der einzige Fall im Projekt dass das Apt-Frontend zur Befehlszeile bevorzugt wurde.






Eine angepasste Fonts.conf-Datei kann auch eingesetzt werden. Das wurde in Fedora unternommen, aber in Ubuntu und Kubuntu war es nicht nötig. Canonical, die Firma hinter Ubuntu, hat sogar die Entwicklung eigener Schriftarten finanziert, die sehr gelungen sind.

Schwierigkeitsgrad der BS-Verwendung

Für BSs wie CentOS und Debian muss man viel mehr Zeit widmen.

Bei CentOS die einzige Installations-ISO die funktionierte, war 11GB groß. Vom GUI fehlen auch viele „Selbstverständlichkeiten“.

Bei Debian, die übliche Installations-ISO, enthält nicht mal WLAN-Routerntreiber. Man muss dann eine andere nehmen, die nicht nur „Super-Open-Source-Treiber“ enthält. Es fällt gleich auf, dass mit dem GUI und der Schriftartwiedergabe viel unternommen werden muss.

Zuverlässigkeit

Als Debian installiert wurde, auf einer nächstliegenden Partition war Fedora installiert. Nach der Debian-Installation, verschwand von Fedora jeder Hinweis von WLAN, also nichts unter Einstellungen. Gleichzeitig waren auf der gleichen Festplatte auch Ubuntu, OpenSuse und Centos installiert und war ihnen nichts passiert. Darüber, dass in Fedora plötzlich das WLAN verschwindet, gibt es viele Ergebnisse beim Googeln.

Andererseits, Ubuntu erkennt oft WLAN-Router die andere Distros nicht erkennen.

Kubuntu

KDE ist eine Desktop-Umgebung, die für Anwender die von Windows kommen, angenehmer als Gnome sein kann. KDE ist aber nicht so ausgereift wie Gnome. Das ist der Grund dafür dass viele Distros, Gnome als Vorgabe-DE verwenden.

Für manche, KDE wirkt ein wenig wie Bloatware, das war aber hier nicht das Problem. Manche Programme und BS-Funktionen wie auch die Zuverlässigkeit des gesamten Systems, stehen nicht auf einer Stufe mit Ubuntu.

Das Schlimmste war das LibreOffice. Die Icons sind zu groß und mit falscher Skalierung. Man kann sie zwar deaktivieren aber nicht von überall.

Mint

Diese Distro hat wirklich sehr viel Bloat, und bringt sogar ein paar Konzepte mit, die wir nur von Windows kennen, wie z.B. dass der Benutzer keine BS-Updates ausschließen kann.

Ubuntu

Nach vielen Versuchen, die endgültige Wahl des Projekts fiel auf Ubuntu mit der Vorgabe-Gnome-Desktop-Umgebung.

Canonical

Bei manchen Distros existiert ein Zusammenhang mit einer Firma wie im Fall von RHEL, CentOS und Fedora, mit RedHat, so beim Ubuntu, mit der Firma Canonical.

Das ist nicht bedenklich, da Ubuntu Open-Source ist, und Canonical hauptsächlich Support verkauft.

GPT-Partitionierung

Warum GPT und nicht LVM?

Im Projekt wurde GPT mit Ext4-Partitionen verwendet.

LVM hat im Vergleich einige Vorteile, ist aber viel Komplexer, weist eine höhere Gefahr von Datenkorruption und -verlust auf und hat zusätzliche Streitpunkte: Es wird deshalb in einem künftigen Projekt getestet werden.

Partitionierungs-Konzept

Wenn wir frei experimentieren wollen, ohne dass wir das BS ein zweites Mal von Grund auf installieren und konfigurieren müssen, sind viele bootfähige Klone eine sehr gut Lösung.

Um diesen Ansatz nicht unnötig zu komplizieren wurden keine einzelnen Partitionen für ein Home-Verzeichnis verwendet, sondern separate Partitionen für persönliche Daten.

Am W530, eine WD10JPLX Festplatte mit 1TB Speicher, wurde in 18 Partitionen zerteilt. Die ersten vier waren anfangs Windows-10 spezifisch, wurden aber nie dafür verwendet, weil im Laufe des Projekts das Interesse für Windows nachließ, so dass sie nur in VMs verwendet wurden.

Windows-10-Gäste waren als Plan-B gedacht, falls man unbedingt ein Programm braucht, dass nur unter Windows vorhanden ist.

Dieser Ansatz wurde schließlich auch abgeschafft, für Gründe die weiter unten allmählich erläutert werden.

Zwei externe 1TB groß Toshiba-Festplatten sind für Backups vorhanden, aber auch für externe Ubuntu-Installationen eingesetzt.

T520-Thinkpad Festplatte und externe Festplatte mit dazugehörigen BSs

Der T520 wurde ähnlich wie der W530 partitioniert, aber mit einer 320GB-Festplatte.

Die Sda-Festplatte unten, stammt vom T520-ThinkPad, und die Sdb ist eine Toshiba externe Festplatte. Beide Festplatten wurden ähnlich partitioniert.

Die zwei ersten Partitionen sind ESP, also EFI-System-Partitionen, und es sind deswegen zwei, falls eine Distro eine eigene Partition für den Bootloader benötigt. Fstype ist Vfat, wenn eine Windows-Installation auch anwesend wäre, sonst könnten die ESPs auch mit Ext4 formatiert werden.

Kubuntu, kubuntu-clone und kubuntu-test, sind bootfähige Klone, so angenommen ein BS unbehebbare Fehler aufweist, kann die nächste Partition gebootet werden.

Auf den zwei letzten Partitionen sind OpenSuse und CentOS installiert.





Sdb ist eine externe Festplatte, und von ihrer Sdb7-Partition ist Ubuntu 20.04 LTS gebootet, Sdb1 ist an /boot/efi angehängt und eine aktive Swap-Partition ist auch vorhanden.

7ubui1, 8ubui2 und 9ubui3 sind ebenfalls Klone, im Sinne der Kubuntu-Klone an der Sda.

10ubuc2, 11ubuc5 und 12ubuc6, sind Klone des Ubuntu-BS vom W530-Thinkpad, und die 13kubui1 und 14kubui2, sind Klone des Kubuntu-Haupt-BS auf dem T520-Thinkpad. Auf der Partition Vmsc3 befinden sich Kopien virtueller Maschinen.

Die Sda4-data, ist eine größere Partition wo alle Personaldaten gespeichert werden, so dass unabhängig davon welche Partition gebootet wird, der Zugriff auf die privaten Daten nur das Einhängen der Data-Partition erfordert.

Die Dataei-Partition hat Sicherungskopien der persönlichen Notebookdaten, und Datani ist eine kleine NTFS-Datenpartition.

W530-Thinkpad Festplatte

Die gleichen Grundgedanken wie bei dem T520 wurden hier auch befolgt.

Zwei ESPs, eine Swap-Partition, Datae ist die persönliche Datenpartition, Vms, Vms2, Vms3 und Vms4 sind Partitionen für virtuelle Maschinen, Datan ist für Ntfs-Daten, 14ubuk2, 15ubuk3 und 16ubuk4, sind drei Klone des BSs.






Fstab angepasste Einträge

Damit schnell und leicht mit dem Ein- und Aushängen von Partitionen geht, können wir in Fstab, angepasste Einhängepunkte eintragen.






Diese sind dann mit Label und nicht mit UUID gekennzeichnet, damit sie leicht erkennbar sind.

Ein Label kann während der Erstellung einer Partition mit verschiedenen Programmen zugewiesen werden, wie mit dem Mkfs-Program.

Nachträglich kann ein Label mit

$ sudo e2label /dev/sdxx <label>

eingetragen werden.

Die zwei letzten Einträge sind von Ntfs-Partitionen. Es muss hier bemerkt werden dass sie ganz andere Einhängeoptionen als die Ext4-Partitionen brauchen.

Ubuntu-Paketverwaltung

Repos

Unsere Pakete dürfen mittels zwei Befehlen aktualisiert werden.

$ sudo apt update - Paketinfos holen

$ sudo apt upgrade - Pakete aktualisieren

Wir suchen nach Paketen in den Repos mit Schlüsselwörtern wie folgt:

$ unbuffer apt search -f <schlüsselwort> | less -R






Die Ergebnisse vom „apt search“ sind teilweise farbig. Aber um die Bild-auf- und Bild-ab Taste zu verwenden, pfeifen wir less dazu, aber gehen dann die Farben verloren.

Unbuffer, das zuerst installiert werden muss, arbeitet mit der -R Fahne von less zusammen, um die farbige Ausgabe zu bewahren.

Die -f Option bedeutet full, deshalb kann sie abwechselnd eingesetzt werden, um die Ausgabe zusammenfassend oder mit vollen Beschreibungen zum Drucken.






Um ein Paket zu installieren,

$ sudo apt install <paketname>

Wir entfernen Pakete mit

$ sudo apt remove <paketname>

Es bleiben aber die Konfigurationen gespeichert falls wir das Paket nochmals installieren wollen. Ein Paket und seine Konfigurationen entfernen wir mit

$ sudo apt purge <paketname>

Synaptic

Die Paketverwaltung ist auch mittels Synaptic möglich, dass weiter oben erwähnt wurde, ist ein GUI-Frontend für Apt, und muss zuerst installiert werden.

Snap

Entsprechend der Paketverwaltung durch die Repos, müssen die Software-Entwickler ein einzelnes Installationspaket für jedes Paket-Verwaltungssystem: Apt, Yam, Dnf, Zypper usw., erstellen müssen.

Snap wurde 2014 von Canonical freigegeben und 2016 wurde in die Distro-Mehrheit portiert. Snaps können universal installiert werden und vereinfachen die Entwicklerarbeit.

Durch Snaps ist es auch möglich freie Versionen von Closed-Source-Anwendungen, wie Skype zu installieren, was durch die Repos unmöglich ist.

Folgend werden Snapbefehle-Beispiele angeführt.

$ snap find <paketname>

$ snap install <paketname>

$ snap remove <paketname> - Confs werden nicht entfernt

$ snap remove --purge <paketname> - Confs werden entfernt

$ snap list - Installierte Snaps anzeigen

PPA - Personal Package Archive - Persönliches Paket-Repo

PPAs sind private Repos, wodurch Pakete installiert werden können, die in den offiziellen Repos nicht vorhanden sind, aber weil sie auch Repos sind, deren Pakete werden zusammen mit den offiziellen aktualisiert.

Um ein PPA hinzufügen und ein dazugehöriges Paket zu installieren werden folgende Befehle gebraucht.

$ sudo add-apt-repository ppa:<ppa übergeordnetes verzeichnis>/<paketverzeichnis>

$ sudo apt update

$ sudo apt install <paketname>

Deb-Dateien Paketemanagement

Closed-Source-Programme wie Foxit-PDF-Reader und Master-PDF-Editor, werden oft als Dateien mit einer .deb Erweiterung angeboten.

Die werden installiert mit

$ sudo dpkg -i <paketpfad>

Es ist auch möglich

$ sudo apt install <paketpfad>

es kann aber sein dass apt install, keine Meldung über fehlende Abhängigkeiten gibt.

Wenn apt search einen Paketzustand als [installed, local] anzeigt, es handelt sich um ein Deb-Paket dass manuell installiert wurde.

Wenn das Paket aktualisiert werden soll, aber kein offensichtlicher GUI-Weg dafür verfügbar ist, suchen wir das Paket zuerst suchen mit

$ dpkg -l | grep <paketname>

Paket entfernen mit

$ dpkg -r <paketname>

Der Befehl

$ locate <paketname>

zeigt immer noch Dateien wie postinst und porstrm.

Apt search zeigt deren Zustand als [residual config]

Man sollte diese Pakete nicht entfernen, so dass wenn das neue Paket installiert wird, können die alten Konfigurationen dadurch aufgenommen werden.

Ubuntu-Software

Ubuntu-Software ist die einfachere GUI-Variante ein Programm zu installieren, was im Projekt nie angewendet wurde.

Gnome

Beim ersten Kontakt, wirkt Gnome etwas fremd für Benutzer die von Windows kommen. Es sollten zuerst die Pakete: Optimierungen und Dconf-Editor installiert werden, und daraufhin verschiedene Erweiterungen. So kann das Look-and-Feel sehr angepasst werden.

Wo nicht angepasst werden kann, das sind die Desktop-Verknüpfungen. Es können Icons zum Desktop nur wenn in den Ordner /home/<benutzer>/Desktop eingefügt werden.

Wenn wir Linux lernen wollen, müssen wir unausweichlich einiges anders machen als bei Windows. Der Desktop sollte nur um ein schönes Bild zu zeigen verwendet werden. Da können auch Icons als Deko verwendet, aber lieber nicht als Verknüpfungen.

Erweiterungen

Einige Extensions dürfen durch die Paketverwaltung installiert werden.

Zusätzliche Erweiterungen können entweder von extensions.gnome.org installiert werden oder auch manuell:

Zuerst unter /home/<benutzer>/.local/share/gnome-shell/ einen Ordner namens <extensions> erstellen.

Dann von extensions.gnome.org eine Erweiterung in den <extensions> Ordner herunterladen.






Entpacken und die Datei metadata.json aufmachen.

Die UUID-Beschreibung kopieren, die innerhalb der Anführungszeichen steht, und damit den Erweiterung-Ordner umbenennen.






Alt+F2 und im Kommandofenster „r“ geben um die Shell neu zu starten.

Dash-to-Panel ist eine Extension die uns sehr viele Anpassungsmöglichkeiten gibt. Damit ist eine vielseitige Taskleiste gemeint, die die Ubuntu-Erfahrung um einiges verbessert, und womit Neuankömmlinge etwas freuen können.

Verschiedene Anwendungen

DE bestimmte Programme

Jede Desktop-Umgebung hat Vorgabe-Programme. Es ist aber möglich solche Programme auch in anderen DEs zu installieren.

Dateimanager

Der Dateimanager von Gnome, Nautilus, ist nicht so anpassbar und atemberaubend, kann er aber leichter als andere Dateimanager, Netzwerken mit Samba-Shares und Android unter anderem.

Als täglicher Dateimanager wirkt aber Nemo von Cinnamon-DE, viel besser.



Wiederum, wenn uns Dateien-Vorschauen wichtig ist, da wäre Dolphin von KDE besser.



Alle drei Dateimanager können ergänzend verwendet werden.

Texteditor

Im Terminal ein guter und leicht zum lernen Editor, ist Nano.






Betreffend GUI-Editoren, der Vorgabe-Gnome-Texteditor ist auch nichts besonders. Kate, wieder von KDE, hat nur Vorteile und ist nicht so schwer wie andere.






PDF-Editors

Diese Programme sind ein Spezialfall wegen der allgemeinen Ansicht, dass wir unter Linux große Schwierigkeiten mit Pdf-Editors haben, was nur teilweise trifft.

Poppler, die PDF-Darstellungsbibliothek mit der die meisten Open-Source-Frontends arbeiten, muss allerdings noch weiterentwickelt werden.

Okular

Eine gute Auswahl ist der PDF-Editor Okular, schon wieder von KDE. Bei den meisten Dokumenten ist die Fontwiedergabequalität sehr gut.

Es können zwar mit Okular Dokumente editiert werden, aber zwischen anderem, Formen werden nicht unterstützt, und die Schreibfunktion ist bei speziellen Zeichen wie griechische und asiatische Buchstaben fehlerhaft, da sie teils unsichtbar werden.

Unten, wird im Okular eine Seite von „The Linux Command Line“ vom William Shotts http://linuxcommand.org/tlcl.php angezeigt.






Master-PDF-Editor und Qoppa-PDF-Studio

Zwei nennenswerte gewerbliche Linux-PDF-Editors sind verfügbar. Master-PDF-Editor (MPE), $69,95 pro Lizenz, das schon im Projekt als Demo getestet wurde und Qoppa-PDF-Studio Pro, $129 für zwei Geräte, nur als Trial anwendbar ohne es zu kaufen, das teurer als der MPE ist, aber laut Rezensionen auch besser.

Im MPE-Demo, sind alle Funktionen zwar verfügbar, bei den meisten Editorfunktionen wird aber ein Wasserzeichen im Dokument erzeugt.

Die Schreibfunktion ist im Demoversion jedenfalls freigegeben, aber Akzente wahlweise auf Buchstaben zu setzen, wie in der griechischen Sprache ist nicht möglich.

Ein Bild von MPE folgt, in dem OpenSuse-Reference, erhaltbar von https://doc.opensuse.org/ angezeit wird.






In einem Fontwiedergabe-Vergleich zwischen Okular und MPE, gewinnt MPE grenzwertig. Es gibt zu verstehen dass MPE eine eigene Rendern-Bibliothek verwendet und nicht das Poppler-Backend.

Weil die PDF-Editors bezüglich Office-Arbeit notwendig sind, um offizielle Formulare auszufüllen unter anderem, es ist zu beachten, dass das MPE-Demo Formen unterstützt im Gegensatz zum Okular, und dass durch deren Bearbeitung kein Wasserzeichen während des Testens entstand.

Linux-Acrobat abgeschafft

Seit 2012, existieren keine Linux PDF-Programme mehr von Adobe.

Foxit

Foxit-PDF-Reader wurde getestet mit dem Ergebnis dass Ubuntu manchmal komplett einfror.

LibreOffice-Draw als PDF-Editor

Eine andere Lösung zur PDF-Problematik unter Linux, ist LibreOffice-Draw.

Anfängliche Probleme

Anfangs werden wir aufgrund von den zwei folgenden Problemen abgeschreckt.

Wenn wir eine größere PDF-Datei mit Draw öffnen, dauert es relativ lang und fängt auch der CPU-Lüfter zu arbeiten.

Dann wenn wir mit der Maus eine Seite ziehen wollen wird vielleicht die PDF-Schicht von der Grundschicht weggezogen, in der Art und Weise von Gimp.

Zudem, eine quadratische Textbegrenzung wird angezeigt, die vom PDF-Text rechts und links überschreitet wird, und störend erscheint.

Konfiguration für PDF-Dokumente

Zuerst die Pdf-Datei mit dem nativen Odg-Format speichern.

Optionen/LibreOffice/Anwendungsfarben/Textbegrenzungen deaktivieren.

Die Datei soll künftig mit der Odg-Erweiterung verwendet werden und nur wenn sie z.B. per E-mail gesendet sollte, wird wieder als Pdf-Datei exportiert.

Wenn unser Dokument mit einer bestimmten Schrift standardmäßig bearbeitet werden soll, es reicht nicht eine neue Vorlage als Vorgabe zu setzen.

Die Standardschrift ist hardcoded in LibreOffice und kann nicht (auf einfache Weise) geändert werden wie die Dateien Normal.dot und Nomal.xlt unter Windows.

Wir müssen also wie im Link Associating a document with a different template erläutert wird, vorgehen.

Datei/Dokumentvorlagen/Dokumentvorlage öffnen.

Die gewünschte Vorlage öffnen.

Den gesamten Inhalt unseres Dokuments mit Strg+A und Strg+C kopieren und mit Strg+V in das neue leere Dokument einfügen und speichern.






Jetzt kann endlich die Schreibfunktion durch die Auswahl von „Textfeld einfügen (F2)“ verwendet werden, die schon mit der gewünschten Schrift permanent konfiguriert ist. Rechtschreibung-Überprüfung ist auch verfügbar wie nur in den teureren Pdf-Editors.

Noch besser, da LibreOffice-Draw andere Rendern-Bibliotheken einsetzt und nicht das Pdf-Poppler-Backend, die Schriftwiedergabe sieht etwas besser als im Okular aus.

Minuspunkte

Große Minuspunkte gibt es aber trotzdem: Unterschiedliche Abstände zwischen Wörtern im Text, und die Lesezeichen, Hyperlinks etc. gehen jetzt alle verloren. Der Text ist aber noch suchbar.

Pdf2odt

Das ist ein Skript von Gutschke dass die Daten einer Pdf-Datei in Bildlern umwandelt. Die Datei bekommt eine Odt-Erweiterung und kann unter LibreOffice-Writer annotiert werden.

Skript herunterladen, unter ~/bin - gegebenenfalls Verzeichnis zuerst erstellen - speichern und ausführbar machen mit

$ chmod +x pdf2odt





Das Skript scheint einwandfrei zu funktionieren als mit der Konvertierung einer Pdf-Datei von 200 Seiten getestet wurde.

Arranger

Um Dokumente zusammen zu setzten und individuell zu ordnen ist der Open-Source PDF-Arranger die beste Wahl.

Pdf-Fazit

Das MPE-Demo ist die einzige freie Möglichkeit interaktive Formen auszufüllen. Die Schreibfunktion ist frei, zwar etwas fehlerhaft für manche Sprachen, aber auf Deutsch wird problemlos geschrieben. Okular kann auch Deutsch schreiben, aber griechische und asiatische Buchstaben sind teilweise unsichtbar. Er unterstützt keine interaktiven Formen, wie das MPE-Demo, aber er kann unterstreichen und einfache Formen zeichnen, was beim MPE-Demo nicht freigegeben ist.

Die beide Anwendungen können also ergänzend eingesetzt werden.

Das Pdf2odt-Skript, ist sehr gut wenn wir nicht interaktiv, Formen in mehreren Sprachen und mit Rechtschreibungs-Überprüfung ausfüllen wollen, und auch dementsprechend besser als LibreOffice-Draw da mit dem Pdf2odt, entstehen keine unnatürlichen Abstände zwischen Wörtern.

Wenn wir was professionelleres unbedingt haben wollen, ist der Kauf von Qoppa-PDF-Studio-Pro an erster Stelle oder von Master-PDF-Editor an zweiter Stelle, nötig.

Andererseits, die Linux-Phylosophie ist gleichzeitig mit mehreren Tools zu arbeiten die gegenseitig ergänzend sind.

LibreOffice

Vorlagen

Was unter dem Überschrift „LibreOffice-Draw als PDF-Editor“ über Vorlagen erwähnt wurde, gilt für alle LibreOffice-Anwendungen.

Die Auferstehung einer überholten Erweiterung, die „Template Changer“ heißt, soll das Ändern einer Vorlage erleichtern, die Kompatibilität ist aber laut Entwickler bis LO-Version 6.3 und wurde im Projekt nicht getestet.

Writer - der Mangel der geteilten Ansicht

Insofern können Soft-Links, kurzum Symlinks, verwendet werden, wobei die Symlink-Datei parallel mit der Quelle-Datei, betrachtet werden kann.

Einen Symlik erstellen mit

$ ln -s <quelldatei> <link-datei>

Um die Linkdatei zu aktualisieren, durch Alt+F4 schließen, und mit

$ libreoffice <link-datei>



neu starten.

Bei einer Umbenennung der Quelldatei, die Linkverbindung mit

$ ln -sf <quelldatei> <link-datei>

aktualisieren.

Die Linkverbindung zur Quelle wird mit ls im Terminal angezeigt.





Bereinigung unötiger Dateien

Übriggebliebene Konfigurationsdateien entfernen

Unter https://help.ubuntu.com/community/AptGet/Howto wird der untere Befehl empfohlen und kurz beschreibt. Beim Xargs wurde die Option -p oder --interactive aus Sicherheitsgründen zugefügt.

$ dpkg -l | grep '^rc' | awk '{print $2}' | sudo xargs -p dpkg --purge

dpkg -l - Paketliste ausdrucken.

grep '^rc' - Druckt Pakete aus, die entfernt wurden, wobei deren Konfigurationsdateien noch vorhanden sind.

awk '{print $2}' - Druckt die zweite Spalte aus.

xargs - Bereitet Befehlausführungen aus der Liste dass awk ausgedruckt hat, und leitet diese an dpkg weiter.

-p - Interaktiv

--purge - Entfernen samt Konfigurationsdateien

Da xargs kein deutsch versteht auch wenn die BS-Sprache auf Deutsch umgestellt ist, müssen wir bezüglich der -p Fahne, mit yes statt ja antworten.

Unnötige Pakete mit autoremove löschen

$ sudo apt autoremove

Daten im Cache löschen

$ sudo apt-get clean

Löscht alles unter /var/cache/apt/archives/ und /var/cache/apt/archives/partial/ bis auf die Lock-Datei.

Daten im Snap-Cache löschen

Alles unter /var/lib/snapd/cache löschen, was im folgenden Hyperlink erläutert wird.

https://askubuntu.com/questions/1075050/how-to-remove-uninstalled-snaps-from-cache







Festplattenbelegungsanalyse

Wenn wir

$ sudo apt purge <paketname>

verwenden, werden auch die Konfigurationsdateien der Pakete entfernt, aber nicht der versteckten Konf-Dateien im persönlichen Ordner, deren Name mit einem Punkt anfängt, die müssen manuell gelöscht werden.

Die Festplattenbelegungsanalyse ist ein schönes graphisches Tool, um einen Überblick der Verzeichnisse- und Dateiengrößen zu gewinnen, um selektiv Daten zu löschen.






Netzwerken

SSH

Zuerst muss überprüft werden ob alle relevanten Pakete und Bibliotheken an beiden Seiten installiert sind. Mit

$ ssh benutzer@ip-adresse

können wir uns mit dem Server verbinden, und durch

$ ssh -X benutzer@ip-adresse

ist es möglich GUI-Anwendugen des Servers im Client zu verwenden, kurzum eine Weiterleitung des X11 Fenstermanagers.

Eine private IP-Adresse kann mit

$ ifconfig | grep -E 'inet.*192'

ermittelt werden. Hier sehen wir IP-Adressen von zwei Netzwerk-Schnittstellen. Das erste Netzwerk, dass 122 einbezieht, ist für die KVMs, und das zweite, dass 31 enthaltet, für das WLAN.






Rsync über SSH

Hier wird z.B. ein Daten-Backup synchronisiert.

$ rsync -aAXsh --delete --preallocate --info=progress2,stats2 -e ssh <quelle> benutzer@ip-adresse:<ziel>

Im Vergleich mit dem Klonbefehl, darf für ein Daten-Backup die Fahne -H fehlen, wenn keine Hardlinks anwesend sind.

-e - Weist Rsync an, welches Netzwerkprogramm angewendet wird. Diese Option muss unmittelbar vor SSH stehen. Wenn nicht, funktioniert zwar SSH, aber alle Fahnen zwischen -e und ssh werden nicht aufgeführt.

Man kann den Rsync-Vorgang mit den Tasten Strg+Z unterbrechen. Um fort zu fahren,

$ jobs

um die Nummer des angehaltenen Job zu zeigen, und

$ fg <job-nummer>

um Rsync wieder fortzusetzen.

fg - Foreground

Remote-Desktop

Die Bildqualität der nativen Remnina-Anwendung von Ubuntu war mit der Vorgabe-Konfiguration nicht überzeugend.

NoMachine ist zwar Closed-Source-Software, aber mit einer freien Version für Linux und insgesamt hat im Projekt gut abgeschnitten.

TeamViewer is sehr beliebt und bietet auch eine freie Version an, hat aber im Vergleich mit NoMachine keine bessere Bildqualität aufgewiesen.

Sollte vermerkt werden dass TeamViewer 2016 gehackt wurde. Der Südweste Presse nach: „Einen Anlass, die Kunden über den Angriff zu informieren, sah die Firma damals nicht.

Remote-Desktop ist zwar sehr praktisch, kann es aber auch gefährlich werden, weil dadurch viele Sicherheitsvorkehrungen umgehen werden können.

Folgend sehen wir Ubuntu 20.04-LTS, natives BS, ein NoMachine-Client verbunden mit Ubuntu-Server auf einem anderen Laptop mit dem Wintersee-Hintergrund, und auch zwei KVM-Gäste: Windows und Ubuntu.






Remote-Desktop gegen ssh -X

Beim Projekt-Testen mit ssh -X liegt keine Frage von Bildqualität und Auflösung vor. Es ist alles nativ, und muss nach dem Benutzer- und Hostname gesucht werden um heraus zu finden auf welchem Computer gerade gearbeitet wird.

SSH Desktop-Tunneling wäre auch möglich mit VNC, das wurde im Projekt aber nicht getestet.

Beim Remote-Desktop zwischen den zwei Laptops, W530 und T520, war die Bildqualität mit keinem Programm genau so gut wie nativ. Der Grund dafür: Wenn der Server eine viel niedrigere Auflösung als der Client hat, werden die Schriftarten sehr klein angezeigt. Bei einer Vergrößerung des RD-Fensters und Anpassung der Auflösung, wird natürlich alles verschwommen.

Optimal funktioniert RD folglich zwischen Maschinen mit ähnlichen Bildschirmauflösungen.

Alles in allem, SSH mit oder ohne die X Fahne, funktioniert tadellos, und RD wurde weniger eingesetzt.

Unten sehen wir den gleichen NoMachine-Client von oben, mit Ubuntu-Server ki@dusk im zweiten Laptop.

ki@dusk weist seine IP-Adresse mit






$ ifconfig | grep -E 'inet.*192'

vor.

bi@green, das native BS vom Laptop, verbindet sich mit ki@dusk

$ ssh -X ki@192.168.31.235

Danach mit

$ nemo

wird Nemo von ki@dusk, auf dem Desktop von bi@green aufgerufen.

Im oberen Bild ist es deutlich dass die Schriftarten des Servers sehr klein angezeigt werden, wie weiter oben erwähnt wurde.

BS-Backup und -Klon-Erstellung als Konzept des Verfassers

Von Windows kennen wir nur eine BS-Image-Sicherung. In Linux ist für diesen Zweck möglich, einfach alle Dateien samt verschiedener Eigenschaften zu kopieren.

Rsync

Rsync ist das Terminalprogramm für diese Aufgabe.

Es sind auch Rsync-GUI-Frontends vorhanden, mit geliebtestem das, in Mint vorinstalliert, Timeshift. Es wurde einmal erfolglos damit versucht eine Fedora-Installation wiederherzustellen.

Rsync hat so viele Optionen, die wurden nie in eine GUI reinpassen.

Nach sehr vielen Experimenten wird immer mit Erfolg folgendes verwendet:

# rsync -aAHXsh --delete --preallocate --info=progress2,stats2 <quelle>/ <ziel>/

-a - Archivierungsmodus, und impliziert, beinhaltet, die Fahnen -rlptgoD, aber nicht -AHX

-r - Eine rekursion in den Ordnern durchführen

-l - Symlinks

-p - Zugriffsrechte

-t - Änderungszeiten

-g - Gruppen

-o - Eigentümer

-D - Geräte- und Spezielldateien

-A - ACLs (impliziert -p)

-H - Harte Links

-X - Erweiterte Attribute

-s - oder --protect-args - Leerzeichen werden nicht in Namen gespaltet. Das kann uns schützen wenn irgendwo aus versehen Dateinamen mit Leerzeichen vorhanden sind. Diese Option wird eventuell eine neue Standardeinstellung von Rsync.

-h oder --human-readable

--delete - Dadurch werden alle irrelevante Daten, die nicht in der Quelle vorhanden sind, vom Ziel gelöscht. Auf dieser Weise wird das Ziel ein Spiegelbild der Quelle.

--preallocate - Die größeren Dateien werden angrenzend gespeichert, und das Dateisystem wird nicht fragmentiert. Allerdings kopiert Rsync etwas langsamer dadurch.

--info=progress2,stats2 - Hier wird der Fortschritt angezeigt und zum Schluss Statistiken: wie viele Dateien wurden erstellt, gelöscht usw.

Der Schrägstrich an der Quelle ist sehr wichtig, weil ohne ihn, werden nicht die Inhalte des Ziels aktualisiert, sondern die Quelle wird ins Ziel kopiert, also dadurch werden die Daten durch eine Synchronisierung sich verdoppeln.

Der Befehl darf nur als Root ausgeführt werden.

Woher soll der Befehl ausgeführt werden

Das Quell-BS darf nicht gebootet sein.

Es wurde versucht den Befehl von einer unabhängigen Partition der gleichen Festplatte auszuführen. Der Klon bootet nicht, und wenn wir die Dateien der Quelle und des Ziels mit

sudo find <Pfad> | wc -l

zählen, fehlen vom Klon ungefähr 10 Dateien.

Es ist also notwendig, aus einem externen BS den Befehl auszuführen.

Persistent-Live-USB

Die offensichtliche Lösung wäre vom üblichen Ubuntu-Live-USB zum Rsyncen. Wenn dieser Vorgang aber öfters durchgeführt wird, ist das nicht optimal. Eine bessere Lösung ist ein Persistent-Live-USB.

Mit dem Programm Mkusb, ist das unter Ubuntu sehr leicht zu bewältigen. Dadurch wird eine zusätzliche Casper-Partition erstellt, worauf Programme und Benutzereinstellungen installiert und gespeichert werden. Es wird außerdem eine Partition für Daten erstellt.






Wo sollen die Klone erstellt und aktualisiert

Unten wurde die Partition 14ubuk2 auf die 16ubuk4, von einem Persistent-Live-USB, synchronisiert.





Auf der Notebook-Festplatte sind immer drei Klone vorhanden. Im Fall eines unbehebbaren Fehlers, stehen zwei bootfähige Klone immer parat.

Hierfür ist es wichtig häufig genug die Klone zu synchronisieren, so dass wenn wir einen anderen Klon einsetzten, nicht über viel verlorene Arbeit ärgern müssen.

Bezüglich externer Klone, anfangs wurden sie auf USB-Sticks verschiedener Hersteller erstellt und synchronisiert aber später nur auf Toshiba externe Festplatten.

Die USB-Sticks auch wenn USB3, weisen im Vergleich mit den externen Festplatten, eine viel niedrigere Geschwindigkeit auf, sie werden sehr heiß und auch schnell korrupt. SSDs sind in Bezug darauf auch nicht geeignet dass vom ständigen Schreiben schnell abgenutzt werden.

Auf Verlängerungskabeln muss auch aufgepasst werden, da viele USB3-Kabel, die externen Festplatten nicht richtig erkennen. Die dickere Version von Oricokabeln haben sich verlässlich erwiesen.

Ferner, die externen Festplatten wurden genau so wie die internen partitioniert und ihre Klone werden auch bootfähig. Die funktionieren aber nur in Verbindung mit demjenigen Computer von dem sie kopiert wurden, die sind nicht portabel. Dazu wird es später verfeinert.

UUIDs in FSTAB ändern

Damit die Klone booten können, müssen in der FSTAB-Datei, die richtigen UUIDs für alle relevante Partitionen geschrieben werden: also die UUID der Rootpartition brauchen wir immer, und wenn die Klone von einem externen Laufwerk booten sollen, wo wir auch ESP- und SWAP-Partitionen erstellt haben, die sollen auch umgeschrieben werden.

$ lsblk -fm

Die Ausgabe druckt UUIDs für alle Partitionen aus.

$ sudo nano <Klonpfad>/etc/fstab






Booten mit dem rEFInd-Bootmanager von Roderick Smith

Nach langer Forschung, der rEFInd-Bootmanager von Roderick W. Smith hat sich als bester UEFI-Bootloader erwiesen. Der kann auf der Festplatte installiert werden, aber es ist besser ihn von einem USB-Stick zu betreiben.

Alle GPT/UEFI-Linux-Systeme können damit gebootet werden, ohne dass vom BS ein Bootloader in Anspruch genommen werden muss. Einfach mit F12 oder ähnliches das Bootmedium auswählen, rEFInd-Live-USB booten, Klon auswählen, dazu werden die Partitionbezeichnungsnamen aufgelistet, und booten.

Im nächsten Bild ist das W530-Thinkpad links mit einem Ubuntu-BS und rechts das T520-Thinkpad mit dem rEFInd-Bootloader-Menü.





Folgend sind drei Ubuntu-Klone auf der externen Festplatte von T520-Thinkpad,





und Kubuntu, OpenSuse und CentOS auf der Festplatte des T520-Thinkpads.





Jedes Mal wenn Klone aktualisiert werden, wird es von einem anderen Klon gebootet um sicher zu stellen, dass alles einwandfrei funktioniert.

Bevor ein Klon zum ersten Mal gebootet wird, erkennen wir beim genauen Hinsehen des Dateisystems, dass einige Links als gebrochen aufgelistet sind, die werden aber beim Booten aufgebaut.

Grub-Bootloader für unsere Arbeitspartition installieren

Wenn ein Klon zum ersten Mal geboot wird,

$ lsblk -fm

um sicher zu stellen dass /, /boot/efi und [SWAP] an den richtigen Partitionen eingehängt sind.

Um GRUB zu installieren

$ sudo grub-install /dev/sdx

Sdx ist meistens Sda. Dann GRUB aktualisieren mit

$ sudo update-grub

Wenn wir neu booten steht unsere neue Arbeitspartition schon an der ersteln Stelle vom GRUB-Bootmenü.

Portabilitätsbeschränkungen von Ubuntu-Installationen

Ubuntu-Systeme die auf einer internen Festplatte installiert wurden, könnten im anderen Laptop des Projekts nach vielen Fehlermeldungen booten, aber kurz danach frieren immer ein. Kubuntu-Systeme obwohl theoretisch auch Ubuntu sind, könnten beim oberen Versuch gar nicht booten.

Die BS-Klone können problemlos auf einer externen Festplatte eingesetzt werden so lange die externe Festplatte mit dem Klon-Quelle-Laptop verbunden ist, aber nicht wenn die externe Festplatte am anderen Laptop angeschlossen wird.

Installationen externer Festplatten

Installationen die auf der externen Festplatte von einem Notebook durchgeführt wurden, haben am anderen Laptop funktioniert aber anfangs mit folgenden Problemen.

Authentifizierungsfehler an der Bildschirmsperre

Funktionierende Lösungen wurden von https://askubuntu.com/questions/1032624/ubuntu-18-04-authentication-error-on-loging-after-lock entnommen.

Am Ende der Dateien

/etc/sysctl.d/99-sysctl.conf und /etc/sysctl.conf

die Zeile

fs.inotify.max_user_watches = 524288

hinzufügen, und dann

$ sudo sysctl -p

$ sudo dpkg-reconfigure gnome-shell

SSH - Gebrochene Packete

Alle SSH-Packete wurden per „sudo apt purge“ enfernt und wieder installiert.

Installationen auf USB-Sticks

Das war ein Misserfolg, weil die USB-Sticks fangen, vom ständigen Schreiben, schon nach 10 Tagen, korrupt zu werden an.

Die Option von einem Persistent-Live-USB, die weiter oben diskutiert wurde, kann nicht als Haupt-BS verwendet werden. Es wird schnell deutlich dass nicht alle möglichen Pakete installiert werden können, und wenn ein solches System ständig aktualisiert wird, ist es auch schnell korrupt, nach Forenberichten und -anweisungen.

Den persönlichen Ordner in eine andere Installation kopieren

Da sind meistens Konfigurationen die übertragen werden, die Pakete müssen wieder manuell installiert werden.

Probleme treten hier auf, wenn das BS dass mit dem Home-Verzeichnis synchronisiert wurde, einen anderen Benutzername hat. Weiter unten, unter dem Überschrift „VM umbenennen“ wird erläutert wie der Benutzername richtig geändert werden kann.

Virtuelle Maschinen - VMs

Unter Linux ist VirtualBox von Oracle sehr beliebt, diesbezüglich gibt es aber einen großen Hacken. Die notwendigen Gasterweiterungen sind Closed-Source, und für den gewerblichen Einsatz nur gegen Entgelt verfügbar.

Weil VMs ein Kernteil von modernen IT-Systemen sind, sollten sie unbedingt native Linuxprogramme sein. Diese Programme sind als KVM oder KVM-Libvirt-Qemu bekannt, inklusiv Bibliotheken und Abhängigkeiten die wir brauchen um VMs zu erstellen und verwalten. Noch dazu, Virtmanager kann als GUI-Frontend installiert werden, und vor allem um die VMs in der graphischen Konsole anzuzeigen.

Leistungsvergleich - KVM gegen VirtualBox

KVM steht für Kernel-based Virtual Machine, ist der einzige Hypervisor der im Linux-Kernel eingebaut ist, und konvertiert Linux in einen Hypervisor-Typ-1 (HT1 - Bare-Metal) laut https://www.redhat.com/de/topics/virtualization/what-is-KVM.

VirtualBox ist nur ein Hypervisor-Typ-2, d.h. er fungiert als eine zusätzliche Schicht auf dem BS, und kein Teil des Kernels wie KVM, und deswegen sind seine VMs langsamer und brauchen mehr CPU-Zyklen, was auch in Forenthreads berichtet wird.

KVM gegen Xen

Eine Aufklärung zuerst: Viele missverstehen einen Hypervisor-Typ-1 (HT1) als ein eigenständiges BS, weil bei den gewerblichen Lösungen oft nicht offensichtlich wird, dass der HT1 durch ein Host-BS installiert wird, und dass ein Host-BS erforderlich ist, um viele Aufgaben zu bewältigen, wie Datenträgerabbild-Erstellung, Konfigurationsdateien-Bearbeitung, Netzwerk-Einrichtung usw.

Dementsprechend wird auch unter https://stackoverflow.com/questions/45529207/why-xen-requires-an-os-though-it-is-a-type-i-hypervisor erläutert.

In dieser Hinsicht muss zuerst Ubuntu, oder eine andere Linux-Distro, installiert werden, und dann die relevanten Pakete für KVM oder Xen, also die Einrichtung zwischen den beiden ist ungefähr gleich aufwendig.

Performance Evaluation of Xen, KVM, and Proxmox Hypervisors

Die umfassendste wissenschaftliche Arbeit die gefunden wurde, die KVM, Xen und dazu auch Proxmox vergleicht, hat den Titel „Performance Evaluation of Xen, KVM, and Proxmox Hypervisors“ geschrieben 2018 von Algarni, Rafi Ikbal, Alroobaea, Ghiduk und Nadeem, im „International Journal of Open Source Software and Processes“.

Die Ergebnisse sind zugunsten KVM.

„Die Experimente belegen dass KVM in den meisten Testkategorien übertrifft mit Ausnahme der Dateisystem-Leistung, wobei Xen setzt sich durch nur in der Kategorie Dateisystem-Leistung.

Dies bestätigt dass KVM besser für Anwendungen die CPU- und speicherintensiv sind, während Xen wäre besser für Dateisystem- und datenträgerintensive Programme.“ (Umgeschrieben und übersetzt, Seite 52)

Es ist auch nennenswert dass KVM von Google verwendet wird, und dass Amazon einen Umstieg vom XEN auf KVM plant.

KVM-Vorinstallationshandlungsweisen

Unter https://help.ubuntu.com/community/KVM/Installation entnehmen wir Einweisungen für die Hauptinstallation und Konfiguration. Unten werden die wichtigsten Punkte auf Deutsch dargestellt und umgeschrieben.

Zuerst müssen wir herausfinden ob der Prozessor Hardware-Virtualität unterstützt, und ob alle Virtualitätsoptionen in den UEFI-Einstellungen (was früher BIOS war) aktiviert sind.

$ egrep -c '(vmx|svm)' /proc/cpuinfo

Die Ausgabe 0 bedeutet das der Prozessor keine Virtualität unterstützt, die Ausgabe 1 oder mehr, dass sie unterstützt wird.

$ kvm-ok

zeigt uns ob KVM-Beschleunigung eingesetzt werden kann.

Wir müssen unbedingt einen 64 Bit Kernel verwenden um mehr als 2GB Arbeitsspeicher pro VM ordnen zu können.

$ uname -m

zeigt ob wir einen 64-Bit-Kernel verwenden mit der Ausgabe x86_64.

Anzeigen ob der CPU, 64 Bit ist mit

$ egrep -c ‘lm‘ /proc/cpuinfo

Die Ausgabe 0 steht für 32 Bit CPU. Eine Ausgabe von 1 oder höher steht für 64 Bit.

KVM-Installation

Die Hauptpakete installieren.

$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Der Normalbenutzer des Systems, muss Mitglied der Libvirt- und KVM-Gruppen werden.

$ sudo adduser `id -un` libvirt

Adding user '<username>' to group 'libvirt' ...

$ sudo adduser `id -un` kvm

Adding user '<username>' to group 'kvm' …

Es muss dann erneut angemeldet werden. Wenn

$ virsh list --all

keine Fehlermeldungen ausgibt, ist dann alles in Ordnung.

Um den Virtmanager zu installieren

$ sudo apt install virt-manager

Standard-Pool-Speicherstelle ändern

Eine Pool enthält die virtuellen Festplatten der VMs. Standardmäßig wird diese Pool unter /var/lib/libvirt/images, in der BS-Root-Partition gespeichert, die dadurch schnell voll wird, so wir wollen diese Speicherstelle ändern. Mit

$ virsh pool-edit default

öffnet sich die Standardpool-Xml-Datei in einem Texteditor, in dem wir die Speicherstelle ändern können.





Von den Anweisungen an folgender Adresse

https://serverfault.com/questions/840519/how-to-change-the-default-storage-pool-from-libvirt

können wir die Standardpool auch löschen und eine neue erstellen.

VMs-erstellen und -bearbeiten

Mit Virtmanager können neue VMs erstellt werden. Dazu brauchen wir nur ein Installations-ISO. Vom Virtmanager-GUI können auch direkt, entsprechende Teile der XML-Datei konfiguriert werden.

Bei einer bestehenden VM namens „ubvir2“, die XML-Datei kann mit

$ virsh edit ubvir2

bearbeitet werden.


Gasterweiterungen

Diese werden automatisch installiert zumindest bei Ubuntu-Gästen die im Projekt eingesetzt wurden.

Die Gasterweiterungen sind die Spice- und VirtIO-Paravirtualitätts-Treiber.

Spicetreiber

Highlights einschließen bessere Bildqualität, automatische Skalierung der Bildauflösung bei Änderungen des VM-Fensters und Zwischenablage-Unterstützung zwischen Host und Gast.

VirtIO-Treiber

Die sind sehr wichtig als Paravirtualitätstreiber für die virtuellen Festplatten, die virtuelle Netzwerkschnittstelle und für andere Hardware.

Gasterweiterungen für Windows-Gäste

VirtIO- und Spicetreiber sind auch für Windows-Gäste vorhanden.

Die VirtIO können von https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html heruntergeladen werden, und die Spicetreiber von https://www.spice-space.org/download.html

Für ihre Installation können die als virtuelle Sata-Cdroms zum Gast präsentiert werden, oder mittels Samba-Share verfügbar werden. Der VirtIO-Datenträgertreiber muss während der Windows-Installation installiert werden.

Hohe CPU

Für die unteren Tests wurde die Hälfte der CPU, also zwei Kerne - vier Threads, an die VMs zugewiesen, was bedeutet dass die CPU am Host ungefähr bis 400% belastet werden kann.

Systemweit CPU-Zyklen

Die Windows-VMs haben sehr hohe CPU-Zyklen aufgewiesen.

Wir können die XML-Datei auch in Virtmanager bearbeiten unter Anzahl der CPUs:/XML. Die unten angezeigten Konfigurationen in den Kästen, sind rechts von einer WVM und links von einer Ubuntu-VM.

Standardmäßig war die Konfiguration, die wir ändern wollen, wie folgend:

<timer name="rtc" tickpolicy="catchup"/>

<timer name="pit" tickpolicy="delay"/>

<timer name="hpet" present="no"/>

Durch die unteren Änderungen haben die CPU-Zyklen in der WVM sehr nachgelassen. In der UVM wurde keine Änderung festgestellt.





Unten sehen wir dass die Windows-VM 11.3% und die Ubuntu-VM 5% CPU-Zyklen verwendet. Mit acht CPU-Threads im W530-Thinkpad, das Maximum ist 800% und Load-Average 8.






Videobezügliche CPU-Zyklen

Außer dem Spice-Server,


wurde auch der Virgil3d - Virtio-GPU Paravirtualitätstreiber aktiviert.




Die UVMs weisen dennoch hohe CPU-Zyklen bei Videoausführungen an. Youtube-Videos laufen mit 210% CPU, VLC-Videos mit 300% CPU.

Eine andere Option wäre Intel-GVT-g, was aber nur ab der fünften CPU-Generation verfügbar ist, die W530-CPU des Projekt-Laptops ist nur dritte Generation - IvyBridge. Dazu müssen zwischen anderem einige Kernparameter geändert werden.

PCI-Durchleitung ist die beliebteste Option, muss aber eine GPU komplett an die VM durchgereicht werden, also der Ubuntu-host braucht eine andere GPU, deswegen ist so was nur möglich wenn die Hardware über zwei GPUs verfügt.

Es muss außerdem unterstrichen werden, dass die Portabilität der VMs im Fall einer GPU-Durchreichung aufwendig ist.

Unter https://wiki.archlinux.org/index.php/QEMU/Guest_graphics_acceleration werden einige dementsprechende Möglichkeiten zusammengefasst.

VM-Netzwerken

Linux

Das Vorgabe-Nat-Netzwerk wurde über WLAN verwendet, da unter KVM was anders läuft zwar über Ethernet problemlos, aber über WLAN wird sehr kompliziert. Das Gerätemodell ist Virtio.

In manchen Forenthreads wird berichtet, dass mit NAT, der Host kann sich zwar mit dem Gast verbinden, aber nicht umgekehrt.





Mit SSH kann von beiden Seiten eine Verbindung problemlos hergestellt werden.

Wie unter der Rubrik Netzwerken/SSH erwähnt wurde, eine private IP-Adresse kann mit

$ ifconfig | grep -E 'inet.*192'

ermittelt werden.

Unten, ist der Host bi@green rechts mit dem lilanen Hintergrund, und der Gast pf@thunvir links mit dem blauen Hintergrund. Im Gast wurde die IP-Adresse durch ifconfig ermittelt, und bi@green hat sich bei pf@thunvir angeschlossen, wobei der Prompt von bi@green in pf@thunvir geändert hat.






Die gleiche Vorgehensweise wurde ebenfalls ohne Probleme, zwischen zwei Ubuntu-Gästen unternommen.

Windows-VMs

Das Netzwerken mit einer Windows-VM (WVM), wurde anders gedacht. Wenn es unerlässlich sei, bestimmte Programme in einer WVM zu betreiben, dann aber im Sandkasten, so dass die WVM keine Sicherheitsgefahr darstellen kann.

Folgend ist eine WVM mit der TinyWall-Firewall installiert, die mit den Vorgabe-Einstellungen alles blockiert, also kein Internet. Es wurde aber die Option „Unblock LAN traffic“ getickt, damit die WVM sich mit dem Host verbinden kann.

Aus Sicherheitsgründen wurden die Windows-Linuxtools auch nicht aktiviert.




Im WVM einen Ordner namens wguest-data teilen.

Unter dem Ubuntu-Host einen Ordner /mnt/smbs erstellen wo wguest-data eingehängt wird.

Die IP-Adresse im WVM ermitteln mit

>ipconfig /all




Im Ubuntu-Host den geteilten Ordner mit

$ sudo mount.cifs //192.168.122.11/wguest-data /mnt/smbs -o username=<benutzername>,password=<passwd>

einhängen.

Weil aber das Passwort jetzt im Terminal gedruckt wurde, sollten wir lieber die Befehlszeile-Geschichte auch gleich löschen mit

$ cat /dev/null > ~/.bash_history ; history -c

Virtuelle Maschinen kopieren - updaten - umbenennen

VM klonen

Einzelne virtuelle Datenträger (VDs) wurden ausschließlich für Daten verwendet, die von mehreren Ubuntu-VMs eingesetzt werden. Wenn aber eine VM kopiert wird, ist es unmöglich den Daten-VD mit zu klonen. Das ist auch nicht gewollt. Also den Daten-VD erst mittels Virtmanager von der VM die wir kopieren wollen entfernen, und die VM dann klonen.

$ virt-clone -o <vm-name> -n <klone-name> -f <neu-virt-datenträger-pfad>

Das kopiert den Qcow2 Datenträger und die Konf-Dateien: die Datei vm_name.xml, wo die Konfiguration der VM geschrieben ist, und die Datei vm_name_VARS.fd, das ist die Nvram-Datei. Zusätzlich wird eine Log-Datei kopiert.

Der oben erwähnte Daten-VD, kann zwar gleichzeitig an vielen VMs zugefügt werden, aber Vorsicht! Es dürfen nie zwei VMs gleichzeitig den gleichen Qcow2-VD anhängen und die Daten zugreifen, weil sie dadurch korrupt werden.

VM löschen

$ virsh undefine <vm-name> --nvram --storage <vd-pfad>

VM aktualisieren

Ein VM-Klon wird aktualisiert mit

rsync -aAHXsh --inplace --delete --info=progress2,stats2 <quelle> <ziel>

Hier wird also die Qcow2-Datei aktualisiert, und anders als bei der Rsync-Verwendung um ein BS zu kopieren/aktualisieren, für Qcow2-Dateien brauchen wir die Option --inplace, wir können aber die Option --preallocate die bei der BS-Aktualisierung verwendet haben, hier nicht einsetzen, da Rsync damit zu lange braucht, oder sogar hängt.

VM umbenennen

Wir dürfen nie zwei Klone gleichzeitig im gleichen Netzwerk betreiben, oder wir müssen zuerst einem Klon eine neue Identität geben, was bedeutet: Benutzer- und Hostname sollen geändert werden.

Des weiteren damit wir die VMs besser unterscheiden können, sollte der VM-Name auch geändert werden, falls bei der Klonerstellung kein triftiger Name zugeteilt wurde.

Benutzername ändern

Das Konzept wurde von https://www.linuxuprising.com/2019/04/how-to-change-username-on-ubuntu-debian.html entnommen.

Angenommen wir wollen altname durch neuname ersetzen.

Zuerst erstellen wir einen temporären Benutzer namens tempuser, und geben ihm Sudo-Berechtigung.

$ sudo adduser tempuser

$ sudo usermod -aG sudo tempuser

Abmelden und als tempuser anmelden, um den Benutzernamen, das Heimverzeichnis und die Gruppe zu ändern.

$ sudo usermod -l neuname -d /home/neuname -m altname

-l, --login

-d, --home - Das neue Heimverzeichnis des Benutzers

-m, --move-home - Verschiebt den Inhalt des alten Heimverzeichnisses des Benutzers ans neue Ziel.

Den Gruppennamen ändern mit

$ sudo groupmod -n neuname altname

Einen symbolischen Link vom neuen zum alten Home-Verzeichnis erstellen.

$ sudo ln -s /home/neuename /home/altname

Der letzte Schritt ist sehr wichtig, weil viele Anwendungskonfigurationen an das alte Home-Verzeichnis zeigen, das jetzt nur ein Link zum neuen Heimverzeichnis ist, sonst funktionieren auf einmal einige Programme nicht mehr.

Verschiedene Programme werden nach den obigen Änderungen melden, dass ein anderer Benutzer eingeloggt ist oder ähnliches, aber nach der ersten Abweisung der Meldung läuft alles normal und erscheint die Meldung beim nächsten Mal nicht mehr.

Hostname ändern

Die Vorgehensweise wurde von https://itsfoss.com/change-hostname-ubuntu/ entnommen.

$ sudo hostnamectl set-hostname <neuer-hostname>

Es kann sein dass der Hostname auch manuell geändert werden muss im Inhalt zweier Dateien wie folgt:

$ sudo nano /etc/hostname

$ sudo nano /etc/hosts

VM-Name ändern

Ein Teil des Konzepts wurde von https://kifarunix.com/how-to-rename-kvm-virtual-machine-with-virsh-command/ entnommen.

Angenommen wir wollen eine VM namens alt in neu umbenennen.

Zuerst ändern wir den Namen des VD mit

$ sudo mv alt.qcow2 neu.qcow2

Die Xml-Datei editieren mit

$ virsh dumpxml alt > neu.xml

$ nano neu.xml

Überalll wo alt steht, muss jetzt neu geschrieben werden.

$ virsh undefine --nvram alt

Wenn unsere VM eine Nvram-Datei hat, der Befehl wird ohne die Fahne --nvram scheitern.

$ virsh define neu.xml

VM-Sicherungskopien

Wenn wir eine VM migrieren wollen, oder auch für den Fall eines Hardware-Ausfalles, wir benötigen die Qcow2- und die Xml-Datei zu sichern.

Die XML-Dateien können wir mit

$ rsync -aAHXsh -delete --info=stats2 /etc/libvirt/qemu/ /backup-ziel/

sichern.

Die folgenden Migrations-Anweisungen sind zwar ergänzend, wurden im Projekt aber nicht getestet.

Wenn beide Hosts laufen und über die gleichen BSs und KVM-Libvirt-Qemu verfügen, wir können die VM mit

$ virsh migrate <vm-name> <ziel>

migrieren.

Wir sollten sonst, und vor allem im Fall eines Hardware-Ausfalles, wie unter dem Überschrift „VM-Name ändern“ vorgehen.

Die Xml-Datei editieren mit

$ virsh edit <vm-name>

Hier ist es wichtig das neue VD-Pfad anzugeben, und gegebenenfalls die Netzwerk-Konfiguration zu ändern. Anschließend

$ virsh define <vm-name>.xml

VM-Verwaltung und -Resourcen

Die VMs können durch den Virtmanager-GUI verwaltet werden, aber auch mit vielen Kommandozeile-Programmen, wie weiter oben erwähnt.

Alternativ und ergänzend zum Virtmanager ist das Befehlszeile-Programm Virsh. Damit können wir die VMs unter vielen anderem: starten, pausieren, wiederaufnehmen usw.

Unten ist ein Ubuntu-Host mit zwei Gästen, einmal Ubuntu und einmal Windows. Im Terminal-Fenster, wurden ein paar Virsh-Befehle ausgeführt.





Oben sehen wir, dass beide VMs pausiert sind, und deswegen sie keine CPU-Zyklen in Anspruch nehmen. Speicher wird aber weiterhin verwendet.

Probleme mit Windows-VMs

Wenn wir Pools löschen und andere erstellen, VMs umbenennen und verschieben, die Ubuntu-Gäste booten weiterhin ohne Probleme. Nicht so mit den WVMs, in einem solchen Fall, die booten nicht mehr.

Voran genau das liegt, wurde nicht mehr recherchiert.

Anfänglich wurde angenommen dass WVMs für spezifische Programme nötig seien. Im Laufe des Projekts ist aber klar geworden dass dieser Ansatz sehr wenig zutrifft, wie z.B. unter der Rubrik: Pdf-Fazit, weiter oben dargestellt wurde.

Die WVMs offenbaren ein sehr hohes Umständlichkeit-Leistungs-Verhältnis zumal unter Linux eine Vielzahl von Lösungen für jede Aufgabe verfügbar ist.

Speicher

Um bequem VMs einzusetzen, sollte ein Minimum von 32GB Speicher im Rechner verbaut sein.

Das W530-Thinkpad hat ursprünglich nur 8GB Speicher gehabt, das auf 32GB aufgerüstet wurde.





Die Wahl fiel auf Crucial CT102464BF160B - 8GB DDR3L-1600 SODIMM x 4 = 32GB aufgrund guten Preis-Leistungs-Verhältnisses die sich auch bewiesen hat.




VMs als Haupt-BS gegen Distroerstellung

Ubuntu-Installationen sind nicht portabel oder nur in Spezialfällen wie es unter dem Überschrift: Portabilitätsbeschränkungen von Ubuntu-Systemen weiter oben, erläutert wurde.

Es wurde auf die Frage eingegangen welche ist ein leichter und praktischer Weg eine bestehende Installation überall, als Spiegelbild einzusetzen. Gedanken über eine mögliche Lösung sind über zwei allgemeine Überschriften geordnet, mit Virtualitäteinsetzung und ohne, oder mit einem Mix von beiden.

Eine Einsetzung der Ansätze unter den zwei folgenden Rubriken sind für ein künftiges Projekt geplant.

Distroerstellung

Wenn das BS installiert wird, werden hardwarespezifische Treiber installiert und entstehen dazugehörige Konf-Dateien. Im Rahmen des Projekts wurde recherchiert ob und wie wäre es möglich eine bestehende Installation auf anderer Hardware einzusetzen.

Eine leicht einsetzbare Funktion die nach neuen Geräten aller Art sucht, und dann die alten Treiber durch neue ersetzt, existiert nicht.

Manche Distros wie MX und Manjaro, verkünden dass die Möglichkeit gibt, das BS anzupassen und danach eine eigene Distro daraus zu erzeugen. Bei den meisten von diesen Lösungen, was erreicht wird, ist neue Pakete in die Vorgabeinstallations-ISO hinzufügen, alias Remastering, aber kein Spiegelbild einer bestehenden Installation samt aller Konfigurationen die der Benutzer unternommen hat.

Das kann aber erreicht werden durch einen mehrstufigen Prozess bekannt als „Live CD Customization From Scratch“ der unter https://help.ubuntu.com/community/LiveCDCustomizationFromScratch ausführlich dokumentiert ist.

Virtualisierungslösung

Virtualisierung einer physischen Installation

Wir können eine physische Installation in eine KVM-VM umwandeln, mit Virt-p2v, was zusammen mit den anderen Virt-Paketen installiert wird, muss aber als Live-USB eingesetzt werden.

Das kann entweder mit virt-p2v-make-disk oder mit virt-p2v-make-kickstart erreicht werden.

Die erstellte VM wird dann auf anderer Hardware mittels KVM oder Xen eingesetzt.

Netzwerk-Synchonisierung der VMs

Die VMs können durch das Netzwerk mit

# rsync -aAHXsh --inplace --delete --info=progress2,stats2 \

e- ssh <quelle> \

benutzer@ip-adresse:<ziel>

synchronisiert werden.

Fazit: Distroerstellung gegen Virtualisierung

VMs brauchen immer mehr CPU-Zyklen im Vergleich mit einer physische Installation für die gleiche Aufgabe. Dieser Unterschied fällt nicht gleich auf mit Befehlszeile-Programmen oder LibreOffice-Anwendungen.

Wie es unter der Rubrik „Videobezügliche CPU-Zyklen“ erläutert wurde, Verbesserungsmöglichkeiten benötigen Kernkonfigurationen, neuste Hardware und/oder GPU-Durchreichung. Wenn die VMs portabel werden sollen, die GPU-Durchreichung wird sehr aufwendig.

Eine angepasste Distro zu erstellen ist die andere Option, die auch kompatibel mit älterer Hardware ist.

Ein VM-Masseneinsatz ist einfach wenn die VMs als Server oder als Test-BSs verwendet werden, aber ihre Verwendung für normale Büroarbeit, die z.B. Videokonferenzen einschließt, wird mit anderer Hardware in einem künftiges Projekt recherchiert werden.

Rsync-Zusammenfassung

Rsync wurde im Projekt mehrmals eingesetzt. Hier folgt eine Zusammenfassung einiger wichtigen Fälle.

BS synchronisieren

rsync -aAHXsh --delete --preallocate --info=progress2,stats2 <quelle> <ziel>

EXT-Daten synchronisieren

rsync -aAXsh --delete --preallocate --info=progress2,stats2 <quelle> <ziel>

In diesem Fall, fällt nur die Fahne -H für harte Links, die aber eingesetzt werden muss falls welche vorhanden sind.

EXT-DATEN über SSH synchronisieren

rsync -aAXsh --preallocate --info=progress2,stats2 -e ssh <quelle> benutzer@<ip-adresse>:/<ziel>

QCOW2-VD-Datei synchronisieren

rsync -aAHXsh --inplace --delete --info=progress2,stats2 <quelle> <ziel>

NTFS-Daten synchronisieren

rsync -rtsh --modify-window=1 --delete --info=progress2,stats2 <quelle> <ziel>

NTFS und EXT weisen Unterschiede an den Zeitstempeln auf. Die Option --modify-window=1 sorgt dass wenn eine Datei entweder neuer oder älter um eine Sekunde ist, der Zeitstempel als gleich angesehen wird.

Zudem, von der Fanne -a=rlptgoD, bleibt nur -rt übrig, weil alles andere unter NTFS nicht unterstützt wird, wie auch -AHX.

Ein Beispiel mit EXT-Daten

Eine externe Festplatte anschließen, die betreffende Sicherungspartition einhängen, Quell- und Zielpartition drucken, und das No-upload-Verzeichnis synchronisieren.




Anschließend, die Zielpartition aushängen und, mittels udisksctl das externe Laufwerk ausschalten.





Electrum-Wallet für Bitcoins

Mit einem Crypto-Wallet können wir Münzen an andere Wallets überweisen, und falls das Wallet am Netzwerk durch einen Proxy verbunden wird, können die Überweisungen einigermaßen privat sein.

Die Verwendung von Proxys wurde im Projekt nicht getestet.




Electrum wurde für das Projekt ausgewählt, weil so gut wie das älteste und sicherste Open-Source Bitcoin-Wallet ist.

Überprüfen der Schlüsselsignaturen

Wir laden die Programmdateien von https://electrum.org/#download herunter und die ASC-Datei, die wir brauchen um die Schlüsselunterschriften zu überprüfen.

Zuerst

$ gpg --verify Electrum-4.0.9.tar.gz.asc


gpg: assuming signed data in 'Electrum-4.0.4.tar.gz'

gpg: Signature made Do 15 Okt 2020 21:21:40 EEST

gpg: using RSA key 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6

gpg: Can't check signature: No public key


Wir werden jetzt den oberen RSA-Schlüssel verwenden um den öffentlichen Schlüssel zu importieren.

$ gpg --keyserver pool.sks-keyservers.net --receive-keys 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6



gpg: key 2BD5824B7F9470E6: public key "Thomas Voegtlin (https://electrum.org) <thomasv@electrum.org>" imported

gpg: Total number processed: 1

gpg: imported: 1



Jetzt die ASC-Datei verfizieren, die die Signaturdatei ist.

$ gpg --verify Electrum-4.0.4.tar.gz.asc



gpg: assuming signed data in 'Electrum-4.0.4.tar.gz'

gpg: Signature made Do 15 Okt 2020 21:21:40 EEST

gpg: using RSA key 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6

gpg: Good signature from "Thomas Voegtlin (https://electrum.org) <thomasv@electrum.org>" [unknown]

gpg: aka "ThomasV <thomasv1@gmx.de>" [unknown]

gpg: aka "Thomas Voegtlin <thomasv1@gmx.de>" [unknown]

gpg: WARNING: This key is not certified with a trusted signature!

gpg: There is no indication that the signature belongs to the owner.

Primary key fingerprint: 6694 D8DE 7BE8 EE56 31BE D950 2BD5 824B 7F94 70E6



Wir berücksichtigen „Good signature“ an der Ausgabezeile vier, also alles trotzt Warnungen in Ordnung.

Das Programm wird mit PIP „Perl Installation Program“ installiert.

$ python3 -m pip install --user Electrum-4.0.9.tar.gz

Electrum vom Terminal ausführen mit

$ electrum

Optionale Abhängigkeiten fehlen

Cryptodomex

Es kann sein dass wir die Warnung bekommen:

W | crypto | found module 'Cryptodome' but it is too old: 3.6.1<3.7

Lösung umgeschrieben von https://bitcointalk.org/index.php?topic=5310339.msg56127626#msg56127626

Es geht um eine optionale Abhängigkeit, Cryptodomex, und die wird installiert mit

$ python3 -m pip install -U pycryptodomex



Collecting pycryptodomex

Downloading pycryptodomex-3.9.9-cp38-cp38-manylinux1_x86_64.whl (13.7 MB)

|████████████████████████████████| 13.7 MB 5.2 MB/s

Installing collected packages: pycryptodomex

Successfully installed pycryptodomex-3.9.9

Zbar-tools

Die Meldung

failed to load zbar. exceptions:

bedeutet es fehlt uns die Möglichkeit einen QR-Kode zu scannen. Wir müssen nur

$ sudo apt install zbar-tools

Startwert oder Seed

Das sind zwölf Wörter, mit denen wir unser Wallet in einem anderen Rechner wiederherstellen können.

Privater Hauptschlüssel oder Master Private Key (MPK)

Der Seed ist vom MPK erzeugt worden, und letzterer kann alle unseren privaten Schlüssel generieren.

Der MPK wird extrahiert mit

$ electrum getmasterprivate --offline -w <wallet-pfad>

Native-Segwit gegen Legacy

Ältere (legacy) BTC-Adressen fangen mit „1“, der Skript-Typ ist P2PKH, die sind überall kompatibel, aber die Überweisungskosten sind hoch. Zudem unterstützen sie nicht das neue Lightning-Transaktionsystem.

Bei Native-Segwit, von „Segregated Witness“, die BTC-Adressen fangen mit „bc1“ an und Skript-Typ ist P2WPKH. Die sind auch als BECH32 bekannt. Hier sind die Transaktionsgebühren niedriger, Lightning wird unterstützt, die sind aber noch nicht überall eingesetzt.






Eingenommen wir wollen aus Sicherheitsgründen unsere BTCs in ein neus Wallet überweisen, weil wir einen neuen Startwert haben wollen. Wir können den Starwert im bestehnden Wallet nicht ändern, das würde die Adressen ändern.

Transaktionsgebühren dynamisch gestalten

Da die Blockchain von Transaktionen oft sehr belastet ist, müssen wir mehr an Transaktionsgebühren zahlen, oder länger warten. Die Gebühren können insofern dynamisch gestaltet werden, kurzum Replace-By-Fee (RBF). Nach der Absendung der Überweisung und falls die Transaktionsbestätigung länger dauert als wir wollen, können die Gebühren manuell gesteigert werden.

Mit der Auswahl „Transaktion anzeigen“ sehen wir „Position im Mempool: XX MB von oben“. Wenn die MBs steigen es bedeutet dass wir mehr Zeit bis zur Bestätigung brauchen und vice versa.






Es ist auch möglich dass der Empfänger eine ergänzende Gebühr zahlt, alias Parent-Pays-For-Child (PPFC).

Wallets verschiedener Software erstellen

Im folgenden Link https://bitcointalk.org/index.php?topic=5324164.msg56576204#msg56576204 wird erläutert dass die privaten Schlüssel nie in eine andere Wallet-Software importiert werden sollten, weil dadurch die Gefahr steigt die Münzen von möglichen Bugs oder anderen Problemen zu verlieren. (Umgeschrieben und übersetzt.)

Die Münzen sollten stattdessen immer überwiesen werden, aber im Fall einer gesamten Überweisung, können die Transaktionskosten nicht mehr gestiegen werden, wenn keine Münzen im Wallet übrig bleiben.

Diesbezüglich am besten zuerst recherchieren oder eine Testüberweisung durchführen um die Equilibrium-Kosten für eine Überweisung die nicht länger als 48 Stunden dauert herauszufinden. Derzeitig (März 2021) liegen die entspechenden Gebühren bei 20Sat/Byte.

BTC Börsenplätze als Nebenbemerkung

Bezüglich Segwit- und Legacy-Adressen, müssen wir merken dass es noch Börsenplätze gibt die nicht mit SegWit kompatibel sind.

Ein guter Börsenplatz für die europäische Union, wäre Kraken, dass mit der Fidor Bank mit Sitz in München zusammen arbeitet, als Vorgabe-Bank in der EU.

Kraken ist auch der einzige Crypto-Börsenplatz dass jemals in Reddit als bester Bitcoin-Börsenplatz des Jahres, 2014 gewählt wurde.

Des weiteren die Wartezeit für einen live Kundenservice nach Erfahrungen des Verfassers, war höchstens 15 Minuten und die KYC (Know Your Customer) Verifizierung hat nur einen Tag gedauert. Bei Binance hat die gleiche KYC-Verifizierung zwei Wochen gedauert.

Die Tradingspreads sind nicht so niedrig wie die von Binance, aber dort müssen wir nach Forenberichten auch stundenlang auf Hilfe warten.

Sicherheitsmaßnahmen und Datenverschlüsselung

Rclone

Rclone ist eine sehr gute Wahl um unsere Daten in der Cloud zu speichern und synchronisieren. Das Programm ist ausgereift, kompatibel mit den meisten Cloud-Backends, bietet unzählige Optionen und wahlweise Verschlüsselung. Die folgenden Beispiele wurden mit dem Google-Drive-Backend durchgeführt.

Zuerst müssen Remotes erstellt werden. Wenn verschiedene Google-Konten vorhanden sind, kann ein einzelner Remote für jedes Konto erstellt werden. Für die Verschlüsselung erstellen wir einen Crypt-Remote innerhalb eines normalen Remotes.

Das soll ein Ordner im Google-Drive sein. Alles was mit diesem Ordner synchronisiert wird, ist verschlüsselt. Darüber hinaus die Remotes können lokal, mit dem Fuse-Dateisystem unverschlüsselt einhängt werden.

Client-ID erstellen

Rclone verwendet eine eigene Client-ID für den Google-Drive, die ist aber langsam, weil sie viel eingesetzt und auch deswegen gedrosselt wird. Als erstes müssen wir deshalb, eine eigene erstellen mittels Anweisungen von https://rclone.org/drive/#making-your-own-client-id.

Folgend im Google-Drive nachdem wir eine Client-ID erstellt haben.






Unter der Rubrik Credentials, oben links, haben wir schon unsere Client-ID und das Client-Geheimnis.






Remotes

Mit dem Befehl

$ rclone config

können Remotes verwaltet werden: konfiguriert, erstellt, gelöscht usw., durch die Auswahl von Dialog-Optionen, die meistens selbsterklärend sind.

Bei der Erstellung eines neuen Remotes, kann es zwischen vielen Backends ausgewählt werden. Google-Drive ist die Nummer 13. Unten wird die Konfiguration von Bkp-gdrive als Beispiel angezeigt.











Wenn ein neues Remote erstellt wird, soll die Option Refresh ausgewählt werden, so dass wir unsere App (Client-ID), von einem Google-Konto genehmigen: Daraufhin öffnet sich der Browser, dann Konto auswählen und genehmigen. Weil die App die wir erstellt haben, (noch) nicht verifiziert ist, kommt eine Sicherheitswarnung, die wir abweisen müssen.

Crypt

Die Konfiguration von Crypt ist anders. Der Wert vom Crypt-Remote ist, wie unten angezeigt, der Pfad bkp-gdrive:/gdata, also Crypt ist ein verschlüsseltes Verzeichnis innerhalb des Remotes Bkp-gdrive. Was in diesem Ordner kopiert wird, ist verschlüsselt, was außerhalb von Gdata befindet, aber unter Bkp-gdrive, ist unverschlüsselt.





Folgend ein lokales Verzeichnis wird mit Crypt synchronisiert. Crypt bezieht sich auf den Ordner Gdata.





--fast-list - Es kann damit schneller gehen, verbrauchen wir aber mehr Speicher.

--user-agent - Damit das Cloud-Backend unser Programm richtig versteht.

--modify-window=1s - Zwischen unterschiedlichen BSs können die Zeitmarken leicht abweichen. Durch diese Option geben wir eine Toleranz von einer Sekunde.

--checkers - Wie viele Checkers parallel laufen sollten.

--transfers - Wie viele parallele Transfers.

--tpslimit - Ein Limit in der Transaktionen pro Sekunde setzen, damit uns das Cloud-Backend, die Geschwindigkeit nicht drosselt.

--tpslimit-burst - Einen Stoß geben für die Zeit die Transaktionen unter dem Limit oder inaktiv waren, aber den langfristigen Durchschnitt nicht über den Wert des --tpslimit erhöhen.

--contimeout - Verbindungs-Timeout setzen.

--drive-chunk - Diese Option kann leicht den verwendet Speicher multiplizieren bis zum BS-Einfrierung. 128M ist eine sicherere Konfiguration.

-P - Damit wir den Fortschritt sehen.

Je nachdem wie viele Dateien synchronisiert werden und wie groß sie sind, kann die Geschwindigkeit sehr variieren. Am Anfang steigt die Geschwindigkeit sehr, wird sie aber allmählich viel niedriger.

Um Teiluploads nicht wieder von Anfang uploaden zu müssen, können wir mit Strg+Z pausieren, statt mit Strg+C abzubrechen, und dann mit $ jobs und $ fg <job-nummer> wiederaufnehmen genau so wie mit Rsync. Es kann aber sein, dass nachher die Geschwindigkeit sehr gering ist, dann müssen wir das Programm zwangsläufig beenden und neu anfangen.

Duplikate

Manchmal könnte es vorübergehende Fertigstellungen von Upload-Fehlern geben, wobei der Upload erfolgreich war, aber aufgrund von Fehlern eine Datei erneut synchronisiert wird, was Duplikate erzeugen könnte. (Übersetztes Zitat vom Benutzer eharris https://github.com/rclone/rclone/issues/4429.)

Wenn es Duplikatmeldungen gibt, der Sync-Unterbefehl kann sie nicht mehr synchronisieren. Dazu muss der Unterbefehl Dedupe mit der Fahne --dedupe-mode=first z.B., womit die erste Datei erhalten wird und alle anderen Duplikate gelöscht werden.

Hier sehen wir dass ein Duplikat gefunden wurde.




Daher, statt dem Unterbefehl Sync, verwenden wir hier Dedupe wie es oben erwähnt wurde. Außerdem, in diesem Fall existiert keine Quelle, nur der Zielordner.





Gocryptfs

Gocryptfs https://nuetzlich.net/gocryptfs/ ist ein gestapeltes kryptographisches Dateisystem. Gestapelt weil es über das normale Dateisystem funktioniert https://wiki.archlinux.org/index.php/Data-at-rest_encryption#Stacked_filesystem_encryption, und damit können wir einzelne Ordner verschlüsseln.

Gestapelte Dateisysteme geben uns die Möglichkeit im laufendem BS empfindliche Daten verschlüsselt zu bewahren im Gegensatz zur Gesamt-Datenträger-Verschlüsselung, die außerdem das System verlangsamt, die Abnutzung des Datenträgers erhöht, wie auch das Risiko eines unbehebbaren BS-Ausfalls.

Das Verzeichnis wo die verschlüsselten Daten gespeichert sind, das Unterverzeichnis, wird mittels des Fuse-Dateisystems auf dem Oberverzeichnis eingehängt wo die Daten lesbar werden, bis das Oberverzeichnis wieder ausgehängt wird. (Umgeschrieben von den zwei oberen Links).

Das Programm soll Verbesserungen an den Sicherheitslücken vom alten Encfs bringen, und ist schnell und einfach. Gut um bestimmte Verzeichnisse im Laptop zu verschlüsseln https://defuse.ca/audits/gocryptfs.htm, aber für die Cloud lieber Rclone verwenden, das über eine eigene Synchronisierungs-Subroutine verfügt.

Zuerst ein verschlüsseltes Verzeichnis erstellen, initiieren und die Conf-Datei woanders speichern wie folgt.




Wir nehmen ein Beispiel-Verzeichnis mit Dateien und Unterordnern dass „Corolla Servicing“ heißt, und das wollen wir rekursiv verschlüsseln.

Das Oberverzeichnis erstellen

$ mkdir mountfs

Dann mit der Option -config kann die Conf-Datei von einem benutzerdefinierten Speicherort verwendet werden, um das Verzeichnis encrypted auf mountfs einzuhängen.





„Corolla servicing“ in das Mountfs-Verzeichnis kopieren wo die Dateien verarbeitet werden können, aber gleichzeitig erscheinen sie verschlüsselt im Ordner Encrypted.



Es ist interessant dass Gocryptfs eine Fsck-Option um nach Korruption zu suchen bietet, was die meisten Programme der Kategorie nicht tun. Allerdings bei einigen GBs dauert es sehr lang mit der Fsck-Subroutine.




Wir listen jetzt den Inhalt vom Mountfs der die verschlüsselten Daten unverschlüsselt enthält, und mittels Fusermount, Mountfs anschließend aushängen. Der Inhalt von Encrypted ist immer verschlüsselt, und enthält auch eine Datei die Gocryptfs.diriv heißt.




Die Gocryptfs.diriv-Datei sorgt für die Verschlüsselung der Ordner- und Dateinamen. Jedes Verzeichnis und Unterverzeichnis enthält eine solche Datei. Wenn eine Diriv-Datei gelöscht wird, alles in dem Ordner und unterhalb verschwindet.

Es sind Anweisungen vorhanden um die Daten zurück zu holen, und ihnen neue Namen zu zuweisen, die kurzen Tests die im Projekt unternommen wurden, waren entsprechend aber nicht gelungen.

Es heißt also zumindest von der Diriv-Datei des Root-Verzeichnisses auch eine Sicherungskopie zu erstellen. Falls wir dort einen Namen ändern sollten, müssen wir die alte Sicherungskopie durch eine neue ersetzen.

Bei verschlüsselten Daten ist es noch wichtiger ständig Sicherungskopien zu erstellen.

Deswegen die Diriv-Datei sollte auch in das Verzeichnis Backup-conf kopiert werden, und noch dazu eine Kopie des verschlüsselten Verzeichnisses Encrypted erstellen mit dem Namen Encrypted1, und daraufhin encrypted1 auf Mountfs einhängen um zu testen ob alles funktioniert.





Schließlich „Corolla servicing“ löschen, wobei der Ordner jetzt nur verschlüsselt in zwei Kopien existiert, Encrypted und Encrypted1. Die Ordner Encrypted1 und Backup-conf1 auf zwei externe Festplatten kopieren oder verschieben und jegliche Änderungen mit Rsync synchronisieren wie unter der Rubrik EXT-Daten synchronisieren erläutert wird, weiter oben.




Daten-Korruption

Es sind vielerorts Meldungen vorhanden, dass mit verschiedenen Verschlüsselungs-Programmen, Daten-Korruption während der Synchronisierung vorkommen kann.

Ein Programm wie Rclone unterliegt keiner solchen Gefahr weil Synchronisierung und Verschlüsselung, Teile der gleichen Anwendung sind.

Wenn aber ein kryptographisches Dateisystem mit einer Anwendung synchronisiert wird, dass von den Programmentwicklern nicht ausführlich getestet wurde, Korruption könnte entstehen.

Der Gocryptfs-Entwickler, rfjakob, empfiehlt Rsync, aber wenn die Daten nur mit externen Festplatten synchronisiert werden, ist es gegen Korruption besser zwischen Oberverzeichnissen zu synchronisieren, oder die verschlüsselten Verzeichnisse ausgehängt mittels Rsync zu updaten.

Tar mit GPG

Wichtige Daten sollten durch einen zweiten Weg auch verschlüsselt und gesichert werden. Vom Oberverzeichnis des Gocryptfs können wir die Dateien kopieren und Gpg einsetzen.

Gpg ist ein gutes Verschlüsselungs-Programm, kann aber nur einzelne Dateien verschlüsseln. Deswegen, archivieren wir unsere Daten zuerst mit Tar, und die Ausgabe ins Gpg pfeifen.

Umgekehrt, mit Gpg entschlüsseln und die Ausgabe ins Tar pfeifen.




7z

Falls es nötig wird, verschlüsselte Dateien in einem Windows-System zu entschlüsseln, kann dementsprechend 7z eingesetzt werden.

Verschlüsseln wir mit

7z <archiv-name> <dateien> -p

Entschlüsseln mit

7z x <archiv-name>

Stapel-Umbennenug von Dateien

Wenn wir Daten klonen und synchronisieren, wollen wir unter Umständen auch mehrere Dateien gleichzeitig umbenennen.

Das folgende Beispiel verwendet einen einfachen zusammengesetzten Befehl von Bash, im ersten Fall um Buchstaben zu ersetzen, und im zweiten, Buchstaben zu löschen.




Schlussfolgerungen

Beweggrund

Open-Source-Software verleiht uns das Motiv neues zum Lernen, kreativ zu werden, und unsere Systeme leichter an unsere Bedürfnisse anzupassen.

Befehlszeile-Lernen

Wir lernen schnell dass für Aufgaben wo wir früher nach speziellen GUI-Programmen suchen mussten, reicht jetzt eine halbe Befehlszeile, daher Zeit muss am Befehlszeilelernen investiert werden.

Closed-Source-BSs vermeiden

Der Inhalt von Closed-Source-BS ist nur zum eigenen Entwickler bekannt und sollte möglichst vermieden werden. Ein solches Konzept wird dann unerlässlich wenn Missionskritischedaten verwalten werden.

Ubuntu-Zuverlässigkeit hat sich bewährt

Täglich getestet für länger als ein Jahr. Pakete wurden auch durch PPAs, DEB-Dateien und Snaps installiert und KVMs laufen ständig.

Kurz nach der Ubuntu-Installation werden manchmal Fehlermeldungen angezeigt, deren Fenster, Infos zu der Quelle des Problems enthält. Es wurde immer hinsichtlich nachgegangen, wobei die Lösungs-Vorgehensweisen waren entweder selbsterklärend oder musste zuerst gegoogelt werden.

Alle solchen Probleme wurden dank der großen Ubuntu-Gemeinde leicht gelöscht und kam seit einem Jahr keine weitere Fehlermeldung.

Paketverwaltung

Die Paketverwaltung hat nie Fehler und Instabilität hervorgerufen und bietet mehrfache Optionen. Die Repos sind so gut organisiert, dass es selten woanders nach Programmen gesucht werden musste.

Das Look-and-Feel wurde durch Erweiterungen sehr angepasst und die Vielfalt von verfügbaren Programmen ist viel größer als anfangs gedacht.

PDF-Bearbeitung

Durch eine ergänzende Einsetzung von Programmen und Tools können Pdf-Dokumente hinreichend editiert werden. Das Pdf2odt-Skript von Gutschke beweist was durch Kreativität anhand eines kurzen Skripts erreicht werden kann.

Für einen professionelleren Gebrauch sollte das Qoppa-Pdf-Studio gekauft werden.

LibreOffice

Vor allem Writer und Calc wurden im Projekt ein ganzes Jahr weitgehend verwendet. Am seltenen Fall dass eine Funktion nicht vorhanden ist, kann eine Umgehungslösung angewendet werden, wie die Verwendung einer Symlink-Datei um die fehlende geteilte Ansicht unter Writer zu ersetzen.

Des Weiteren, es ist viel effektiver wenn die native ODF-Formatierung eingesetzt wird. Es ist vorgekommen dass am Anfang manche DOC- und XLSX-Dateien nicht richtig funktionierten wenn sie als ODT- und ODS-Dateien gespeichert wurden.

In einem solchen Fall, erst alles aktualisieren und dann mit dem Befehl apt search nach fehlenden und zusätzlichen Paketen suchen und nachinstallieren.

Vernetzung

SSH (-X) und NoMachine-RD haben überall einwandfrei funktioniert.

BS klonen und aktualisieren

Der Klon-Ansatz wurde ausgiebig getestet, weil drei mal im Monat ein aktualisierter Klon als Vorgabe-BS ohne jegliche Probleme verwendet wird.

Es sollten immer mechanische externe Festplatten aber keine USB-Sticks oder SSD-Datenträger.

BS-Portabilität

Klone sind aber nicht portabel. Nur Installationen auf externen Festplatten können mit einigen Problemen, von einer anderen Maschine gebootet werden.

Die Portabilitätsbeschränkungen der physischen BS-Installationen können vermindert werden durch eine „Live CD Customization From Scratch“, also eine Distro-Erstellung aus einem jeweiligen Zustand des BS, was für ein künftiges Projekt geplant ist.

KVMs

KVM Virtuelle Maschinen (VMs) werden am Besten mit Qcow2 virtuellen Datenträgern eingesetzt, können anhand von SSH (-X) vernetzt werden und CPU-Zyklen für Befehlszeile- und LibreOffice-Programme sind niedrig. Einige Klone können gleichzeitig betrieben werden gemäß dem verfügbaren RAM. VMs beanspruchen keine CPU wenn die pausiert sind und können auf diese Weise im Host parat stehen.

Klon-Erstellung und -Updaten werden anhand von Virt-clone und Rsync jeweils unternommen. Rsync wird hierbei mit der Fahne --inplace verwendet, die die einzige betreffende Möglichkeit für Qcow2-Dateien ist, die aber leider eher kopiert als updatet.

Windows-VMs

Umständlichkeits- und Boot-Probleme der WVMs wurden weiter oben erwähnt.

Andererseits Linux erweist sich kompetent für alle Aufgaben, solange wir etwas Zeit nehmen um die Aufgabe zu recherchieren. Ergänzend können auch Linux-Closed-Source-Anwendungen eingesetzt werden.

WVMs haben nicht nur ein hohes Umständlichkeit-Leistungs-Verhältnis, weil wenn die weitgehend und mit Internet-Zugang eingesetzt werden, ist das Sicherheits- und Virenrisiko so hoch dass die Anwendung von z.B. Crypto-Hot-Wallets praktisch unbrauchbar gemacht wird.

KVM-GPU-Beschleunigung

Ubuntu-Vms können alltäglich verwendet werden solange keine Video-Anwendungen eingesetzt werden, infolge erhöhter CPU-Zyklen. Außer der üblichen Konfiguration mit QXL-Treiber und Spice-Client, der Virgil3d Paravirtualitätstreiber wurde auch eingesetzt, aber ohne betreffende Verbesserung.

Andererseits, eine GPU-Durchreichungslösung ist aufwendig und beschränkt die Portabilität der VM.

Ein künftiger Versuch soll durch die Intel-GVT-g-Erweiterung erfolgen. Dazu wird aber neuere Hardware benötigt. Wenn die Video-CPU-Zyklen sich erniedrigen lassen dann macht auch mehr Sinn die Möglichkeit der Virtualisierung einer physischen Installation mithilfe des Virt-p2v.

Viren - Crypto-Wallets

Durch die Einbehaltung der Vorgabe-Regeln für die Verwendung des BSs, nach vielseitigem täglichen Gebrauch von Ubuntu für länger als ein Jahr, sind Viren und Co. ein fremdes Konzept.

Eine perfekt Umgebung für die Verwendung von Crypto-Wallets. Electrum, ein der ältesten und sichersten Wallets, wurde problemlos eingesetzt.

Verschlüsselung

Rclone

Daten werden in der Cloud mit Rclone synchronisiert und verschlüsselt. Rclone ist kompatibel mit sehr vielen Cloud-Backends und bietet unzählige Optionen um die Verbindung mit dem jeweiligen Backend zu optimieren.

Um die bestmögliche Geschwindigkeit zu erreichen muss zuerst eine eigene Client-ID für das entsprechende Cloud-Backend erstellt werden.

Gocryptfs - GPG

Das gestalte kryptographische Gocryptfs-Dateisystem wird seit einiger Zeit eingesetzt ohne Daten-Korruption oder andere Probleme.

Eine Gesamt-Datenträger-Verschlüsselung birgt vielmehr das Risiko eines totalen Datenverlustes und eines Versagens des BS.

Gocryptfs ist einfach, stabil, und verfügt über eine Integritäts-Subroutine. Eine Zusammenführung von Tar und Gpg wird ergänzend angewendet.



Literaturquellen

alphr.com

appuals.com

ark.intel.com

ask.fedoraproject.org

ask.libreoffice.org

askubuntu.com

astroa.physics.metu.edu.tr

bhphotovideo.com

bitcoin.stackexchange.com

bitcoinops.org

bitcointalk.org

bugs.launchpad.net

bugzilla.redhat.com

buybitcoinworldwide.com

bytesized-hosting.com

centos.org

citrix.com

coderwall.com

coindesk.com

community.kde.org

community.spiceworks.com

computingforgeeks.com

console.cloud.google.com

creativecommons.org

crucial.com

cyberciti.biz

debian.org

deepin.org

defuse.ca

deonsworld.co.za

distrowatch.com

docs.fedoraproject.org

docs.gimp.org

documentation.libreoffice.org

documentation.suse.com

elearn.ellak.gr

electrum.org

electrum.readthedocs.io

en.bitcoin.it

extensions.gnome.org

extensions.libreoffice.org

forums.thinkbroadband.com

fosslinux.com

freecodecamp.org

geeksforgeeks.org

gemini.com

github.com

gnu.org

groups.google.com

help.crypto.com

help.libreoffice.org

help.ubuntu.com

howtoforge.com

howtogeek.com

hpc.uni.lu

http://ftp.riken.jp/Linux

http://linuxcommand.org

ibm.com

imagemagick.org

itsfoss.com

kde.org

kifarunix.com

kraken.com

kraxel.org

kubuntu.org

libguestfs.org

libreoffice.org

libreofficehelp.com

libvirt.org

Linux Handbuchseiten

linux-community.de

linux-kvm.org

linux-magazine.com

linux.com

linux.die.net

linuxconfig.org

linuxhint.com

linuxinsider.com

linuxize.com

linuxjournal.com

linuxprograms.wordpress.com

linuxuprising.com

manjaro.org

medium.com

mondorescue.org

mxlinux.org

namecheap.com

networkinterview.com

nuetzlich.net/gocryptfs

onapp.com

openoffice.blogs.com

opensource.com

openstack.org

opensuse.org

ostechnix.com

pediaa.com

peteris.rocks

phoenixnap.com

phoronix.com

praxistipps.chip.de

proxmox.com

putorius.net

rclone.org

reddit.com

redhat.com

researchgate.net

rodsbooks.com

searchservervirtualization.techtarget.com

section.io

security.stackexchange.com

serverfault.com

snapcraft.io

sourcedigit.com

spice-space.org

ss64.com

stackoverflow.com

superuser.com

systutorials.com

techmint.com

techrepublic.com

thetinhat.com

ubuntu.com

ubuntuforums.org

ufsexplorer.com

unix.stackexchange.com

userbase.kde.org

virgil3d.github.io

vitux.com

wiki.alpinelinux.org

wiki.archlinux.org

wiki.documentfoundation.org

wiki.ubuntu.com

wiki.xenproject.org

wikipedia.org

windowcentral.com

xenproject.org

youtube.com