Sep 292014
 

Das Posting soll primär als Gedächtnisstütze dienen, wenn ich das selber nochmal bauen will. Das wichtigste ist mir Schritt 4 zu dokumentieren, das hat mich einiges an Zeit gekostet das rauszufinden. Ich setze voraus, das man die beiden Artikel im Arch-Wiki zu dm_crypt und ZFS gelesen, verstanden, und idealerweise schonmal umgesetzt hat. Mein Hauptproblem bei der Einrichtung ist dort nicht dokumentiert, ich werde versuchen die Lösung aus Schritt 4 direkt in die ZFS Pakete einfliessen zu lassen. Nach einem Reboot werden die zpools nicht automatisch eingebunden. Sie sind zwar aktiv und mit den zpool und zfs Befehlen sichtbar, aber die Datasets sind nicht gemounted. Nach einem Export und Import des zpools ist alles wie es sein soll. Das Problem ist eine fehlende Abhängigkeit in den ZFS Startscripten, die nicht warten bis Cryptsetup fertig ist.

Die Anleitung:

Schritt 1: Anlegen der dm_crypt Devices. Einmal mit Passphrase, danach wird ein Keyfile zugefügt. Das ist nötig, um ohne die Passphrase einzugeben den Rechner neu starten zu können.

cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha512 luksFormat /dev/sda
cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha512 luksFormat /dev/sdb
cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha512 luksFormat /dev/sdc
dd if=/dev/random of=/etc/cryptfs.key bs=512 count=5
cryptsetup luksAddKey /dev/sda /etc/cryptfs.key
cryptsetup luksAddKey /dev/sdb /etc/cryptfs.key
cryptsetup luksAddKey /dev/sdc /etc/cryptfs.key

Schritt 2: Editieren der Datei /etc/crypttab, welche für das automatische Öffnen der dm_crypt Devices beim Systemstart zuständig ist. Die erste Spalte ist der Name, unter dem das Device der zweiten Spalte geöffnet werden soll (es taucht dann als /dev/mapper/DISK-WD-SERIENNUMMER1 auf), und die dritte Spalte ist das zu verwendende Keyfile.

DISK-WD-SERIENNUMMER1     /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_SERIENNUMMER1    /etc/cryptfs.key
DISK-WD-SERIENNUMMER2     /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_SERIENNUMMER2    /etc/cryptfs.key
DISK-WD-SERIENNUMMER3     /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_SERIENNUMMER3    /etc/cryptfs.key

Schritt 3: Nach einem Server-Reboot sollten die dm_crypt Devices jetzt automatisch geöffnet worden sein, und es kann weitergehen – wir legen den zpool an. Die einzelnen Optionen können für euch natürlich variieren, ich verweise einfach mal auf die oben genannte Wiki-Seite.

zpool create -f -o ashift=12 -O atime=off -O casesensitivity=mixed -O mountpoint=/zfs/storage storage raidz1 /dev/mapper/DISK-WD-SERIENNUMMER1 /dev/mapper/DISK-WD-SERIENNUMMER2 /dev/mapper/DISK-WD-SERIENNUMMER3
zfs create storage/archiv -o mountpoint=/mnt/archiv
zfs create storage/backup -o mountpoint=/mnt/backup

Schritt 4: Nach einem weiteren Reboot stellt man, wie schon in der Einleitung beschrieben, fest: der zpool ist aktiv, aber keines der Datasets ist gemounted. Die Ursache liegt darin, das die beiden Systemd-Services zfs-import-cache und zfs-import-scan nicht auf das Cryptsetup-Target warten. Daher legen wir 2 Erweiterungen der zugehörigen Unit-Files an (die Funktionsweise der Erweiterungen ist im systemd-Artikel das Arch Wikis beschrieben).

mkdir /etc/systemd/system/zfs-import-cache.service.d
echo "[Unit]
After=cryptsetup.target" >/etc/systemd/system/zfs-import-cache.service.d/cryptsetup.conf
mkdir /etc/systemd/system/zfs-import-scan.service.d
echo "[Unit]
After=cryptsetup.target" >/etc/systemd/system/zfs-import-scan.service.d/cryptsetup.conf

Das wars dann auch schon. Jetzt sind nach jedem Reboot automatisch alle zpools und Datasets aktiv bzw. gemounted.

Mar 042012
 

So, ich habe mal eine neue TV-Karte ausprobiert, genauer gesagt die Mystique SaTiX-S2 Sky Xpress Dual. Mystique ist eine Eigenmarke vom DVBSHOP, von denen ich schon immer meine TV Karten bezogen habe. Disclaimer: Ich bekomme kein Geld/Rabatte o.ae. von denen 🙂

Der eigentliche Hersteller der Karte ist DVBSKY, das genaue Modell ist DVBSKY S952. Linux-TV listet die Karte hier, aber ohne naehere Infos ob und wie sie unterstuetzt wird. Laut DVBSHOP wird die Karte unterstuetzt, und da ich die Tevii-Konstruktion (die jetzige Karte besteht aus einem PCIe-USB Controller, und 2 “USB” TV-Karten) etwas ungeschickt finde dachte ich mir: probiers halt mal.

Der erste stumpfe Versuch fuehrte zu nix – der aktuelle Kernel (3.2.8-1) erkennt die Karte nicht, auch die neuesten 3.3er RCs waren eine Sackgasse. Also habe ich mal den Support-Thread im DVBSHOP-Forum angeschaut. Die dort beschriebenen Loesungswege wirkten etwas fuckelig, liefen auch unter Arch nicht besonders gut (genauer gesagt: gar nicht). Irgendwie erschien es mir auch recht obskur ein 5 MB grosses Paket runterzuladen, nur um einen kleinen Treiber zu bekommen.

Ein Blick auf die Hersteller-Support-Webseite sah dann vielversprechender aus: Dort gibt es ein kleines ZIP-File (sigh), in dem sich 6 kleine Patchfiles gegen 3.x Kernel-Sourcen befinden. Kurzes Querlesen machte Hoffnung – die Aenderungen halten sich in Grenzen, die Patches liessen sich einwandfrei anwenden. Dummerweise kompilierte der Kernel aber nicht, mit Hilfe von Nico und Micha war der Fehler jedoch schnell gefunden. In der Datei keymaps.patch muss folgende Zeile (Line 30) hinzugefuegt werden:

+#include <linux/module.h>

Damit baut dann der Kernel einwandfrei. Jetzt muss nur noch der Kernel installiert werden, und die Firmware fuer die Karte (ebenfalls auf der Hersteller-Support-Webseite erhaeltlich) nach /lib/firmware kopiert werden. Falls udev beim Neustart meckert: einfach das Modul cx23885 ueber die rc.conf beim Systemstart automatisch laden lassen. Das wars 🙂

Wer es schoener haben will kann, wie ich es auch getan habe, natuerlich ein eigenes Kernel-Package bauen. Damit hat man alles dann auch sauber im System, und muss den Kernel nicht haendisch bauen/installieren. Die Anleitung im Arch Wiki ist recht einfach nachzuvollziehen.

Ich habe die 6 Patches in der “source” sowie in der “md5sums” Sektion der Datei hinzugefuegt, sowie natuerlich auch in dem “build” Segment. Sinnvoll ist es auch den pkgname abzuaendern, dann kann man den Arch Kernel sowie den eigenen parallel installieren.

Somit laeuft die Karte mit minimalstem Aufwand, ich bin mal gespannt wie sie sich jetzt hier im Dauereinsatz schlaegt.

 

 

Mar 052011
 

Beim Versuch auf einem DD-WRT Router (DD-WRT v24-sp2) mittels OpenVPN eine Lan2Lan Kopplung zu bauen bin ich ueber ein kleines gemeines Detail gestolpert: DD-WRT nimmt das mit dem OpenVPN “Client” sehr ernst, es nattet alles was ueber den VPN Tunnel rausgeht, und laesst keine neuen Anfragen aus dem Tunnel heraus zu, nur Pakete die zu einer bestehenden Verbindung gehoeren. PCs hinter dem Router koennen also wunderbar auf das Netz hinter dem OpenVPN Server zugreifen, aber nicht umgekehrt. Ist natuerlich bloed wenn ein System auf Serverseite die Verbindung aufbauen will, z.b. wenn irgendwas auf einem Drucker hinter dem DD-WRT Router ausgeben soll.

Fuer eine echte Lan2Lan Kopplung gibt es im DD-WRT Wiki die abenteuerlichsten Vorschlaege – das einfachste duerfte aber mein Weg sein: einfach folgende Befehle im DD-WRT Webinterface unter “Administration” -> “Commands” eintragen und als Firewall-Regeln speichern:

iptables -N VPN
iptables -F VPN
iptables -A VPN -i tun0 -o br0 -j ACCEPT
iptables -I INPUT -i tun0 -j VPN
iptables -I FORWARD -i tun0 -j VPN
iptables -I POSTROUTING -t nat -o tun0 -j RETURN

Was dann geschieht ist folgendes:
Es wird eine neue VPN Chain angelegt und geleert. Alles was aus dem Interface tun0 kommt und aus dem Interface br0 raus will (das ist das LAN-Interface des Routers) wird akzeptiert. Jetzt sagen wir iptables das sowohl alle Pakete die aus dem Tunnel kommen durch die neu angelegte Chain laufen sollen. Klar, man haette auch direkt hier sagen koennen das die Pakete in Ordnung sind und durch duerfen, aber falls man den Traffic durch den Tunnel doch mal sauberer regeln will ist es so deutlich eleganter. Als letztes fuegen wir jetzt noch an den ANFANG (!) der POSTROUTING Chain eine Regel ein die iptables anweist die Pakete nicht zu natten, und schon ist die Lan2Lan Kopplung fertig.

Jetzt kann DD-WRT kommen und machen was es will, die dynamisch erzeugten Firewallregeln fuers NAT im VPN Tunnel landen immer am Ende der POSTROUTING-Chain, und werden damit nie ausgefuehrt.

Dec 222009
 

Mythtv hat, im Bezug auf die deutschen (und offenbar auch die daenischen) HDTV-Sender noch einen Bug, es gibt hierzu die Tickets 7481 und 7522. Der im ersten Ticket vorgeschlagene Patch half hier leider nicht, der Patch aus dem zweiten Ticket schon. Leider ist das erste Ticket locked, so dass ich dort nicht von meinen Erfahrungen berichten kann 🙂

Hier hat der Patch, angewendet auf mythtv 0.22 revision 22860 und 22974 Wunder gewirkt, playback von HDTV-Sendern und -Aufnahmen klappt einwandfrei.

Update: Wenn ich mir Ticket 7481 so anschaue wird es wohl in 0.22-fixes nicht mehr korrigiert werden, sondern erst in 0.23 – super, danke, NICHT.

Sep 032009
 

Im Zuge meiner Aufruestaktion hatte ich ja meinem PC im Wohnzimmer das m3n78-em gegoennt. Da das gut laeuft, und ich meine beiden HTPCs auf einer moeglichst einheitlichen Hardware haben moechte, wollte ich direkt das Board nochmal kaufen – fuers Schlafzimmer. Da es aber grad, bei den Haendlern meines Vertrauens zumindest, nicht lieferbar war, habe ich mich fuer den kleinen Bruder entschieden, das m3n78-vm. Soweit ich die Specs kontrolliert hatte war der einzige Unterschied die GPU: GeForce 8300 vs 8200. Die beiden unterscheiden sich nur minimal in der Taktung, also dachte ich: nehm ich das halt, ich muss ja eh eine PCIe-Grafikkarte nutzen (wegen S-Video zum Fernseher).

Tja, reingefallen. Das m3n78-vm verwendet einen anderen HDA Soundcodec, einen VT1708B. Das -em Board verwendet einen ALC883.

Der entscheidende Unterschied: Stand heute laesst sich, weder mit einem vanilla Kernel 2.6.31-rc8 noch mit alsa-driver-9999, dem Board kein Pieps ueber den optischen S/PDIF Ausgang entlocken. Unter Windows XP gehts einwandfrei, die Hardware ist also soweit in Ordnung. Mit Google findet man Berichte dazu, die ueber ein halbes Jahr alt sind. Wer also mit dem Gedanken spielt sich dieses Board fuer den Einsatz unter Linux zu kaufen – denkt nochmal drueber nach.

Das Asus m3n78-em ist jedenfalls die bessere Wahl, ich behelfe mir jetzt erstmal mit einer alten Soundblaster Live…

Oct 182008
 

So, alle Hardware beisammen und zusammengeschraubt:

Und natuerlich gibts auch wieder ein paar Kritikpunkte, die aber zum Glueck alle nicht so dramatisch waren wie beim Atom-basierten Versuch 🙂

Folgende Hardware ist es jetzt geworden:

Mainboard: Abit AN-2MHD
CPU: AMD Athlon64 X2 4800+ EE
CPU Kühler: Scythe Shuriken
Ram: 2 * Aeneon 512 MB DDR2-800
Grafikkarte: MSI NX7300GS-TD256EH
DVD-Brenner: Samsung SH-S183L (LS) SATA
Gehäuse: Antec New Solution NSK1380
Netzteillüfter: Scythe SFlex800 (ausgetauscht)
Netzteil: Antec 350W 80+, war beim Gehaeuse dabei
Fernbedienung: Terratec Fernbedienung Modell 10477

Im Prinzip also das gleiche Innenleben wie beim HTPC im Wohnzimmer, nur das hier eine zusaetzliche Grafikkarte verbaut ist. Ich brauchte zwingend einen S-Video-Ausgang, und irgendwie war kein Board mit NVidia-Grafik und S-Video zu finden. Sollte im Schlafzimmer doch irgendwann mal ein Flachbild-Fernseher auftauchen fliegt die Karte raus und ich nutze direkt HDMI.

Jetzt aber zu den beiden Kritikpunkten: Platz und Lautstaerke. Antec bewirbt das Gehaeuse ja mit  fast geraeuschlosem Betrieb dank leisem 120mm Luefter – ok, er ist alles, aber nicht “fast geraeuschlos”, dazu unten dann mehr. Erstmal zum Platz und dem Aufbau des Gehaeuses:

Soweit kommt man nur wenn man nicht nur den Laufwerkskaefig ausbaut, sondern auch das komplette Netzteil inkl. Traegerblech. Laesst man das Netzteil drin ist das ganze eine ziemliche friemelei. Das Kabel fuer die Stromversorgung vom Netzteil reicht auch nur sehr knapp bis zur Steckerleiste auf dem Mainboard, und wie eng das ganze dann mit montiertem Netzteil bzw. Laufwerkskaefig ist kann man hier sehen:

Gut das ich mich auf Verdacht fuer einen sehr flachen CPU-Kuehler entschieden habe. Und in das Gehaeuse passen noch drei Festplatten – da ist dann kein bisschen Platz mehr frei. Die Durchlueftung scheint mir auch nicht ganz optimal zu sein, der Gehaeuseluefter ist direkt im Netzteil, und die nach oben aufsteigene Abwaerme vom CPU-Kuehler hat keinen direkten Weg ins bzw. durchs Netzteil raus.

Das Hauptproblem war aber der Netzteil-Luefter. Der ist nicht wie Antec bewirbt fast unhoerbar. Ich habe mal geschaut was Antec dort verbaut: einen Adda AD1212MB-A73GL. Technische Eckdaten: 2050rpm bei 12V, 38 dBA und 136m³/h Luftdurchsatz. Laut Sensor auf dem Mainboard laeuft er mit ca. 900rpm, was dann in etwa 60m³/h macht. Ich habe dann mal das Garantiesiegel ignoriert und den Luefter durch einen Scythe S-Flex 800 ersetzt, technische Daten hier: 800rpm bei 12V, 8,7 dBA und 58m³/h Durchsatz. Ich lasse es mal auf die 2m³/h ankommen 🙂

Damit laeuft er jetzt schoen ruhig, und der einzige Unterschied zum Linux-System im Wohnzimmer ist die xorg.conf. Hier muss ich mir noch was ueberlegen damit ich im letzten Schritt ein einheitliches Image fuer beide HTPCs verwenden kann.

Oct 152008
 

So, nach dem leicht fehlgeschlagenem Atom-Versuch habe ich einen Rundumschlag gemacht und den Wohnzimmer-HTPC etwas modernisiert und aus den Resten sowie weiteren Neukaeufen (Details dazu in den naechsten Tagen) einen neuen Schlafzimmer-HTPC gebastelt.

Die aktuelle Konfiguration des Wohnzimmer-HTPCs:

Mainboard: Abit AN-2MHD
CPU: AMD Athlon X2 4850e
CPU Kühler: Scythe Ninja Mini
Ram: 2 * Aeneon 512 MB DDR2-800
DVD-Brenner: Samsung SH-S183L (LS) SATA
Gehäuse: Antec Fusion
Gehäuselüfter: Scythe SFlex800
Netzteil: be quiet Straight Power 350 Watt
Tastatur/Maus: Sharkoon Wireless Home Digital Keyboard

Ich habe also die CPU getauscht (100MHz weniger, dafuer 45 statt 65 Watt TDP) und die Festplatte sowie ein Gehaeuseluefter sind rausgeflogen. Der Schlafzimmer-HTPC sieht fast identisch aus, aber dem widme ich (sobald er fertig ist) einen eigenen Beitrag.

Interessant ist der Stromverbrauch:

Linux Console:
– idle, 1 GHz CPU Takt: 33 Watt
– idle, 2.5GHz CPU Takt: 40 Watt

MythTV Frontend:
– idle, 1 GHz CPU Takt: 34 Watt
– idle, 2.5GHz CPU Takt: 41 Watt
– SDTV Wiedergabe, CPU Takt dynamisch: 42 Watt Peak
– HDTV Wiedergabe, CPU Takt dynamisch: 59 Watt Peak

Alles gemessen mit einem Conrad Energy Check 3000 Messgeraet.
Irgendwie wirkt der Dualcore-Atom mit seinen 29 Watt Idle-Stromverbrauch da etwas schlecht 🙂

Micha: Mit nem Kernel >= 2.6.26 geht powernow/cpufreq jetzt einwandfrei.

Oct 052008
 

Tja, und schon ist das Atom-Spielzeug weg. Der S-Video-Ausgang war nicht zur Mitarbeit zu ueberreden. Die Performance zwar OK, gerade unter XP oder Linux im normalen Desktop-Betrieb, aber fuer HDTV vielleicht doch etwas duenn. Ich denke mal jetzt wirds ein Klon des HTPCs im Wohnzimmer, der hat dann genug wumms und verbraucht auch nicht dramatisch mehr (das Intel Board mit Dualcore-Atom lag bei ca. 30 Watt idle, da sollte sich Intel echt was fuer den Chipsatz ueberlegen der offenbar mit um die 20 Watt zuschlaegt…).

Bis auf das Netzteil hat Alternate alles lieferbar, mal schauen wann ich zuschlage. Die Tests mit dem Arbeitszimmer-PC sind jedenfalls sehr vielversprechend, ich habe ein wunderbares Bild auf dem Fernseher 🙂