Archiv der Kategorie: PC-Kram

Meine Lieblingsbeschäftigung :)

VsFTPd 3.x und 64Bit-Server

Bein Aufsetzen eines FTP-Servers mittels VsFTPd kam es zu einem etwas anderen Problem: Der Server startete, beim Connect erhielt der Client jedoch lediglich die Meldung „500 OOPS: child died“. Im Log selbst war keine Meldung auffindbar.

Auslöser ist offenbar ein zu strikter Sicherheitsfilter in Verbindung mit 64Bit-Kerneln. Gentoo scheint nicht betroffen zu sein, dort lief die Version 3.0.2 fehlerfrei, selbige unter Arch Linux verursacht den Fehler. Als Workarround kann man die neuen Sicherheitsfunktionen durch setzen des Wertes „seccomp_sandbox=NO“ in der vsftpd.conf abschalten.

BitBastelei #102 – Reparatur: Omega Virus

BitBastelei #102 - Reparatur: Omega Virus

(34 MB) 00:07:21

2014-06-22 10:00 🛈

Der „Omega Virus“ ist ein Brettspiel mit zusätzlicher Spielekonsole aus dem Jahr 1992. Mit bis zu 4 Spielern geht es darum die heimische Raumstation von einem bösen Computervirus zu befreien. Als kleine Besonderheit führt der elektronische Part per Sprachausgabe durch den Spielverlauf, auch wenn der Dialekt aus „Raumcode“ schon mal den legendären „Raumkraut“ macht. Zumindest wenn das Spiel nicht kaputt ist. „Leider“ eine sehr schnelle Reparatur, aber ein netter Einblick in Spieleelektronik, Massenproduktion und die gute, alte Technik der 90er.

Trivia: Die „Waffen“ des Spiels, welche genutzt werden um den Computervirus zu zerstören, heißen in der deutschen Variante „Anti Virus Gerät (AVG)“.

Anzeige von Leerzeichen/Tabs unter Pluma (Mate-Text-Editor)

Tabulator oder Leerzeichen zum Einrücken, da ist sich die Programmierwelt noch nicht so ganz einig. Ein Mix aus beiden sieht allerdings unprofessionell aus und kann – je nach Editorkonfiguration – eine inkonsiste Anzeige erzeugen. Besser wäre es die unsichtbaren Biester direkt im Auge zu halten. Viele Editoren bieten eine Möglichkeit u.A. Tabs und Leerzeichen zu visualisieren, wenn es aber mal schnell gehen muss nutze ich auch den Texteditor meiner DE „Mate“, welcher sich „Pluma“ schimpft und ein Nachfolger des alten „Gedit“ aus dem „Gnome“-Projekt darstellt.

Leider unterstützt Pluma eine solche Anzeige nicht nativ, ein passendes Plugin ist aber im Plugin-Paket auf GitHub verfügbar, welches insgesamt folgendes beinhaltet:

bookmarks		Easy document navigation with bookmarks
bracketcompletion	Automatically adds closing brackets.
charmap			Insert special characters just by clicking on them.
codecomment		Comment and uncomment blocks of code.
colorpicker		Pick a color from a dialog and insert its hexadecimal 
			representation.
commander		Command pluma from a command line like interface
drawspaces		Draw spaces and tabs.
joinlines		Join several lines or split long ones.
multiedit		Edit document in multiple places at once
sessionsaver		Save and restore your working sessions.
showtabbar		Add a menu entry to show/hide the tabbar.
smartspaces		Forget you're not using tabulations.
terminal		Embed a terminal in the bottom pane.
wordcompletion		Word completion using the completion framework.
synctex			SyncTeX synchronization of TeX files and PDF output.

Für Arch Linux steht das Ganze jetzt im AUR bereit, andere Distros müssen sich ggf. mit ./autogen.sh && make && make install behelfen. Die Plugins können nach einem Neustart des Editors in den Einstellungen aktiviert und konfiguriert werden.

Gentoo: Abbruch beim Update auf Qemu 2.x bei Nutzung von libvirt

Das letzte world-Update eines Gentoo-Servers war etwas aufwändiger als üblich: Die betroffene Kiste kümmert sich unter anderem per libvirt und qemu um Virtualisierung, letzteres sollte mit dem Update von einer 1.5.x-Version auf eine 2.x aktualisiert werden. Mit der neuen Qemu-Version haben sich jedoch einige wichtige Dinge geändert, so gibt es nun keine zentrale Datei zum Start von VMs mehr. Auch die KVM-Unterstützung ist nicht länger als eigener Wrapper vonhanden. Statt einem bösen Erwachen fängt glücklicherweise das Update – bei Verwendung von Libvirt – eine veraltete Konfiguration ab und führt zu einer Fehlermeldung:

* The kvm/qemu-kvm wrappers no longer exist, but your libvirt
* instances are still pointing to it. Please update your
* configs in /etc/libvirt/qemu/ to use the -enable-kvm flag
* and the right system binary (e.g. qemu-system-x86_64).
* ERROR: app-emulation/qemu-2.0.0::gentoo failed (pretend phase):
* update your virt configs to not use qemu-kvm
*
* Call stack:
* ebuild.sh, line 93: Called pkg_pretend
* qemu-2.0.0.ebuild, line 225: Called die
* The specific snippet of code:
* die „update your virt configs to not use qemu-kvm“

Schauen wir mal nach – in /etc/libvirt/qemu liegt für jede VM eine XML-Datei mit allen Einstellungen, unter anderem findet sich in jeder der Dateien ein Eintrag <emulator>/usr/bin/qemu-kvm</emulator>, welcher mit dem „neuen“ Pfad des Emulators, also „qemu-system-x86_64“ für einen 64Bit-x86-Client, ersetzt werden muss. Die KVM-Erweiterung muss man hierbei nicht beachten, Libvirt gibt die nötigen Argumente zum aktivieren des Virtualisierungsmodus automatisch mit. Also Texteditor auf und ran ans Editieren, richtig? Nunja, das geht bei 2 oder 3 VMs, ich hab da aber ein paar mehr, also muss folgender Einzeiler herhalten:

for i in /etc/libvirt/qemu/*.xml ;do mv "$i" "$i.backup" && sed 's/\/usr\/bin\/qemu-kvm/\/usr\/bin\/qemu-system-x86_64/' "$i.backup" > "$i" ;done

Hinweis: Der Einzeiler lässt die Originaldateien als Backup zurück – wenn alles funktioniert hat können die Dateien mit der Endung *.backup entfernt werden.

Nachdem die XML-Dateien angepasst wurden lässt sich das Qemu-Update wie gewohnt installieren.

BitNotice #42 – GPIO unter OpenWRT an Carambola

BitNotice #42 - GPIO unter OpenWRT an Carambola

(5.8 MB) 00:05:15

2014-06-15 21:20 🛈

Auf vielen Routern lassen sich so genannte GPIOs (General-purpose Input/Output Pins) nutzen. Hersteller verwenden sie um LEDs zu steuern oder Taster abzufragen, doch unter OpenWRT können wir sie auch selbst steuern. Mit wenigen „echo“-Befehlen lässt sich so eine eigene LED steuern… Oder entsprechend über ein Relais ganze Steckdosen.

Gezeigte Referenz: http://k.japko.eu/wl-740n-w1.html

Renicetree – renice a process including it’s children

./configure && make – aw crap.

Immer wieder passiert es mir, dass ich längere Prozesse starte ohne ein „nice“ davor zu setzen. Ergebnis: Der Kompiliervorgang o.Ä. hat die selbe Priorität wie alles andere und zieht die Reaktionsfähigkeit des PC deutlich in den Keller. Üblicherweise kann man nun mir „renice“ den Prozess nachträglich herunterstufen, jedoch klappt das gerade bei Kompiliervorgängen nicht sonderlich gut: renice ändert lediglich die Priorität des angegebenen Prozesses, hierdurch werden auch neu erstellte Kindprozesse erfasst, bereits laufende jedoch nicht. Da Make teils sehr verschachtelt arbeitet und Jobprozessoren zur Verteilung der Aufträge nutzt muss man z.T. einige Prozesse ändern um das System wieder lauffähig zu machen. Hier z.B. der make-Baum eines OpenWRT:

make(25087)->sh(25209)->make(25211)-|->bash(25214)->make(25237)
                                    |->bash(25229)->make(25240)

Da ich keine Lust mehr hatte ständig die nötigen IDs per Hand zu suchen ist renicetree entstanden. Es sucht alle zu einer PID gehörigen Kindprozesse und setzt auch für diese ein renice ab. Um halbwegs kompatibel zu bleiben ist die Software in einer Bash-Syntax entstanden.

Da ich keinerlei erweiterte Ahnung von Shell-Scripting habe dürfte der Code bei Profis vermutlich Haarraufen verursachen, aber er läuft immerhin – auch wenn mir die Eigenheiten der Bash gewaltig auf den Nerv gingen (Keine mehrdimensionalen Arrays, keine indirekte Variabelreferenzen, etc). Script gibt’s wie immer auf Github. Use at your own risk.


Update: Ich wurde darauf hingewiesen, dass renice über die Process Group ID (-g) eine ähnliche Funktion bereits bieten würde. Das kann ich – zumindest für GUI-Betrieb – nicht bestätigen, hier hat z.B. alles unter meinem Terminal-Emulator die selbe Gruppen-ID, also auch Prozesse, welche in einem anderen Tab gestartet sind.

BitBastelei #101 – DS18B20 Temperatursensoren an RasberryPi

BitBastelei #101 - DS18B20 Temperatursensoren an RasberryPi

(35.6 MB) 00:10:21

2014-06-15 19:40 🛈

DS18B20 sind günstige, sehr einfach zu verwendende und genaue (±0,5°C) Temperatursensoren. Mit nur einem Widerstand lassen sich gleich mehrere an einen Raspberry Pi anschließen.

Datenblatt: http://www.maximintegrated.com/en/products/analog/sensors-and-sensor-interface/DS18B20.html
Tutorial bei RaspiProjekt.de: https://www.raspiprojekt.de/anleitungen/schaltungen/9-1wire-mit-temperatursensor-ds18b20.html

BitNotice #41 – „Beast Z380“ Tacker/Nagler

BitNotice #41 - "Beast Z380" Tacker/Nagler

(36.5 MB) 00:05:25

2014-06-15 18:00 🛈

In einer der letzten Folgen hatte ich gezeigt wie man LED-Streifen mittels Tacker an die Wand bekommt – nun, der gezeigte war nicht mir, also ist es offenbar Zeit meinen Werkzeugbestand zu ergänzen.

Von mir gekaufter Artikel: http://www.ebay.de/itm/201077107390

BitNotice #40 – Carambola Unbrick via UBoot/RS232/TFTP

BitNotice #40 - Carambola Unbrick via UBoot/RS232/TFTP

(5.1 MB) 00:03:06

2014-06-15 16:20 🛈

Beim Basteln mit Firmware gibt es ein großes Risiko: Eine falsche Eingabe und das System reagiert nicht mehr. Ein solches funktionsloses und somit nicht mehr brauchbares Gerät nennt man „Brick„, also Ziegelstein. Doch so lange der Bootloader noch erreichbar ist lässt sich vielfach noch etwas retten.

Hier wird ein 8Devices Carambola bzw. dessen Bootloader „UBoot“ mittels serieller Schnittstelle angewiesen eine neue Firmware per TFTP vom Rechner zu laden.