Manjaro: systemd-fsck-root reparieren

food man love people

Seit einiger Zeit scheint bei „out of the box“ Manjaros der SystemD Service systemd-fsck-root nicht mehr zu funktionieren, was zur Folge hat, dass das root-Volume aktuell nie auf Fehler überprüft wird.

Um diesen Umstand zu korrigieren, sollte zuerst mittels sudo dumpe2fs -h /dev/sda1 | grep -i 'mount count'geprüft werden, welcher Wert für Maximum mount count eingestellt ist. Sofern als Wert -1 eingestellt ist, wird dieser jetzt mittels sudo tune2fs -c 30 /dev/sda1 wieder auf den Standardwert von 30 zurückgesetzt.

Im nächsten Schritt muss noch die /etc/mkinitcpio.conf mittels sudoedit /etc/mkinitcpio.conf ein wenig ergänzt werden:

  • Der Eintrag BINARIES=() wird in BINARIES=(/usr/bin/fsck /usr/bin/fsck.ext4 /usr/bin/fsck.xfs) geändert, damit das fsck Binary sowie die notwendigen Module während des Bootvorgangs verfügbar sind.
  • Der Eintrag HOOKS=() wird um den Wert systemd ergänzt, damit systemd-fsck-root während des Bootvorgangs ausgeführt wird.

Zum Schluss werden die initramfs mittels sudo mkinitcpio -P neu erstellt, damit unsere Anpassungen beim nächsten Reboot des Systems greifen.

Nach dem nächsten Neustart sollte systemctl status systemd-fsck-root.service anzeigen dass das root-Volume überprüft und ggf repariert wurde.

Manjaro: Plymouth-Bootscreen reparieren

Falls bei einem statt einem schicken Plymouth-Bootscreen nur ein schwarzer Bildschirm durch den Bootvorgang begleitet, kann das daran liegen, dass das für den Grafikchip notwendige Kernel-Modul nicht geladen wurde.

Zuerst müssen wir per sudo lspci -k | grep -EA3 'VGA|3D|Display' herausfinden, welches Modul benötigt wird. In meinem Fall sieht die Ausgabe so aus:

00:02.0 VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
DeviceName: Onboard IGD
Subsystem: CLEVO/KAPOK Computer Device 0945
Kernel driver in use: i915

In der letzten Zeile ist die Information, die wir benötigen. Das Kernel-Modul heißt hier i915.

Nun editieren wir die Datei /etc/mkinitcpio.conf und fügen dort in die Zeile „MODULES=“ den Namen des benötigten Kernel-Moduls ein, so das die Zeile anschließend so aussieht:

MODULES="i915"

Zum Schluss müssen noch die Kernel-Images neu erstellt werden, damit unsere Änderung ab dem nächsten Neustart angewendet wird. Das machen wir mit dem Kommando

sudo mkinitcpio -P

Ab dem nächsten Boot sollte Euch ein schicker Plymouth-Bootscreen den Startvorgang Eures Systems versüßen

TeamViewer unter Manjaro nutzen

Wer den TeamViewer aus dem AUR installiert hat, steht beim ersten Start oft vor dem Problem, das der TeamViewer am unteren Rand die Meldung

Nicht bereit. Bitte prüfen Sie Ihre Internetverbindung.

anzeigt.

TeamViewer ohne gestarteten Daemon

Das Problem ist relativ einfach zu lösen. TeamViewer installiert einen eigenen Daemon, der die Verbindungen abwickelt, aber nach der Installation nicht automatisch gestartet wird.

Um den Daemon zu starten kann man entweder

sudo systemctl start teamviewerd

oder

sudo systemctl enable teamviewerd && sudo systemctl start teamviewerd 

ausführen.

Der erste Befehl startet die systemd Unit des Daemon und muss vor jedem Start des TeamViewer erneut ausgeführt werden. Der zweite Befehl aktiviert den automatischen Start der Unit und startet diese anschließend. Dieser Befehl muss im Gegensatz zum ersten nur einmal ausgeführt werden.

TeamViewer mit gestarteten Daemon

Welchen Befehl man nutzt hängt hauptsächlich davon ab, wie oft man den TeamViewer nutzen möchte – und von der eigenen Bequemlichkeit 😉

Auf zu neuen (Linux-)Ufern

Nachdem sich mein Fedora beim Versuch, auf Fedora 29 Beta zu aktualisieren, quasi selber zerlegt hat, indem das Notebook sich während des Updates abgeschaltet hat, weil der Stecker der Dockingstation nicht richtig eingesteckt war, habe ich beschlossen mal etwas neues zu wagen.

Nach beinahe 10 Jahren mit Fedora möchte ich mal eine neue Distribution ausprobieren. Aber nicht wieder CentOS oder etwas anderes, das auf RHEL oder SUSE basiert. Das hatte ich ja schon einmal.

Nein, diesmal sollte es etwas völlig anderes sein und irgendwie habe ich auch schon immer ein wenig mit Arch-Linux geliebäugelt.  Da die Installation und Konfiguration von Arch aber durchaus eine Herausforderung sein kann, habe ich mich dann jedoch für Manjaro entschieden. Basiert auf Arch, ist aber deutlich einfacher zu installieren und konfigurieren. Zumindest in der Theorie – dazu jedoch später mehr.

Zuerst einmal musste ich mein Fedora wieder soweit lauffähig bekommen, das ich mein Home-Verzeichnis auf meiner externen USB-Festplatte sichern konnte. Was dann auch recht zügig von statten ging. Hinterher noch ein kurzes Diff, um sicher zu gehen, da auch wirklich alle Dateien gesichert wurden und dann kann es auch schon los gehen, mit Manjaro.

Oder auch nicht. Nachdem die Live-CD erfolgreich gebootet war und der Installer den Auftrag bekam, für die Installation von Manjaro, die vorhandenen Fedora-Partitionen zu löschen, kam die erste Ernüchterung: der Installer erklärte mir in wenigen Worten, das er nicht in der Lage war, die Partitionen zu löschen.

Glücklicherweise enthält die Live-CD GParted und die Partitionen wurden dann kurzerhand und völlig humorlos manuell gelöscht. Im zweiten Anlauf verrichtete der Installer sein Werk auf der nun quasi jungfäulichen Festplatte ohne weitere Probleme.

Zum Schluss mussten nach dem Neustart noch die üblichen Dinge erledigt werden:

  • benötigte Daten von der USB-Platte zurück kopieren
  • fehlende Programme sowie verfügbare Updates installieren.

Wobei das mit den fehlenden Programmen auch etwas komplizierter als zuerst gedacht war, weil es diese nur im AUR (Arch User Repository) gibt, was bedeutet, das diese Programme über ein separates Programm heruntergeladen, lokal compiliert und installiert werden müssen.

Abschließend kann ich schon jetzt sagen, das sich Manjaro sehr schnell anfühlt, was den Bootvorgang angeht und auch sonst einen sehr angenehmen Eindruck hinterlässt.

Prospekt von real bequem lokal lesen

Jedem, dem dieser in Flash programmierte Viewer für den Wochenprospekt von real auf die Nerven geht, kann sich den Prospekt unter Linux mit einem simplen Einzeiler herunterladen und mit dem PDF-Betrachter seines Vertrauens öffnen:

evince http://shared.real.de/blaetterkatalog/pageflipdata/kataloge/KW$(date +%V)/Handzettel/50322/pdf/50322_KW$(date +%V)_Handzettel.pdf

Das sich die URL bis auf die jeweilige Kalenderwoche nicht weiter ändert, macht es sehr einfach, da es die Bash erlaubt, Befehle quasi in einen anderen Befehl einzubetten, was durch das Dollar-Zeichen und die darauf folgenden Klammern signalisiert wird. Die Kalenderwoche selber wird schnell und schmerzlos durch das

date +%V

errechnet.

Natürlich kann man auch einen anderen PDF-Betrachter als evince nutzen, sofern man das möchte 😉

git Repositories schnell und bequem aktualisieren

Wer mehrere lokale git Repositories auf seinem Rechner liegen hat, weiß sicher, welche „Freude“ es macht, diese auf dem aktuellen Stand zu halten.

Mit ein wenig Shell-Script geht das jedoch ganz leicht von der Hand und weh tut es auch nicht 😉

#! /bin/bash

PRJDIR="$HOME/Projekte"

cd $PRJDIR
for REPO in $(find -name .git -type d | sort); do
    cd $PRJDIR
    DIR=$(dirname $REPO)
    REPOPATH=$(realpath $DIR)
    REPONAME=$(basename $REPOPATH)

    cd "$REPOPATH"
    echo "Aktualisiere $REPONAME"
    UPSTREAM=$(git remote -v | grep ups)
    if [ -n "$UPSTREAM" ]; then
        echo "Synchronisiere mit Upstream"
        git fetch upstream
        git checkout master
        git merge upstream/master
        git push
    else
        git pull
    fi
    echo
done

ggf. muss man die Variable $PRJDIR in Zeile 3 des Scriptes anpassen, sofern die git Repositories sich an einem anderen Ort befinden.

Unwetterwarner für Linux

Gemäß dem Motto es gibt kein schlechtes Wetter, wenn man rechtzeitig gewarnt wird, habe ich das Unwetterwarner-Script, das man hier findet, ein wenig überarbeitet und ergänzt.

#!/bin/bash
notify_header="Wetterwarnungen für Coburg"
popup_icon=~/Bilder/Wetterwarnung.png
landkreis=COX
image_viewer=display # must be able to handle URLs
warning_url='http://www.dwd.de/dyn/app/ws/html/reports/'${landkreis}'_warning_de.html'
timeline_url="http://www.dwd.de/dyn/app/ws/maps/${landkreis}_timeline.png"
automode=false

if [ -n "$1" ]; then
    if [ "$1" == "auto" ]; then
        automode=true
    else
        i="$1"
        size=${#i}
        if [ "$size" -eq 3 ]; then
            landkreis=$1
            notify_header="Wetterwarnungen für "$landkreis
        else
            notify-send – icon=$popup_icon """ungültiger Landkreis""" "ungültiger Landkreis: $1"
            exit
        fi
    fi
fi

textstring=$(wget $warning_url -O -  | grep -i -e "warnung vor" -e "vorabinformation" | sed s/\<\\/p\>//g ) 

if [ "$textstring" = ""  ]; then
    notify-send – icon=$popup_icon """$notify_header""" "keine Warnungen vorhanden"
else
    notify-send – icon=$popup_icon """$notify_header""" """$textstring"""
    if [ "$automode" == false ]; then
        $image_viewer $timeline_url &
        # xdg-open $warning_url &
        sleep 4
        kill $!
    fi
fi

Wer das Script selber nutzen möchte, muss entweder die Variable landkreis entsprechend anpassen. Der Code für den jeweiligen Landkreis ist im Prinzip das KFZ-Kennzeichen, welches mit X auf 3 Stellen aufgefüllt wird. Es sei denn, das Kennzeichen enthält ein Ö oder Ü – die werden einfach durch OE bzw. UE ersetzt.

Für die Nutzung mittels Crontab übergibt man dem Script einfach als Parameter auto alle anderen Werte werden als Landkreis interpretiert, was ggf. zu Fehlern führt, wenn man einen ungültigen Wert übergibt.

Die aktuellste Version des Scriptes gibt es hier.