KategorieWork @ Home

lxc usb passthru

Heute mal etwas ausführlicher, deshalb noch ein weiterer Blog zum Thema LXC.

Zuhause habe ich noch einen Farblaser von Samsung. Leider hat der Laser weder einen Netzwerkanschluss noch versteht er AirPrint beziehungsweise Google Cloud Print. Nichts einfacher als das dachte ich mir, und erzeugt einen Ubuntu LXC Gast. Im Anschluss habe ich die Konfiguration des Containers wie folgt bearbeitet. Nach einem Neustart des Containers war das USB gerät, in meinem Fall der Drucker, verfügbar.

lxc.cgroup.devices.allow = c 189:* rwm
lxc.mount.entry = /dev/bus/usb dev/bus/usb none bind,optional,create=dir

 

Lebensdauer von Flashdrives unter Debian/Raspbian/Openmediavault verbessern

Nachdem ich mittlerweile etliche Flashdrives, SSDS & SD-Karten in meinen PIs & Server verschlissen habe, dachte ich mir nun, dass es wohl Sinn macht, mich dem Thema mal etwas genauer anzunehmen.

Nach einigen Recherchen im Internet, gibt es grundsätzlich 2 verschiedene Ansätze. Zum einen den, das Haupt OS generell schreibgeschützt aufzusetzen, oder den, verschiedene Verzeichnisse nur in eine Ramdisk zu legen. Ich habe mich für den 2ten Weg entschieden. Und mein OpenMediaVault dementsprechenden gemoddet.

Ich setzte dabei das Paket fs2ram ein. Dieses ist ähnlich der fstab aufgebaut. Im Gegensatz zu einem normal tmpfs mount, können hier Struktur & Daten gesichert werden. Das Paket ist nicht im Standard Repository, und muss manuell geladen und installiert werden.

Für /tmp sollte der Eintrag in /etc/fstab wie folgt schon vorhanden sein, wenn nicht einfach einfügen zudem auch noch das “defaults,noatime” bei dem Root-Device einrichten:

/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
tmpfs          /tmp           tmpfs      defaults,noatime            0     0

Installation von fs2Ram auf allen Platformen (ARM, X32 & X64)

wget --no-check-certificate "https://miami.tschoerner.eu/deb/all/fs2ram_0.3.12_all.deb" -O fs2ram_0.3.12_all.deb
sudo dpkg -i fs2ram_0.3.12_all.deb

Dies ist meine fs2ram.conf von OpenMediaVault:

#
# In case you want to make /var/lock or /tmp available as ram
# filesystems, it is preferable to set the variables RAMTMP, RAMLOCK
# from /etc/default/tmpfs.
#
#<file system>  <mount point>   <script>                <script option> <type>  <options>
#tmpfs            /var/log        keep_file_content       -               tmpfs
#tmpfs            /var/cache      keep_file_content       -               tmpfs
#tmpfs            /var/tmp        keep_file_content       -               tmpfs
tmpfs            /var/log        keep_file_content       -               tmpfs
tmpfs            /var/cache      keep_file_content       -               tmpfs
tmpfs            /var/tmp        keep_file_content       -               tmpfs
tmpfs           /var/lib/openmediavault/rrd     keep_file_content       -               tmpfs
tmpfs           /var/spool                      keep_file_content       -               tmpfs
tmpfs           /var/lib/rrdcached/             keep_file_content       -               tmpfs
tmpfs           /var/lib/monit                  keep_file_content       -               tmpfs
tmpfs           /var/lib/php5                   keep_folder_structure   -               tmpfs

Nach den Änderungen sollte man das System einmal durchstarten.

Falls Ihr eine Disk im System als Root-Disk habt, könnt Ihr noch mit “hdparm” herumspielen.

#aktuelle Disk status
root@London:~# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  active/idle

#Disk schlafen schicken
root@London:~# hdparm -y /dev/sdc

/dev/sdc:
 issuing standby command

#status prüfen
root@London:~# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  standby

#Disk nach 5 Minuten automatisch herunterfahren
root@London:~# hdparm -S 60 /dev/sdc

DDWRT und anonyme OpenVPN Provider

Ab und zu ist es notwendig seine Herkunft zu verschleiern 😉 Es gibt verschiedene bezahl und auch kostenlose VPN Dienstleister. Über die Sicherheit kann man hier auch diskutieren, aber ich denke, dass man selber das Produkt bei kostenlosen Providern ist und ich somit eher zu einem Paid Service raten würde. Ich persönlich nutze den Service von BOXPN.

Falls man sich für einen kostenlosen Dienst entscheidet, muss man pro-aktiv etwas für die Sicherheit der heimischen Netzes tun. Mit einer personal Firewall auf Windows, wird man das Ganze nicht absichern können.

In meinem Aufbau nutze ich ein DDWRT geflashten Cisco E3200 als VPN Router und Accesspoint.

Hier nun ein Howto, wie Ihr DDWRT konfiguren müsst. Eure Firmware muss zunächst OpenVPN unterstützen. Ich habe mich für das mega build entschieden.

ddwrt1

 

Unter Services –> VPN muss zunächst OpenVPN aktiviert werden. und wie gezeigt konfiguriert werden.

Teil 1:
ddwrt2

Teil 2:
ddwrt3

Wichtig ist hier der Punkt Firewall Protection!

Bein Additional Options muss folgendes eingefügt werden:

persist-key
pull
route-delay 2
redirect-gateway
ns-cert-type server
cipher BF-CBC

Wobei einige Konfigurationen zwischen den Providern differieren.

Hier gehts noch zu VPNBook & FreeVPN.

 

 

 

Openmediavault Disk IO on Linux and Windows vBox Guest

Da man ja bekanntlich ;D zwischen den Jahren nicht viel zu tun hat, habe ich heute die Kernel Logs meines NAS auf Basis von OpenMediaVault geprüft. Mir fiel dabei auf, dass der aktuelle Kernel von Wheezy keine optimale Unterstützung für die von mir eingesetzte j1900 CPU (Intel ARK).

Nachdem ich mit einen “Custom” Kernel genaut habe, passen jetzt auch die non-free treiber zum j1900. Dieser unterstützt jetzt auch im Burst-mode 2.4 Ghz.

root@London:~# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Bitte melden Sie Fehler an cpufreq@vger.kernel.org.
analysiere CPU 0:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 0
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 0
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.33 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 1:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 1
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 1
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.33 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 2:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 2
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 2
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.34 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 3:
  Treiber: intel_pstate
  Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 3
  Die Taktfrequenz folgender CPUs werden per Software koordiniert: 3
  Maximale Dauer eines Taktfrequenzwechsels: 0.97 ms.
  Hardwarebedingte Grenzen der Taktfrequenz: 1.33 GHz - 2.42 GHz
  mögliche Regler: performance, powersave
  momentane Taktik: die Frequenz soll innerhalb 1.33 GHz und 2.42 GHz.
                    liegen. Der Regler "powersave" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.35 GHz  (verifiziert durch Nachfrage bei der Hardware).
root@London:~#

Wenn jetzt also die Treiber besser passen, dachte ich mit, teste ich noch schnell mal den IO auf mein internes RAID5 (3x WD RED). Eine einfache Messung habe ich auf der Konsole mittels dd durchgeführt.

Test 1: 8k Länge & Anzahl 256k

Test 2: 8K Länge & Anzahl 512k

root@London:/media# dd if=/dev/zero of=/media/3e0a8081-0482-4a84-8e05-ae2106117e16/test/output.img bs=8k count=256k
262144+0 Datensätze ein
262144+0 Datensätze aus
2147483648 Bytes (2,1 GB) kopiert, 7,72799 s, 278 MB/s
root@London:/media# dd if=/dev/zero of=/media/3e0a8081-0482-4a84-8e05-ae2106117e16/test/output.img bs=8k count=512k
524288+0 Datensätze ein
524288+0 Datensätze aus
4294967296 Bytes (4,3 GB) kopiert, 17,2436 s, 249 MB/s

In einem VirtualBox Windows Gast habe ich eine Messung mit Cristal Mark gemacht. Auch hier war ich mit der Leistung durchaus zufrieden.

cristal_mark_LYON_TerminalServer_VM_test2

Als Vergleich noch mein Laptop mit SSD & HDD:

SSD:

SSD_c-Drive

HDD:

HDD_D-Drive

Mit der Disk-Performance meines NAS Server kann ich wohl ganz zufrieden sein.

ffmpeg selber bauen unter Debian Wheezy

Um eine neue Version … die Neueste … von ffmpeg zu bauen, geht Ihr wie folgt vor.

apt-get update
apt-get build-dep ffmpeg
mkdir /root/ffmpeg
cd /root/ffmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg/
./configure --enable-avresample && make && make install

Kaffee trinken und warten 😉

Ich arbeite im Moment noch einer ffmpeg Version, welche das Hardware Beschleunigte trans codieren mittel Intels Quick Sync Technology erlaubt…

TvHeadend, libiconv unter Wheezy

Da die libiconv nicht von Debian mit ausgeliefert wird, diese aber gerne genutzt wird  im TvHeadEnd hier eine quick Guide zu selber kompilieren:

mkdir /root/libiconv/
cd /root/libiconv/
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
tar xvzf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure && make && make install

Das sollte es gewesen sein, jetzt meckert auch TvHeadEnd nich mehr rum.

OpenVZ und Debian Wheezy

Heute möchte ich Euch keine kurze Einleitung geben, wie Ihr Euch zu Hausen einen eigenen OpenVZ Server einrichtet.

Falls Ihr Euch noch nicht mit OpenVZ auseinander gesetzt habe, habe ich Euch mal den Wikipedia Artikel verlinkt.

Als erstes muss man das Repository in der sources.list eintragen. Hierzu einfach folgenden Befehl als root ausführen.

cat << EOF > /etc/apt/sources.list.d/openvz-rhel6.list
deb http://download.openvz.org/debian wheezy main
# deb http://download.openvz.org/debian wheezy-test main
EOF

Um auch Pakete aus dem Repository installien können müssen wir noch den GPG-Key installieren.

wget http://ftp.openvz.org/debian/archive.key
apt-key add archive.key

Als nächstes machen wir ein Update der Paketlisten:

apt-get update

Nachdem jetzt alle Vorbedingen erfüllt sind gehts an die eigentliche Installation. Zunächst müssen wir bestimmen ober wir ein 32bit oder 64bit System als Host haben. Abhängig davon müssen wir den OpenVZ Kernel für 32 oder 64 bit installieren. Mit dem folgenden Befehl könnt Ihr den notwendigen Kernel bestimmen.

apt-cache search linux-image-openvz

Der Befehlt lieferte auf meinem System das 64bit Paket zurück.

apt-get install linux-image-openvz-amd64 vzctl vzquota vzdump

Alle abhängigen Pakete müssen natürlich mitinstalliert werden 😉

Um muss das Dateisystem noch eingebunden werden:

ln -s /var/lib/vz /vz

Jetzt nehmen wir noch einige systemspezifische Änderungen vor und fügen folgenden Code in die /etc/sysctl.conf ein

net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1

Jetzt geschwindt noch die Einstellungen anwenden:

sysctl -p

Um standardmäßig den notwendigen OpenVZ Kernel  zu booten, muss der Grub Bootloader noch angepasst werden:

nano /etc/default/grub

In der Konfigurationsdatei dann einfach den Defaultwert auf 2 setzen. Warum? das Ihr noch 2 Einträge davor habt und Grub bei 0 anfängt zu zählen.

...
GRUB_DEFAULT=2
...

Grub kann nun geupdated werden und der original Kernel deinstalliert.

update-grub
apt-get remove linux-image-amd64 linux-image-3.2.0-4-amd64
update-grub

Nach dem Neustart könnt Ihr nun Prüfen ob der richtige Kernel gebootet wurde.

uname -r

Wenn alles OK war, geht es mit dem OpenVZ Web Panel (OWP) weiter:

Es gibt eine automatische Installationsroutine für das OWP, welche durch den folgenden Befehl runtergeladen und direkt ausgeführt wird.

wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh

Wenn Ihr jetzt einen Fehler bezüglich ruby Version 1.9 bekommt führ bitte folgende Befehle aus:

apt-get install ruby1.8 ruby-switch
ruby-switch --set ruby1.8

Jetzt wiederholt bitte der Schritt zur Installation des OWP.

Euer OpenVZ Server ist nun fertig installiert 😉 Öffnet das Web Panel und ändert butte den Login.

http://<serverip>:3000/

Fritzbox, Linux clients und statische IPs

Wer kennt das Problem nicht, man hat eine Linux Box im Heimnetz. Ob visualisierte test Maschinen, Raspberries oder ähnliches. Bei mir haben alle “stationären” Systeme feste IPs. Jetzt beginnt das Problem, da diese Systeme meist nicht hinausposaunen. Die Fritzbox muss sich nun überlegen, wie sie an den Namen kommt. 2 Wege funktionieren typischerweise. Zu einen kann die Fritzbox den Namen via Netbios bestimmen oder aber via Bonjour.

Hier die Anleitung wie Ihr Bonjour auf Debian, Raspbian, Raspbmc nachinstallieren könnt (der Name kommt dann aus /etc/hostname)

apt-get install avahi-daemon

 

Entfernen von Web-App in ClearOS 6.x

Heute stand ich spontan beim Aufräumen meiner Server vor dem Problem, wie man “App’s” auf einem ClearOS Small Business Server entfernt.

Nach 10 Minuten suchen ohne Rat fand ich heraus, dass es auf der Roadmap ist, oder war? … ein Deinstallation Feature zu installieren. Geholfen hat die Aussage nur in so fern, dass ich händisch aktiv werden muss. Für alle die ClearOS nicht kennen; es ist der einzige Server bei mir, der nicht auf Debian basiert. ClearOS ist ein Weiterentwicklung von CentOs was bekanntlich auf RedHat basiert.

Also kurz die rpm-Paketlisten gecheckt und herausgefunden, dass man die App auch wieder mit rpm weg bekommt.

Der Befehl lautet:

rpm -e app-antivirus

Wobei “antivirus” mit dem zu entfernenden App ersetzt werden muss. Den richtigen Namen des Apps kann man anhand der URL im Weg-Ui bestimmen.

Loggt man sich ein und wechselt auf das zu deinstallierende App, beispielsweise FTP, dann lautet die Url: https://ClearOS:81/app/ftp
Der Befehl würde dann also so lauten:

rpm -e app-ftp

 

Virtualisierung @ Home

Immer mehr gibt es den Trend “Cloud”. Was ist die Cloud? Cloud, also Wolke ist etwas sehr undurchsichtiges. Spätestens jetzt sollten alle Alarmglocken klingeln. Ich habe für mich entschieden, dass ich den Trend des Daten “sharings” nicht ungebremst mit machen möchte. Ich möchte weiterhin der alleinige Besitzer meiner Daten sein und auch wissen wo diese liegen.

Wie ich bereits schon früher geboggt habe, gibt es auch alternativen zum Mainstream Cloudstorage. Hier setzt ich auf ein ownCloud, gehostet in Frankfurt auf einem Filesystem mit militärischer Verschlüsselung.

Wem das immer noch nicht reicht, der hostet seine Server zu Hause. Hier kommt das Thema Virtualisierung zum Einsatz. Mittlerweile betreiben ca. 30% aller Haushalte ein NAS-System (Network Attached Storage) zu hause. Was wäre nun, wenn man eine Stromsparende CPU mit 64bit Architektur drinnen hätte? Der Stromverbrauch immer noch niedrig, aber deutlich mehr Leistung. Willkommen in 2014! Der NAS-Hersteller QNAP hat seinen neuen NAS-Systemen Intels Celeron verpasst und bietet jetzt Virtualisierung auf dem NAS an. Für mich war das Anreiz genug mit ein solches System zusammen zu stellen und das ganze einmal zu testen.

Was kam zu Einsatz?

Beim Board habe ich mich für das ASRock Q1900M M-ATX J1900 entschieden. Es hat zwar nur 2 SATA Schnittstellen aber mein OS soll ja eh auf ein USB3 Stick. Zudem hab ich noch einen Riegel mit 8GB reingepackt. Für ein NAS ABSOLUT überdimensioniert, aber für ein Virtualisierungshost notwendig. On-Top noch ein bisschen Kleinkram aus den Kramskisten und fertig.

Der Stromverbrauch mit einer 2,5″ 500GB Platte liegt unter Vollast bei 25W und einem Transcendent Extrem 780 32GB Stick!! Ok, es ist nur eine Platte im Moment drinnen, aber jetzt kommen noch 3x 6TG WD Red im RAID 5 rein. Für alle Kritiker von ext4 auf USB Sticks: Der USB Stick ist sehr schnell 210MB/s und unterstützt dynamic Level Wearing.

Nachdem das System eigentlich als reine V-Host gedacht war habe ich sehr mit der Stabilität von ProxMox VE gehardert. Zudem war der Kernel kein 3.2er womit kein USB 3 nativ unterstützt wurde.

Jetzt läuft auf dem System OpenMediaVault. Eigentlich wollte ich das NAS OS als Gast laufen lassen, aber es hat sich als Schweizer Taschenmesser herausgestellt und bietet dank VirtualBox auch eine gute Virtualisierung.

Hier noch ein paar Stats vom System. Und für alle Kritiker, das System war im Stress, bin ja nicht hier zum Waffeln backen 🙂