Schlagwort-Archive: Linux

BitBastelei #204 – Linux-Shell-Erweiterung: Powerline für Bash/vim/tmux & Co

BitBastelei #204 - Linux-Shell-Erweiterung: Powerline für Bash/vim/tmux & Co

(20 MB) 00:13:32

2016-07-17 11:00 🛈

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/07/powerline-mini-300×59.pngAls Bastler arbeite ich recht viel auf der Linux-Konsole – ein mächtiges Werkzeug, aber nicht unbedingt übersichtlich. Mit dem Tool “powerline” kann man mit überschaubarem Aufwand die Shell aufhübschen und um diverse Widgets ergänzen. Während Dinge wie Wettervorhersage für mich eher nach unnötiger Spielerei aussehen sind z.B. Statusinformationen in GIT-Ordnern oder der aktuelle Batteriezustand wertvolle Helfer.

Die Installation kann bei Arch, Gentoo und Debian über bereitgestellte Pakete erfolgen, alternativ lässt sich der distributionsunabhängige Python-Paketmanager “pip” verwenden. Alle Installationsmethoden werden in der Doku beschrieben.

Konfigurationen

https://gist.github.com/adlerweb/14f7543479645483b01e679d7ca307b7

 

virt-manager/libvirt: Installation nicht möglich: virtlogd-sock

Beim Erstellen einer neuen VM über virt-manager erhielt ich heute folgende Meldung:

Ursache ist das Logging, welches in einen eigenen Dienst ausgelagert wurde. Neben libvirtd muss nun auch virtlogd vor dem Start der VM geladen werden. Für systemd-Nutzer heißt das also…

 

Gentoo: Pakete von Distcc/pump ausnehmen

Verteiltes Kompilieren mit distcc und pump macht vor allem auf langsamen Systemen eine Menge Sinn. Leider vertragen nicht alle Pakete diese Lastverteilung, so z.B. mysql/mariadb. Um einzelne Pakete von distcc oder pump auszunehmen geht man wie folgt vor:

Folgende Dateien erstellen:

Nun ggf. den Ordner /etc/portage/package.env anlegen und dort – analog zu package.use/package.keywords/… – dateien für die Pakete anlegen, z.B.

So wird z.B. für MariaDB der Pump-Modus abgeschaltet, distcc bleibt jedoch aktiv. Alternativ kann die ebenfalls erstellte no-distcc.conf verwendet werden um das verteilte Kompilieren komplett zu unterbinden.

Synergy 1.7.6 (Pro) unter Gentoo nutzen

Synerwas?

Synergy ist eine Software um eine Tastatus/Maus-Kombination mit mehreren Rechnern nutzen zu können. Bewegt man z.B. die Maus am Haput-PC an den rechten Bildschirmrand steuert man fortan den danebenstehenden Laptop. Sehr praktisch, wenn man viele Systeme nebeneinander stehen hat. Alles konfigurierbar, versteht sich.

Leider hat die Software einen faden Beigeschmack: Zwar ist der Kern Open Source (GPL), wird vom Hersteller aber nur noch gegen Geld zum Download angeboten. Neue Funktionen sind ebenfalls nur noch mit DRM-online-Aktivierung verfügbar und während die Anpassung an neue Betriebssysteme soweit zügig von statten geht ist die Stabilität in meinen Augen eher auf dem absteigenden Ast.

Wie auch immer: Ich komme nicht drumrum. An einem Arbeitsplatz stehen 4 Rechner nebeneinander und ich habe keinen Nerv ständig die Tastaturen zu wechseln. Da ich dank einer Spende aus Full-Open-Source-Zeiten einen Zugang zu den Downloads habe und meine bisherige Version mit Windows 10 und Server 2016 einige Probleme hat heißt es Aktualisieren.

TLS? Proxy? WTF?

Also rauf auf die Webseite, Login-Formular ausgefüllt und … man landet auf einer HTTP-Seite. Auf der das Login-Cookie unverschlüsselt durch die Gegend geht. Great.

Weiter mit dem Windows-Setup. Installieren, aktivieren. Immerhin: Bei der Aktivierung wird offenbar die OS-API verwendet und der Request augenscheinlich per TLS mit OCSP-Abfrage über den Systemproxy übermittelt. Beim anschließenden Download der Plugins ist dann jedoch Schluss: Direktes CONNECT ohne Möglichkeit einen Proxy einzustellen. Ohne direkten Internetzugriff am Rechner also nicht viel Möglichkeiten.

Konfigurationsterror

Die Konfiguration gestaltet sich mühselig, da Dienst und GUI ständig abstürzten. Letztendlich griff ich auf den Texteditor für die Konfigurationsdatei zurück. Das ging in der Vorversion rigendwie besser. Immerhin: Im Betrieb scheint es bisher stabil zu funktionieren.

Linux? Eat my binary!

Etwas mehr Probleme hatte ich jedoch mit Linux: Im Konstrukt ist ein Gentoo-Rechner, welcher ebenfalls gesteuert werden soll. Die aktuelle Version ist dank GPL über Portage verfügbar und schnell kompiliert und installiert. Nach Eingabe meiner Zugangsdaten verwandelt sie sich nach kurzem Plugin-Download zur Pro-Version. Immerhin. Nur Verbinden geht nicht.

Auslöser ist die Pro-Version: Diese kann – im Gegensatz zum OSS-Kern – eine Verschlüsselte Verbindung zwischen den beteiligten Rechnern nutzen, sodass nicht jeder Netznutzer alle Tastenanschläge mitlesen kann. Dieses Pro-Feature ist jedoch nicht in den Quellcodes vorhanden sondern wird als “Plugin” bei der Installation heruntergeladen und in ~/.synergy/plugins/ deponiert. Plugin heißt hierbei .so-Library. In Binär. Natürlich gelinkt gegen Bibliotheken bzw. Dateinamen, die ich nicht habe.

Konkret geht es um folgende Liste:

  • linux-vdso.so.1
  • libpthread.so.0
  • libcurl.so.4
  • libSM.so.6
  • libICE.so.6
  • libXtst.so.6
  • libX11.so.6
  • libXext.so.6
  • libXinerama.so.1
  • libXrandr.so.2
  • libXi.so.6
  • libssl.so.10
  • libcrypto.so.10
  • libdl.so.2
  • libstdc++.so.6
  • libm.so.6
  • libgcc_s.so.1
  • libc.so.6
  • libidn.so.11
  • libldap-2.4.so.2
  • liblber-2.4.so.2
  • libresolv.so.2
  • libgnutls.so.28
  • libgcrypt.so.20
  • libz.so.1
  • libuuid.so.1
  • libxcb.so.1
  • libXrender.so.1
  • libtasn1.so.6
  • libnettle.so.6
  • libhogweed.so.4
  • libgmp.so.10
  • libgpg-error.so.0
  • libXau.so.6
  • libXdmcp.so.6

Die Libraries selbst sollten auf einem Desktop-System meist vorhanden sein, nachinstallieren musste ich jedenfalls bei mir nichts. Problematisch waren jedoch libssl.so.10 und libcrypto.so.10 – diese sind unter Gentoo nicht verfügbar und dürften sich auf OpenSSL mit einer Version >= 1.0 beziehen. Die Dateibenennung scheint dabei von Debian(?) zu stammen und wird bei Gentoo anders durchgeführt. Da hierdurch das Plugin nicht lädt wird es ignoriert und die Verbindung zu dem bereits eingerichteten Windows-Clients schlägt, wegen der fehlenden Cryptofunktion, fehl. Zwar erscheint dies auch im Synergy-Log, versteckt sich aber zwischen den ganzen Connect-Nachrichten und ist schnell zu übersehen:

Als Quick’n’Dirty-Workarround habe ich bei mir die angemeckerten Dateinamen als Symlink auf die echten OpenSSL-Files angelegt.

Zumindest für’s erste ist hiermit das Plugin funktionsfähig und die Software wieder nutzbar. Sonderlich schön ist es trotzdem nicht.

Veeam B&R: “Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: System.Net.Sockets.Socket”

Tolle Meldung, die das Backupsystem “Veeam Backup&Replication” da abwirft:

…heißt es lapidar in der GUI, die sonst nur darüber informiert, dass kein Backup mehr funktioniert. Zwar ist recht klar, dass es am Netzwerk hängen dürfte, da hier aber pro VM-Sicherung mindestens 5 Server involviert sind gestaltet sich das etwas aufwändiger.  Vor allem wenn alle relevanten Systeme fehlerfrei auf ICMP-Ping reagierten.

Tiefer im Log des Jobs fand sich eine Meldung, welche auf einen Fehler des Backupziels hindeutet. In meinem Fall handelt es sich hierbei um einen Linux-Server, welcher übers Netz beschickt wird.

Uhmk? Im Monitoring war nichts zu sehen, außerdem kommt ja der SSH-Header. Schnell mal per KVM auf die Kiste und geprüft:

Also uname sollte also funktionieren. Auch der SSH-Daemon läuft noch. Im Log sind jedoch einige Meldungen, die möglicherweise das Problem beschreiben:

freedesktop? Das ding ist Xless -.-. Übeltäter ist wieder einmal “Server sind ja nur Ausnahmeerscheinungen” Systemd. Dessen Loginmanager bekommt Schluckauf wenn, z.B. im Rahmen von Updated, dbus neu gestartet wird. Als Ergebnis lässt sich PAM bei Logins durchaus mal 15 Sekunden Zeit um in den Timeout zu laufen. Je nach Client/Verbindungsart kann dies jedoch bereits zum Timeout der gesamten Verbindung führen – und nichts geht mehr. um den Fehler zu beheben reicht es aus den Logind neu zu starten:

Warum ein System, was sonst ja auch alles “on demand” startet/stoppt/überwacht, sowas seit offenbar langer Zeit nicht in den Griff bekommt bleibt offen. Ebenso wie die Frage, warum Veeam keine genaueren Fehlermeldungen liefert.

QEMU: Festplatten als SATA/AHCI einbinden

Physikalische Remote-Server aufsetzen macht ohne KVM-IP eher wenig Spaß. Groß ist die Gefahr, dass durch Kernel-Updates oder spielen am Bootloader die Kiste nach einem Reboot nicht mehr bootet. Wäre es nicht praktisch, wenn man die Platten nicht kurz in eine VM werfen und da booten könnte?

QEMU ist – spätestens mit KVM – sicher der schnellste Weg, das übliche -hda bindet die Festplatten jedoch als IDE-Geräte ein. Schlecht, wenn man nur AHCI, also SATA, in fstab, Treibern & Co vorgesehen hat.

Abhilfe schaffen folgende Parameter, welche mir bei Rubénerd über den Weg gelaufen sind:

Wichtig: Hierbei sollte das System im Haupt-OS nicht eingehangen oder Read-Only sein. Sowas ist üblicherweise nur mit einem Rettungssystem möglich, andernfalls kann es zu Dateisystemschäden kommen. Alternativ könnte confinedrv helfen eine Testumgebung zu schaffen.

Now fail already! Wenn der Browser über Umwege XOrg lahmlegt

Ugh. Schon wieder. Das Rattern in der Ecke hat meist eine recht konstante Ursache: Die CPU meines Laptops läuft auf 100% und sorgt für ordentliche Lüfterdrehzahlen. Gehen wir mal auf Ursachensuche:

Bei CPU-Last ist erster Anlaufpunkt natürlich top/htop. In meinem Fall aber leider nicht sehr Hilfreich: Xorg sei der Verursacher. Weites Feld. Aus meiner Erfahrung geht dann der Blick erst mal auf die laufenden Programme. Nicht selten hat sich auf einer geöffneten Webseite eine Flash-Werbung, ein HTML5-Video oder sonstige zappelnde Dinge mit Nervfaktor versteckt und bringen das Rendering in Gang. Leider konnte ich dieses mal nichts finden. Auch der interne Taskmanager von Google Chrome zeigt – anders als in solchen Fällen üblich – keine auffällig hohen Lasten. Um sicher zu gehen halte ich per SIGSTOP alle UI-Programme kurz an – keine Änderung. Es ist also mit hoher Wahrscheinlichkeit keine Grafikausgabe, welche die Probleme auslöst.

Zurück zum Start. Wir wissen, dass Xorg die Last bringt, allerdings vermutlich nicht im Grafikbereich. Schauen wir uns top nochmal genauer an. Die Browser sind noch in SIGSTOP und entsprechend verschwunden. Hinter XOrg macht sich nun dbus breit. Dbus? Kurze Lastspitzen OK, aber Dauerlast? Ein Blick mit dbus-monitor bringt eine Wall-of-log zum Vorschein:

…und das in Endlosschleife. Uhm, ja. mailto? Das sind üblicherweise Links in Webseiten oder Dokumenten um E-Mails zu versenden. Stimmt, ich hatte vor einigen Stunden auf einer Webseite einen Mail-Link angeklickt. Ohne Reaktion.

Offenbar hat sich die DE an eben diesem Maillink festgefressen. “Der angegebene Ort wird nicht unterstützt”. Kein Wunder, denn in den “Standardprogrammen” ist für E-Mails nichts hinterlegt. Anstatt das Ganze aber einfach als Fehlschlag einzuordnen und abzubrechen wird die Aktion in Endlossschleife ständig wiederholt. Da auch Xorg an Dbus hängt (und offenbar nicht sonderlich effizient auf dessen Events reagiert) geht auch dieser in die Knie. Da ich auf die Schnelle keine Möglichkeit fand das dbus-event rauszuwerfen musste ein Dummy-Mailprogramm hinhalten. Event geht rein, Returncode kommt, Dbus gibt Ruhe. Warum nicht gleich so?

BitBastelei #193 – Backups unter Linux » Borg Backup

BitBastelei #193 - Backups unter Linux » Borg Backup

(48 MB) 00:36:23

2016-04-17 11:00 🛈

Existiert kein Backup, sind die Daten nicht wichtig

Diese Aussage ist schön provozierend, treibt gerne Leute in meiner Umgebung zur Weißglut, hat aber einen wichtigen Kern: Wer seine Daten benötigt sollte Datensicherungen haben. Während ich bei den lokalen Servern eine gut funktionierende und getestete Infrastruktur habe liegen mir externe Dienste etwas im Magen. Auf allen Systemen habe ich direkten Zugriff, die Daten sollen übers Netz auf ein Zielsystem gesichert werden. Die Übertragung muss verschlüsselt erfolgen, als zusätzliche Hürde ist die Bandbreite recht gering: Je nach Last kann diese schon mal auf wenige MBit/s sinken oder gar ganz abbrechen. Weiterhin benötige ich schnellen Zugriff auf einzelne Dateien der Sicherung und die Möglichkeit auch ältere Revisionen einer Datei zu erhalten. Hier setzte ich lange Zeit auf rdiff-backup.

Videoinhalt

  • 01:06 Meine Anforderungen
  • 02:51 rdiff-backup // Wie lief mein Backup bisher?
  • 05:10 OwnCloud/BTSync/Sparkleshare
  • 06:33 Unison
  • 07:36 Obnam
  • 10:18 BORG › Was ist BORG?
  • 12:42 BORG › Geschichte
  • 13:39 BORG › Aufbau & Code
  • 14:32 BORG › Sicherheit
  • 15:47 BORG › Kompression
  • 17:39 BORG › Deduplizierung
  • 19:45 BORG › DEMO
  • 33:28 BORG › EOT

rdiff-backup

Das Programm arbeitet über eine SSH-Verbindung und kann nahezu alle unter Linux auftretenden Dateitypen verarbeiten. Auch ACL & Co. ist üblicherweise kein Problem. Wie der Name schon andeutet werden bei bestehenden Dateien nur Änderungen übertragen. Auf dem Zielsystem findet sich nach dem Backup der letzte Stand direkt zugreifbar im Dateisystem – perfekt wenn man nur eine gelöschte Datei schnell zurückspielen muss. Ältere Versionen (bzw. die Differenzen) werden in einem zusätzlichen Ordner gespeichert, über die Software lassen sich ältere Versionen der Dateien dann rekonstruieren.

Eigentlich war ich recht zufrieden mit diesem System. Backupfehler traten nur selten auf, der Restore war einfach und der Ressourcenverbrauch überschauber. Nicht ganz so prickelnd: Die Software, welche auf Python 2 (ja, nicht 3) basiert, hat seit 2009 kein Update mehr gesehen. Zum einen ein Problem wegen der nur schwer noch zu installierenden Python-Version, zum Andern gibt es Gerüchte über mögliche Datenverluste. Auch bei mir hat es zuletzt durch Netzabbrüche das Repository zerlegt, sodass ich mich auf die Suche nach Alternativen machte.

Owncloud, Sparkleshare, BTSync & Co

…sind auf Desktop-Systemen schöne Systeme, für Datensicherungen aber eher wenig geeignet. Zwar gibt es die Möglichkeit auf ältere Versionen zugreifen zu können, die Archivverwaltung ist aber meist nicht sehr flexibel. Auch die Unterstützung erweiterter Attribute ist prinzipbedingt meist nicht gegeben. Größtes Problem für mein Vorhaben: Mit großen Datenmengen kommen solche Programme nicht wirklich klar.

Unison

Unison fällt in etwa in die selbe Kategorie, schien aber besser optimiert. Leider zeigt sich die Revisionsverwaltung für meine Zwecke etwas unflexibel. Auch die genutzte Programmiersprache OCaml ist nicht unbedingt etwas, was für mich leicht anpassbar aussieht. Zuletzt ist auch hier die Unterstützung von Metadaten unter Linux noch ausbaufähig.

Obnam

…wird bei vielen als “Drop-In-Replacement” beworben. Die Funktionen ähneln rdiff-backup, jedoch wird zusätzlich eine Deduplizierung und Verschlüsselung unterstützt. Die Software muss nur auf einem System installiert werden, am Ziel werden “Chunks” abgelegt, ein direkter Zugriff auf Dateien ist entsprechend nicht mehr möglich.

Bei mir wollte die Software nicht sonderlich mitspielen – Backups dauerten ewig, Verbindungsabbrüche führten zu verwaisten Locks und Mangels brauchbarem Verbose-Mode ist nur schwer zu ermitteln was genau die Software aktuell überhaupt versucht zo erledigen.

(Wir sind die) Borg

Der Funktionsumfang von BorgBackup ist Ähnlich zu Obnam: Deduplizierung, Kompression, Verschlüsselung und Co. Der Fork der Software Attic hat vor kurzem die Version 1.0.0 erreicht. Hier ist der direkte Zugriff nicht über ein FUSE-Modul möglich. Mit Ausnahme von dateisystemspezifischen Attributen werden ACLs und Xattr samt den meisten Device-Files und FIFOs mitgesichert.

Erster Eindruck: Scheint recht sauber zu laufen, das Projekt sieht gut dokumentiert aus. Die Optionen erlauben es alle Dateien und laufenden Abläufe auf der Konsole anzuzeigen – gerade bei meiner Konstellation sehr praktisch, da ich so direkt sehe ob überhaupt noch etwas passiert. Obendrein kann man auch gleich die Effizienz von Kompression und Deduplizierung schon während des Backups sehen. Die fehlende Konfigurationsdatei lässt sich über passende Shellscripte kompensieren, führt auf meinem 1080p-Monitor allerdings auch zu einem 4-zeiligen Progammaufruf. Der 200GB-Datensatz eines meiner Server mit 10 Revisionen passt auf etwa 75GB. Minuspunkte gibt es für die Tatsache, dass das Grundsystem (mit Ausnahme von Kompression/Deduplizierung) nicht mit mehreren Threads klar kommt. Gerade bei großen Repositories führt das doch zu der ein oder anderen Wartezeit.

Momentan sieht BORG als vielversprechendste Lösung aus, bietet es doch den größten Funktionsumfang, eine aktive Weiterentwicklung und bisher keine nennenswerten Programmfehler. Sicher nicht so ausgearbeitet wie große Lösungen wie Amanda oder Bacula, für die meisten Anwendungen aber ausreichend und wesentlich einfacher einzurichten.

[nvidia/qt5/kdenlive] Segfault on various KDE-software using NVIDIA 361.16

Uhm crap. The last system update just pulled a new beta version of NVIDIAs binary driver. Usually not that much of a deal, I went for testing due to a bug in their stable driver some years ago and never ran into a problem. Well, at least until now.  This time the testing-curse found its way into my system and I found myself no longer able to start my video editor kdenlive. Segmentation Fault. I suspected my setup first since I am running a rather unusual multihead configuration but could also with just one monitor I ran into the same problem. Well, looks like I have to dig deeper. Some gdb later at least a clue:

So XScreenCount or libGLX is the suspect. In my case GLX is provided by NVIDIAs binary driver (nouveau had limited multihead support last time I checked). Also some QT5-stuff is mentioned in the backtrace.

A bit of search engine voodoo later it turns out NVIDIA already acknowledged the problem. Aaron Plattner writes:

I reproduced the problem and tracked it down to this buggy code in Qt5’s qxcbglxintegration.cpp:

When this code is called during sddm-greeter startup, there’s no current GLX context, so this gets called with a NULL argument.

While here SDDM is not the problem I think kdenlive, which uses similar libraries, runs into the same problem. He also pushed a corresponding patch to NVIDIAs GIT-repository. Sadly the current HEAD is not 100% ABI compatible with the official driver release. Also I really didn’t want to get into my distributions xorg-packaging-foo. Ultimately I reverted to the current NVIDIA stable version 358.16 to get back into business. So – lesson confirmed: Beta releases can fix problems or cause problems. But who doesn’t like a bit of stability-gambling, right?

BitBastelei #171 – ZFS on Linux

BitBastelei #171 - ZFS on Linux

(41 MB) 00:23:38

2015-10-25 11:00 🛈

ZFS ist ein Speichersystem, welches den Aufbau professioneller Speichersysteme ermöglicht.

02:55 – Inodes
03:43 – Blockgrößen
04:31 – Copy on Write
06:25 – Snapshots
07:25 Transaktionssicherheit bei Backups
18:10 – BTRFS https://www.youtube.com/watch?v=y-yYc4sP9zM