Category Archives: Linux/BSD

Debian Installation auf einer Seagate FreeAgent DockStar

Durch Zufall wurde ich auf die DockStar aufmerksam geworden und habe mir direkt eine bestellt. Findigen Leuten ist es nämlich gelungen Linux auf das kleine Gerät zum laufen zu bekommen. Das Geniale an dem Gerät ist das es nur 26EUR kostet und nur 8Watt verbraucht.

CPU & RAM Übersicht (aus der busybox):

-bash-3.2# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 1 (v5l)
BogoMIPS        : 1192.75
Features        : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant     : 0x2
CPU part        : 0x131
CPU revision    : 1
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 16384
I assoc         : 4
I line length   : 32
I sets          : 128
D size          : 16384
D assoc         : 4
D line length   : 32
D sets          : 128

Hardware        : Feroceon-KW
Revision        : 0000
Serial          : 0000000000000000
-bash-3.2# free
total         used         free       shared      buffers
Mem:       126064       123488         2576            0          104
Swap:            0            0            0
Total:       126064       123488         2576

Wir können das Linux nicht direkt auf dem Gerät Installieren sondern auf einem USB Stick oder externe Festplatte. Zum testen benutze ich hier einen 4GB USB Stick. Das Wichtigste ist dass das Gerät NIEMALS vorher mit dem Internet in Kontakt war. Es gibt auch verschiedene Anleitungen. Ich habe beide benutzt ;)

NOTE: So wie es aussieht hat Jeff es geschafft Debian auf das NAND zu installieren! Das probiere ich demnächst aus.

Als erstes müssen wir die Dockstar mit einem Computer verbinden und die IP des Gerätes heraus finden:

root@host ~ # ifconfig eth0 169.254.1.0
root@host ~ # nmap -e eth0 -sP 169.254.0.0/16

Danach melden wir uns mit folgenden Daten per ssh an:

user: root
password: stxadmin

Ab jetzt streiten sich die Geister was gemacht werden soll. Ich habe mich dazu entschieden die Pogo Software zu Beenden damit wir den Knilch an unser normales Netzwerk verbinden können.

-bash-3.2# killall hbwd
-bash-3.2# mount -o remount,rw /
-bash-3.2# chmod go+w /dev/null
-bash-3.2# vi /etc/init.d/rcS

folgendes kommentieren damit es wie folgt aussieht:

#/etc/init.d/hbmgr.sh start

Jetzt können wir das Gerät ausschalten und an unser normales Netzwerk anschliessen:

-bash-3.2# mount -o remount,ro /
-bash-3.2# /sbin/halt

Bevor wir weiter machen können muessen wir einen USB Stick vorbereiten auf dem wir Debian Installieren können. Dabei muss beachtet werden das die erste Partition die root Partition wird und die zweite die Swap.

Partition 1, primaer, Typ Linux, min. 280MB, Typisch 512MB
Partition 2, primaer, Typ Swap,  ~100-500MB (je groesser, desto besser fuer das Wear Leveling des Sticks)

Nachdem die DockStar von unserem DHCP (in unserem “nomalen” Netz”) eine IP bekommen hat können wir uns wieder mit der Box verbinden und anfangen Debian Installieren mit Hilfe einem Script von Jeff Dozan:

-bash-3.2#  cd /tmp
-bash-3.2# wget http://jeff.doozan.com/debian/dockstar.debian-squeeze.sh
-bash-3.2# chmod +x dockstar.debian-squeeze.sh
-bash-3.2# export PATH=$PATH:/usr/sbin:/sbin
-bash-3.2# ./dockstar.debian-squeeze.sh

Das wird ein bisschen dauern und danach ist Debian Squeeze und ein neuer Bootloader Installiert :D Bei der Einrichtung kann man getrost der Anleitung von mikrocontroller.net folgen. So schnell kann man einen kleinen 24/7 Server mit 4 USB Ports und einem 1GB RJ45 Anschluss haben mit nur 8Watt (inklusive Platten) verbrauch.

Twitter::Lite und OAuth

Wie manche früher oder später *hust* mitbekommen haben erlaubt Twitter jetzt nur noch OAuth als Authentifizierungsverfahren. Ich war in letzter Zeit irgendwie sehr beschäftigt und habe es erst gestern gemerkt. Also musste ich mein rss2twitter script auf OAuth umstellen und dabei hat bayashi sehr geholfen. Im großen und ganzen geht das sehr einfach und hier gibt es das Script zum Nachlesen:

#!/usr/bin/perl
# script: Using the latest RSS entry to update Twitter

use strict;
use warnings;
use Net::Twitter::Lite;
use LWP::Simple;
use XML::RSS::Parser::Lite;
use WWW::Shorten::Metamark;

my $feed = get(‘http://dailywadoku.itbert.de/feed.rss’);
my $rp = new XML::RSS::Parser::Lite;

$rp->parse($feed);

my $it = $rp->get(0);

my $long_url = $it->get(‘url’);
my $short_url = makeashorterlink($long_url);
my $message = $it->get(‘description’);

$message =~ s/^.+ – //; # remove dash seperator.
$message =~ s/^\s+//; # Nuke any leading space; every char counts.
$message =~ s/\s+$//; # Nuke any trailing space; every char counts.
$message =~ s/[_]+$//; # Nuke any trailing underscores; happens when message is short.

$message = substr $message , 0 , 116; # Twitter can only handle 140 chars.
$message .= ‘ -> ‘; # Append ellipse to denote further content available.
$message .= $short_url; # Append the shortened URL.

# get in http://dev.twitter.com/apps/XXXXXX
my %CONSUMER_TOKENS = (
consumer_key    => ‘** CONSUMER_KEY **’,
consumer_secret => ‘** CONSUMER_SECRET **’,);

# get in http://dev.twitter.com/apps/XXXXXX/my_token
my $ACCESS_TOKEN        = ‘** ACCESS_TOKEN **’;
my $ACCESS_TOKEN_SECRET = ‘** ACCESS_TOKEN_SECRET **’;

my $t = Net::Twitter::Lite->new(%CONSUMER_TOKENS);
$t->access_token($ACCESS_TOKEN);
$t->access_token_secret($ACCESS_TOKEN_SECRET);
my $status = $t->update($message);

So Sachen wie ** CONSUMER_KEY ** müssen natürlich ersetzt werden und sind hier nur Platzhalter.

Froscon 2010 in St. Augustin

Vergangenes Wochenende war die fünfte (für mich die erste) Froscon in St. Augustin in der nähe von Bonn. Es gab spannende Vorträge und leckere Getränke. Da ich leider nicht alle Vorträge sehen konnte warte ich schon gespannt auf die Streams, aber bis das soweit ist wollte ich schon einmal eine Empfehlung abgeben von Vorträgen die ich sehr gut gefunden habe:

  • Gute Open-Source-Projekte bestehen aus mehr als nur Code (lnk) (folien)
  • Antifeatures (lnk)
  • Quadrocopter für Anfänger (lnk)
  • Die wunderbare Welt der Regulären Ausdrücke (lnk) (folien)

Das sind meine vier must seen Vorträge die man sich auch Anschauen sollte, wenn man nicht vor Ort war. Sobald die Videos verfügbar sind werde ich die noch ergänzen.

Aufnahmen: http://ftp-b.stw-bonn.de/froscon/2010/

Domains abschalten

Wie schaltet man am besten unbenutzte Domains ab? Über die Jahre sammeln sich immer ein paar Domains an und ich bin momentan am überlegen ein paar nicht mehr zu verlängern. Doch wie schaltet man am besten ab? Dabei stellen sich bei mir Fragen wie:

  • Welche Email Adressen werden noch benutzt?
  • Greift noch irgendwer auf die Domains zu?

Dabei habe ich mir folgende Strategie ausgedacht:

  1. Domains auf die neue oder andere Domain weiterleiten (siehe Apache Konfiguration)
  2. Emails automatisch im Thunderbird farblich markieren lassen
  3. gegebenenfalls Apache Logs überprüfen

Nach einer Weile kann man dann sehen welche Emails noch benutzt werden und diese dann beim Anbieter auf eine Aktuelle ändern. Nachdem dies passiert ist werde ich den A record der Domain entfernen. Somit ist die Domain so gut wie abgeschaltet, nur man bekommt noch Emails um zu schauen ob wirklich noch wer Adressen der Domains benutzt. Sobald man sicher ist das keiner mehr die Adressen benutzt (kann man eigentlich nie) kann man auch den MX record abschalten und weg ist die Domain. Dann sollte man noch sicher gehen das sich die Domains nicht automatisch verlängern bzw. Kündigen.

Apache Konfiguration zum Weiterleiten:

<VirtualHost example.org:80>
ServerName www.example.org
ServerAdmin webmaster@example.org

ErrorLog /var/log/apache2/error.log
LogLevel warn
ErrorDocument 404 http://www.itbert.de

RewriteEngine on

Options +FollowSymLinks
RewriteRule   ^/(.+)  http://www.itbert.de/$1  [R,L]
RewriteRule   ^/  http://www.itbert.de/  [R,L]

CustomLog /var/log/apache2/access.log combined
ServerSignature Off

</VirtualHost>

Ein Test von proplay.de

Auf linuxforen.de bin ich auf einen Artikel gestoßen der um günstige vServer handelt und damit bin ich zufällig auf proplay.de gestoßen. Bei einem Preis von dem kleinsten vServer von 6EUR für 3 Monate kann man sich mal einen Spaß erlauben. Ich gehe an die Sache mit wenig Erwartungen und werde ein bisschen Berichtigen wie es dem Server oder meinen Nerven ergeht.

Nachdem ich meine Kundendaten (nach einem Arbeitstag) erhalten habe und das Erste mal eingeloggte war sah ich Nachrichten über Wartungsarbeiten  mit Uhrzeitangaben wo ich nicht entziffern kann ob die UTC, GMT oder GMT+6 sind. Ansonsten ganz schnell zusammengefasst auf den ersten Blick:

  • Debian 5.0 Minimal / Ubuntu LTS / Arch… (also viel Auswahl)
  • iptables input chain sieht sehr…. freizügig aus, aber wenigstens gibt es eine und man kann sie einfach bearbeiten (init script)
  • cool ein “RAC Interface” über ssh
  • snapshot backups für den vServer (leider nur ein snapshot jeden Monat, aber immerhin)
  • laut Webinterface habe ich keine native ipv6 Adressen – laut Anzeige aber schon! Notiz: Mail schreiben (noch keine Antwort nach Tagen…)
  • ich habe zwar eine Messageinbox, aber kann selber keine schreiben aus dem Webinterface (oder ich finde sie nicht)
  • FAQ ist anscheinend noch im Aufbau

Soweit kann ich sagen das es auf den ersten Blick ganz ordentlich aussieht, auch wenn noch nicht alle Funktionen im Webinterface funktionieren und ich meine ipv6 Adressen vermisse.

How to get authvchkpw working for courier?

Leider bieten die aktuellen Versionen von courier keinen Support mehr fuer authvchkpw und daher muss man einen kleinen hack machen und Versionen mischen :(

wget http://www.qmailrocks.org/downloads/courier-authlib-0.55.tar.bz2
tar jxvf courier-authlib-0.55.tar.bz2
cd courier-authlib-0.55
apt-get install libdb-dev
./configure –prefix=/usr/local –exec-prefix=/usr/local –with-authvchkpw  –without-authldap –without-authmysql –disable-root-check –with-ssl
make && make check
cp .libs/libauthvchkpw.so /usr/lib/courier-authlib/

und natürlich:

/etc/init.d/courier-authdaemon restart

und dann könnte man mit glueck folgendes sehen:

Mar 15 20:41:34 host authdaemond: stopping authdaemond children
Mar 15 20:41:34 host authdaemond: modules=”authvchkpw”, daemons=5
Mar 15 20:41:34 host authdaemond: Installing libauthvchkpw
Mar 15 20:41:34 host authdaemond: Installation complete: authvchkpw

und nicht mehr:

Mar 15 16:46:37 host authdaemond.plain: restarting authdaemond children
Mar 15 16:46:37 host authdaemond.plain: modules=”authvchkpw”, daemons=5
Mar 15 16:46:37 host authdaemond: modules=”authvchkpw”, daemons=5
Mar 15 16:46:37 host authdaemond: Installing libauthvchkpw
Mar 15 16:46:37 host authdaemond: libauthvchkpw.so: cannot open shared object file: No such file or directory

Ausprobiert auf Debian Lenny.  (via)

Gestern? Morgen?

Solaris macht mir manchmal das Leben schwer. Ich verstehe dass man kompatibel bleiben will, aber das kann man auch anders lösen.

Unter Linux kann man recht bequem das Datum von gestern anzeigen lassen:

[bert2002@computer ~]$ date –date=’1 day ago’ +%Y-%m-%d
2010-03-01

aber unter Solaris muss man wieder einen Trick anwenden:

[bert2002@computer ~]$ TZ=”GMT+24″ date +’%Y-%m-%d’
2010-03-01