Archiv für den Monat: Mai 2020

Shell: Fehlendes Floppy-Laufwerk /dev/fd0 spammt Logs

Wenn das Kernelmodul „floppy“ geladen ist, aber kein Floppy-Drive vorhanden ist, werden die Logfiles gespammt (dmesg, syslog, je nach Konfiguration). Einträge sehen etwa folgendermassen aus:

dmesg:
[1016164.312385] end_request: I/O error, dev fd0, sector 0
[1016164.313839] floppy: error -5 while reading block 0

syslog:
May 12 07:20:21 server1 kernel: end_request: I/O error, dev fd0, sector 0
May 12 07:20:21 server1 kernel: floppy: error -5 while reading block 0

Die Lösung ist das Entfernen des floppy-Kernelmoduls und blacklisten desselbigen für den nächsten Reboot (Root-Rechte erforderlich).

# echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
# rmmod floppy
# update-initramfs -u

Linux: Thin-Client als Server und Raspberry-Ersatz

Preiswerter und flexibler als ein Raspberry-Pi: Thin-Client als Server.
Thin-Clients sind derzeit für kleines Geld zu bekommen (zB: itniederrheinshop.de für unter 20 EUR)

Fujitsu Futro S900 AMD G-T40N 1 GHz, AMD Radeon HD6250:

  • Gigabit Ethernet
  • 2 GB DDR3-RAM
  • mSata-Slot 2 GB (reicht für minimales System)
  • Sata-Anschluß (allerdings wird ein spezielles Sata-Stromkabel benötigt)
  • wake-on-lan, wake-on-clock
  • Passive Kühlung = keine Geräusche / Verschleiß
  • geringer Stromverbrauch
  • Smartcard-Slot kann ausgebaut werden und bietet dann 2,5″ SSD Platz
  • DVI und Display-Port Videoanschluß

USB-Stick mit Debian 10 Netinstall vorbereiten und vom Stick booten (F2=Bios, F12=Bootmenu). Als Desktop-Umgebung wurde LXQT gewählt (Nachfolger von LXDE). Sinnvolles Paket: SSH-Server, Print-Server. Speicherverbrauch im Ruhebetrieb mit Desktop: 331 MB.

Nach der Installation ist die Auflösung allerdings sehr beschränkt, weil der Radeon-Grafiktreiber fehlt. Das lässt sich schnell abstellen:

Eintragen der non-free und contrib Pakete für apt:

# nano /etc/apt/sources.list

deb http://deb.debian.org/debian/ buster main non-free contrib
deb-src http://deb.debian.org/debian/ buster main non-free contrib

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

# apt update

# apt install firmware-linux-nonfree libgl1-mesa-dri xserver-xorg-video-ati

Nach dem Reboot steht die WUXGA-Auflösung bis 1920×1200 zur Verfügung.

Spar-Tipp:
Kostengünstige Speicheraufrüstung: Man kauft sich beim gleichen Händler noch einen HP-T510 Thin-Client. Der hat zwar nur 1 GB IDE-Flashspeicher, verfügt aber über 4 GB DDR3-RAM und kostet ebenfalls unter 20 EUR.
Für das Geld bekommt man keinen 4 GB Speicherriegel. Wer dann noch einen USB-Stick > 4 GB rumliegen hat, kann den HP-Rechner mit dem 2 GB aus dem Futro bestücken und hat ein zweites (schwächeres) System mit Gigabit-Ethernet.

Der HP hat übrigens ebenfalls Auflösungsprobleme (max. Auflösung 1024×768), was durch Installation von xserver-xorg-video-openchrome behoben werden kann.

Nachtrag:

Funktioniert auch beim leistungsstärkeren Modell Futro S920, was durch die 4 Threads und mehr Speicher als Server für Homeautomation geeeignet ist (MQTT, Node-Red, Influxdb2)

Shell: Rekursives ändern des Zeitstempel mit find und touch

Der Befehl touch hat keinen rekursiv Parameter. Will man also eine Ordnerstruktur mit touch behandeln, braucht man find als Hilfe:

find . -exec touch {} \;

Dieser einfache Befehl startet im aktuellen Ordner und geht dann rekursiv in die Tiefe und verpasst allen Dateien den aktuellen Zeitstempel.

Apache: Git-Ordner und Dateien mit führendem Punkt nicht anzeigen

Deploy eines Projektes via Git (git pull) hinterlässt den .git-Ordner, der ungewollt viele Informationen preisgeben kann. Ebenso Dateien mit führendem Punkt, die als Temporär-Datei oder Config-Datei sensible Informationen enthalten können.
Um das zu vermeiden folgendes Snippet für die apache2.conf:

<Directorymatch "^/.*/\.git/">
    Order deny,allow
    Deny from all
</Directorymatch>
<FilesMatch "^\.">
    Order allow,deny
    Deny from all
</FilesMatch>
<FilesMatch "(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|orig|psd|sh|sql|sw[op])|~)$">
    Order allow,deny
    Deny from all
</FilesMatch>