Raspberry Pi: Animiertes Bootlogo (splash screen)

Ich suchte für meinen MAME-Retro-Arcasde Automaten nach einer Möglichkeit ein Bootlogo anzuzeigen, so das ersichtlich ist das der Automat noch startet. (und nicht etwa hängen geblieben ist)

Leider dauert das laden des Linux-Systems und des MAME mehrere Minuten auf dem Raspberry Pi, so das ein stehendes Bild wie ein abgestürztes System erscheinen. Die Linux Boot-Meldungen hingegen passen nicht zu einem Spielautomaten.

Ich persönlich verwende für meinen Spielautomaten ein statisches Bild, das MAME-Logo, vor welches ich einen loading spinner! gelegt habe.
Sehr schön für einen Spielautomaten sind auch animierte Charaktere aus klassischen Spielen, wie die Eule aus Apydia. Suche bei der Suchmaschine deine Wahl nach „animated gif sprites“ um einige zu finden.Agony (1992) Art & Magic / Psygnosis

Die Bootmeldungen können über die drei Einträge „consoleblank=0 loglevel=1 quiet“ in der Datei cmdline.txt im Verzeichnis /boot abgeschaltet werden.
Ebenfalls in der Datei cmdline.txt kann das Bootlogo, die Himbeeren die oben links erscheinen, mittels „logo.nologo“ abgeschaltet werden.
Mit dem Eintrag disable_splash=1 in der Datei config.txt im Ordner /boot schaltet Ihr auch noch das Regenbogen-Startbild des Raspberry Pi ab.

Splashscreen Werkzeuge wie FbiPlymouth oder FMI unterstützen leider keine Animationen. Das Werkzeug bannerd von Alexander Lukichev füllt genau diese Lücke und bietet die Möglichkeit eine Serie von BMP-Bildern als Animation wiederzugeben. (Die Letzte Aktualisierung des von bannerd ist leider aus dem September 2012)

Im Raspbian Repository ist bannerd aktuell leider nicht vorhanden, kann jedoch einfach aus den Quellen übersetzt werden.
Hierzu holen wir den Quellcode aus dem GIT-Repository und übersetzen es im Anschluss mittels make.:

Im Anschluss muss die entstandene Datei bannerd in den Ordner /usr/local/bin/ oder /bin kopiert werden, ausführbar gemacht werden sowie der Eigentümer und die Gruppe auf root geändert werden.

Als Bootanimation ist bei bannerd ausschließlich eine Sequenz von BMP Bildern möglich. Wenn die Boot-Animation bereits als Videodatei oder als animiertes Gif vorliegt kann diese mittels ffmpeg in eine Bildsequenz umgewandelt werden.

Da mein Beispiel GIF eine Transparenz hat und ffmpeg leider automatisch weiß als Hintergrundfarbe bei der Umwandlung in Dateiformate ohne Apha Kanal.
Wenn Du eine andere Hintergrundfarbe als weiß benötigst können solche animierte GIFs leider nicht direkt umgewandelt werden.
Mit dem Umweg über PNG Bilder mit Alpha Transparenz können den BMPs auch andere Hintergundfarben gegeben werden.:

Wenn das animierte GIF als kleine Animation in der unteren rechten Ecke des Bootbildes angezeigt werden soll können die Animationphasen mit folgenden Befehlen mit einem Hintergrundbild zusammengefügt werden. (Das Hintergrundbild wird im folgenden Beispiel mittels Imagemagic als leeres schwarzes Bild erzeugt.)

Nach dem wir jetzt den Dienst bannerd haben und die anzuzeigende Animation abgelegt haben brauchen wir noch einen systemd Service der im Bootvorgang bannerd startet.

der Service kann in Form der folgenden Datei /etc/systemd/system/bootlogo.service erzeugt werden:

Jetzt muss der nrur Dienst noch aktualisiert werden.: sudo systemctl enable bootlogo
Das Bootlogo kann mit dem Befehl systemctl start bootlogo oder mit einem neustart des Computers getestet werden.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate
Postix Logo mit Schriftzug Postfix

Postfix Konfiguration main.cf aufräumen

Leider wird die Postfix konfiguration /etc/postfix/main.cf häufig mit vielen Daten der Defaultkonfiguration „vermüllt“ und wird damit unübersichtlich.

Vorüberlegung: Wir müssen die main.cf also irgendwie Filtern, eine Feste Reihenfolge zu erhalten wäre ein positiver Nebeneffekt da sich die Regeln so besser einpägen.

Mit dem Befehl postconf können wir die aktuell verwendete Postfix Konfiguration ausgeben lassen. In dieser Ausgabe sind alle Konfigurationsparameter enthalten, ob manuell gesetzt oder der Defaultwert, in dieser Ausgabe ist er enthalten.

Mit der Option „-d“ kann man von postconf auch die Defaultkonfiguration verlangen. Das an den Beiden Ausgaben ist, das postconf die Konfiguration Optionen immer in der gleichen Reihenfolge Ausgibt und somit mittels diff die beiden Konfigurationen verglichen werden können.

Nach dem diff der beiden konfigurationen müssen alle Zeilen die sich verändert haben, diese Beginnen mit einem Größer als Zeichen „>“ beibehalten werden und die beiden ersten Zeichen, Das Größer als Zeichen und das Leerzeichen, verworfen werden um eine vollständige und Funktionierende main.cf als Ausgabe zu erhalten.

Die aus der Ausführung dieses Einzeilers entstandene main.cf Datei kann die alte Konfigurationsdatei bedenkenlos ersetzen.

Nachtrag:

Bei mir wurde der Hostname überraschend nicht mit in die Konfiguration übernommen, es muss nach dem Ersetzen der Konfiguration noch mittels postconf der Hostname in die Konfiguration eingetragen werden.:

 

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate
007-Tux Logo

Inotify: Dateien überwachen

Veränderungen im Dateisystem mit inotify beobachten.

Sobald eine bestimmte Datei verändert wird möchte ich ein Archiv erstellen oder die Datei auch einen Server hochladen, oder auf meiner NAS eine LED anschalten. Bei der Suche nach einem passenden Werkzeug blieb ich sehr lange bei einer Endlosschleife die regelmäßig die Datei oder das fragliche Verzeichnis auf die erwartete Änderung abfragte.

Inotify-Events
KürzelFormat
ACCESSZugriff auf die Datei
ATTRIBMetadaten geändert
CLOSE_WRITEzum Schreiben geöffnete Datei geschlossen, sie muss nicht geändert worden sein
CLOSE_NOWRITEEine Datei wurde geschlossen nachdem sie schreibgeschützt geöffnet wurde
CREATENeue Datei angelegt
DELETEDatei gelöscht
DELETESELFÜberwachtes Verzeiuchnis gelöscht
MODIFYDatei modifiziert
MODIFYSELFÜberwachtes Verzeichnis modifiziert
MOVEDFROMDatei aus dem überwachten Verzeichnis verschoben
MOVEDTODatei in das überwachte Verzeichnis verschoben
OPENDatei geöffnet

Zur Überwachung meines WordPress Verzeichnises auf neue Dateien kann ich folgende Befehlszeile nutzen:

Mir werden dann vor allem viele Dateien wp-content/temp-write-test-1492771373, mit abweichenden Nummern am ende, angezeigt, jedoch auch die ganzent Updates und anderen Schreibvorgänge.

Um herauszufinden welche Dateien „angefasst“ werden reicht eine kleine änderung auf:

Ein sehr nützliches Werkzeug, auch für die Fehleranalyse. 😉

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate
sudo

Linux: sudo ohne Passwort

Auf dem eigenen Laptop, Raspberry Pi oder Computer ist es verlockend mittels sudo -s als root zu arbeiten um nicht bei jedem aufruf eines Befehls der erhöhte Rechte benötigt das eigene Passwort eingeben zu müssen. Aus diesem Grund zeige ich in dieser einfachen Anleitung aufzuzeigen wie diese Verlockung abzuschwächt werden kann in dem das Passwort nicht immer oder wenigstens nicht bei jedem aufruf eines Befehls eingegeben werden muss.

Die Einstellungen zum Befehl sudo werden in der Datei /etc/sudoers hinterlegt. In dieser Datei kann festgelegt werden welche Benutzer sudo nutzen können, ob bei jedem Aufruf das eigene Passwort eingegeben werden muss und wie in dem Fall verfahren werden soll wenn wenn ein Benutzer ohne das recht zur nutzung versucht erhöhte Rechte zu erlangen.

Die Syntax der Konfiguration der Benutzerrechte erfolgt nach dem folgenden Schema:

user_list host_list=effective_user_list tag_list command_list

Die einzelnen Tele dieser Konfigurationszeile haben die folgenden Bedeutungen:

user_list – Liste der Benutzer oder einen Benutzer-Alisa der bereits zuvor angelegt wurde
host_list – eine Liste der Hostcomputer oder eine Host-Alias auf dem ein Benutzer sudo ausführen kann
effective_user_list – list of users they must be running as or a run as alias.
tag_list – Liste von Eigenschaften wie beispielsweise NOPASSWD.
command_list – Liste von Befehlen die mit sudo ausgeführt werden dürfen

Um einem Benutzer, in meinem Beispiel kuehnel, die Ausführung aller Befehle via sudo ohne die Eingabe eines Passworts zu erlauben öffne ich die „sudoers“ Konfigurationsdatei.:

Und füge die folgende Zeile ein.:

Alternativ kann mit der folgenden Zeile einer Gruppe, in meinem Beispiel der Gruppe sudo, mit dem Prozentzeichen (%) der Zugriff auch ohne die eingabe des Passworts ermöglicht werden.

Um meinem Benutzer kuehnel ausschließlich die Nutzung eines einzelnen Befehls zu ermöglichen kann die Zeile durch den entsprechenden Befehl ergänzt werden, wie im folgenden Beispiel mit dem Befehl kill.

Die folgende Zeile ermöglicht allen Benutzern der Gruppe sys die nutzung des Befehls sudo zu der Ausführung der Befehle kill und rm ohne dafür das Passwort des Benutzers eingeben zu müssen.

Ich hoffe diese Beispiele reichen aus um eine Vorstellung von den Konfigurations-Optionen zu erhalten. Wenn Du Fragen zu einem Bestimmten Beispiel hast oder Fragen wie Du eine bestimmte Konfiguration erreichen kannst freue ich mich über Deinen Kommentar.

logfile

sudo gibt die Log-Informationen an syslog. Es kann nach wunsch aber auch ein eigenes Logfile schreiben.

Die in der Logdatei gespeicherten Daten können den eigenen anforderungen angepasst werden, zum Beispiel so.:

lecture

Hinweis bei der Nutzung von sudo anzeigen.

Es gibt 3 mögliche Konfigurationen:

always – bei jedem Aufruf dem Benutzer den Hinweisen zeigen
once – nur bei der ersten Nutzung den Hinweis anzeigen
never – dem Hinweis niemals anzeigen

Zusätzlich kann festgelegt werden in welcher Datei der Text für den Hinweis hinterlegt ist:

timeout

Zeitspanne in Minuten nach der das Passwort erneut abgefragt werden soll.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

auth.log – Das Logging-Verhalten von Debian Jessie

Bei einer Debian 8 minimal Installation, bezeihungsweise einer minimalen Debian Jessie Installationen taucht manchmal kein auth.log auf.
Das kein auth.log erstellt wird liegt an einem, in der Minimalinstallation fehlendem Paket: rsyslog.

Das Paket rsyslog kann einfach mit dem folgenden Befehl nach installiert werden.

Das Paket rsyslog wird auch bei Virtuellen Servern absichtlich nicht mit installiert um die Server über weniger Festplattenzugriffe zu „beschleunigen“.

Solltest du einen Virtuellen Server betreiben entferne das Logging aller Dienste die du nicht ubedingt benötigst und nicht auswerten musst oder nicht auswerten möchtest. Jede Information die nicht mitgeloggt wird ist eine Infomation die nicht verloren gehen kann.
Der verzicht die daten zu Loggen entspricht nicht nur der gebotenen Datensparsamkeit, die nicht geschriebenen Daten belegen natürlich auch keinen Platz auf der Festplatte und ermöglichen zusätzlich bei Virtuellen Servern das trotz geringer IO-Resourcen einen schnelleren Betrieb der eigenen Dienste.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Server Benchmark Test from Loteks

Ab dem erleben dieser wird es interessant das Ergebnis eines Benchmarks zu haben um belastbare Zahlen zum vergleich zu haben.

Ein Benchmark? Es gibt für Linux unglaublich viele Benchmark Werkzeuge. Ich möchte kein Benchmark Werkzeugs. Ich möchte nichts großes und ich will nicht herausfinden welches Werkzeug den Parameter misst der mich interessiert.

Ich möchte ein einfachen kleinen Hack der Messen kann was mich interessiert!

Zu diesem Zweck dient dieser Artikel

Dieser Artikel ist ein wenig im Fluss und wird je nach vorliegenden Kommentaren angepasst.

Messen der CPU Geschwindigkeit: (Pi bis zur Stelle 5000 berechnen)

Messen der Festplatten Schreibrate:

Messen der Festplatten Leserate:

Messen der Netzwerkgeschwindigkeit:

Für alle die Virtuelle Server gemietet haben:
Ja, es ist schade das euer VServer wirklich langsam ist. Lebt damit! Ihr teilt euch die CPU, Netzwerkverbindung und die Festplattenzugriffszeiten mit anderen. Seid sozial und übertreibt es nicht mit den Festplattenzugriffen, die anderen wollen auch mal. Lebt mit den 10MByte lese und Schreibrate!
Wenn es darauf ankommt nutzt doch bitte dedizierte Server!

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Bitte spielt nicht mit den Logdateien

Vor kurzem durfte ich erleben das Festplatten ohne guten grund voll belegt waren, da Administratoren auf die Idee kamen im Log Verzeichnis die Logfiles zu komprimieren.

Bitte ändert die Dateien im LogVerzeichnis nicht! Der Logrotate Dienst wird die Dateien nicht mehr finden und die Datei bleibt für immer dort liegen.

Um Logfiles zu rotieren benutzt logrotate!

Der Aufruf für das rotieren der Logfiles lautet:

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Alle TCP/UDP Ports prüfen

Ich suchte im Netz eine Möglichkeit in einem Fremden Netzwerk die erlaubten offenen Ports zu entdecken, leider fand ich keine „out of the box“ Lösung im Internet und baute mir die hier dokumentierte Lösung.

Der Netzwerk Computer ist in der folgenden Konfiguration mit meinem Testserver verbunden.:
nmap-netzwerk für den Netzwerkscan
Auf der Laptop Seite hinterlege ich einen neuen SSH Private Key übertrage einen zugehörigen Public aus dem Server in die Datei ~/.ssh/authorized_keys:

Auf der zu testenden Seite legte ich mir dieses kleine Shellscript ab, das nach und nach Netcat lokal auf verschiedene Ports lauschen lässt und im Anschluss versucht die Ports von der Serverseite aus zu erreichen.:

Um Netcat an UDP-Ports senden, oder auf UDP Ports lauschen zu lassen kann die Option -u mit angegeben werden.

Diese Methode dauert selbstverständlich ewig und ist nur anwendbar wen wenige Ports zu durchsuchen sind und nicht wie im Beispielscript angegeben alle 65535.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

script: Terminal Sessions aufnehmen

Um eine Terminal Session aufzuzeichnen kann das häufig vorinstallierte „typescript“ verwendet werden. Typescript nimmt alles auf das in einer Terminal Sitzung angezeigt wird. Die Befehle script & scriptreplay zeichnen eine Terminalsitzung auf, und spielen sie auch wieder ab.

Besonders zu empfehlen sind diese beiden Befehle zur Dokumentation oder um dritten eine Anleitung zukommen zu lassen.

Eine Aufnamesitzung kann durch eingabe des folgenden Komandos gestartet werden:

Es wird hierbei in zwei Dateien gesichert.

In die Datei recordfile werden alle Steuerzeichen geschrieben, in die Datei timefile wird ein Zeitindex für die Ausgaben gespeichert.

Nach dem Aufruf von script startet es im Hintergrund, ohne eine Ausgabe im Terminal zu verursachen. Alle folgenden Ausgaben werden aufgezeichnet.

Um die Aufname zu beenden und die Ausgabedateien fertigzustellen reicht ein Druck auf die Tasten [Strg] und D.

Um eine Aufnahme zu einem Späteren Zeitpunkt abzuspielen kann diese wiedergabe , wie im folgenden Beispiel, mit scriptreplay gestartet werden:

Aufnahmen von Terminalsitzungen können auch mit fortgeschritteneren Werkzeugen wie ttyrecshelr oder timerec angesfertigt werden. Die Anwendung erfolgt ähnlich, jedoch benötigen diese Werkzeige keine Zeitdatei. Sie speichern die Ausgabe jedoch in einer Binärdatei und sind sehr selten bereits vorinstalliert.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Dateisystem „nachträglich“ in RAID1 wandeln

Ich beobachtete im Februar 2015, bei einem erfolglosen Bewerbungsgespräch, wie auf einem Arbeitsplatz-Computer das Dateisystem, welches ohne Raid eingerichtet wurde, das System auf ein MDADM RAID1 verschoben wurde.
Ich fand die Idee einen Arbeitsplatz Computer nachträglich, scheinbar direkt nach der Neuinstallation auf ein RAID zu verscheiben überflüssig und umständlich. Das zuvor angefertigte Backup hätte auch zur Neuinstallation und neuerlichen Einrichtung des Computers mit Raid genutzt werden könnte.
Als Finderübung fand ich die Idee jedoch interessant. Bei einem Server kann auf diese Weise die offline Zeit reduziert werden.

Während dem Bewerbungsgespräch hörte ich nur ein paar Fetzen, ein Mitarbeiter fragte tatsächlich den Leiter der Abteilung wie MDADM und die Grub Installation funktioniert.

Die Umstellung einer Partition auf ein MDADM Raid ist tatsächlich nicht so kompliziert wie erwartet, hier meine Version.

1.) Partitionierung klonen

Auf der ersten Festplatte befinden Sich 3 Partitionen, Boot, Swap und eine Datenpartition, welche im ersten Schritt auf die Zweite Festplatte geklont werden

„sfdisk -d“ gibt die aktuelle Partitionstabelle der Festplatte /dev/sda aus und „sfdisk“, ohne Parameter, nimmt diesen export und schreibt diese auf die Festplatte /dev/sdb.
Mit „sfdisk -l“ kann das Ergebnis dieser Neupartitionierung von /dev/sdb überprüft werden.

Im Anschluss wechseln wir die Partitions-ID von den Partitionen /dev/sdb1 und /dev/sdb3 auf fd (Linux raid autodetect).
Mit fdisk geht dies über das Commando t zum ändern der Partitions-ID gefolgt von der Nummer der gewünschten Partition, zuerst 1 für die erste Partition und 3 bei der dritten Partition, und in Folge der Eingabe der Zeichenfolge fd

2.) Raid initialisieren

Anschließend erstellen wir das RAID1 Arrays mit den neuen Partitionen mit einer „fehlenden zweiter Festplatte“.
Hierbei ist missing der Platzhalter für die aktuell fehlenden, da „aktiven“ Partitionen, „-l 1“ steht für RAID1 und „-n 2“ das das RAID 1 aus zwei Disks bestehen wird.
(Bei einer minimal-Debian Installation muss zuvor via „apt-get install mdadm„, MDADM installiert werden.)

3.) Daten übertragen

Nach dem anlegen des neuen RAID1 Arrays muss zuerst ein Dateisystem angelegt werden und die swap Partition erzeugt werden.:

Nach dem anlegen des Dateisystems können die Datenträger eingehängt werden…

…und im Anschluss die Daten auf den neuen Datenträger kopiert werden.:

4.) RAID ergänzen

Wie zuvor im ersten Schritt können die Partitions-IDs angepasst werden, nur diesmal für die Festplatte /dev/sda:

Im Anschluss in der /etc/fstab für / den Eintrag /dev/md0 und für /boot den Eintrag /dev/md1 hinerlegen und den Computer neu starten.

Sobald der Grub2 Bootloader erscheint mit der Taste e den Booteintrag bearbeiten und den Eintrag „linux /vmlinux-3.3 root=UUID=…“ ändern in „linux /vmlinux-3.3 root=/dev/md1“ und mit F10 den Bootvorgang starten.

Jetzt kann das RAID mit den folgenden beiden Befehlen verfolständigt werden:

5.) Grub für das RAID Installieren

Jetzt kann abschließend der Grub Bootloader für beide Festplatten konfiguriert und auf diese Installiert werden.

nur noch die Zeile „GRUB_TERMINAL=console“ in der Datei /etc/default/grub auskommentieren und mit den folgenden Befehlen eine neue Grub Konfiguration schreiben.

Jetzt kann der Server bei Reboot auch ohne Festplatte /dev/sda oder /dev/sdb starten.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate