Multiboot USB Stick

December 27, 2009

multiboot-usb


english50x25 Hint: If you are not familiar with German language, but you are  an experienced Linux user: the only thing you really need is: (multiboot055.sh :-) Have fun!

Updates:

  • 3 Jan 2010:
    • Redesign of multiboot-script (multiboot055.sh)
    • SliTaz distribution added
    • SystemRescueCD updated to 1.3.4

Zielsetzungen

  • Es soll ein USB-Stick erstellt werden, von dem verschiedene LiveCDs / Betriebssystem-Installationen / Tools gebootet werden können.
  • Der USB-STick soll mit einem Standard vfat-Dateisystem formatiert werden, damit er problemlos sowohl unter Linux als auch unter anderen Betriebssystemen (z. B. Apple, Windows) gelesen werden kann.
  • Die verschiedenen bootbaren Systeme sollen als iso-Dateien auf dem Stick abgelegt werden, sodass sie problemlos aktuell gehalten werden können und keine komplizierteren Operationen zum entpacken usw. erforderlich sind.
  • Das Dateisystem auf dem USB-Stick soll schön übersichtlich sein: Es soll einen Ordner “data” enthalten, in den beliebige Daten gespeichert werden können, und einen Ordner “boot”. Dieser wiederum soll einen Ordner “iso” enthalten, indem die iso-Dateien abgelegt werden können und einen Ordner “grub”, indem die Dateien des bootloaders grub2 abgelegt werden.
    USB-Stick/data
             /boot/grub
                  /iso
  • Der USB-Stick soll möglichst einfach aktuell gehalten werden können, hierfür soll ein Shell-Script erstellt werden.

Hardware

USB Stick Rally 2 16GBEnde März 2009 habe ich mich ein wenig schlau gemacht über die Vorzüge und Nachteile verschiedener USB-Sticks. Wichtig war mir insbesondere eine gute Performance sowohl bei Schreib- als auch bei Lesezugriffen. Ich habe mich dann für den OCZ Rally 2 16GB entschieden, weil er zu diesem Zeitpunkt mit 40 Euro ein optimales Preis-Leistungsverhältinis bot. Die Preise für den Stick sind seitdem im Übrigen überraschenderweise gestiegen, ich habe wohl zum rechten Zeitpunkt gekauft :-) . Die Geschwindigkeit des Sticks wird mit Lesen: 28MB/s und Schreiben: 15MB/s angegeben und nach meinen eingenen Messungen mit hdparm -t auch knapp eingehalten (Lesen: knapp 26MB/s). Die angegebenen Lese- und Schreibraten werden auch von anderen Nutzern z. B. auf heise.de überwiegend bestätigt. Ich kann den Stick guten Gewissens empfehlen. Einziger Nachteil: Ich verliere immer die blöde Kappe. Also eher ein Stick für ordentliche Nutzer. Bezugsquellen und Preise finden sich z. B. auf heise.de/preisvergleich.

Ersteinrichtung des Sticks

Es sind eigentlich nur zwei (bis drei) Schritte erforderlich:

  1. Der USB-Stick muss formatiert werden (ein Dateisystem aufgespielt werden).
  2. Sofern nicht schon vorhanden, müssen die Grub2-Tools auf dem Rechner installiert werden.
  3. Es muss Grub2 auf dem Stick installiert werden.
 
# Sofern nicht bereits vorhanden, Grub2 (Version 1.9.7) auf dem Rechner installieren
sudo apt-get install grub2

# Device des USB-Sticks (z. B. mit "df -h" ermitteln)
DEVICE=/dev/sdb
USB_LABEL=MultibootUSB 

# Dateisystem auf USB-Stick erstellen
sudo mkfs.vfat -n $USB_LABEL ${DEVICE}1 

# USB-Stick mounten
mount ${DEVICE}1 /media/$USB_LABEL 

# Grub2 auf USB-Stick installieren
grub-install --no-floppy --root-directory=/media/$USB_LABEL ${DEVICE}

Distributionen und Tools

Es sollen die folgenden Linux-Distributionen und Tools auf dem Stick installiert werden und gebootet werden können:

  • ubuntu logoUbuntu (Distrowatch, Wikipedia de en)
    Ubuntu ist ein Debian-basiertes Linux, dass sich insbesondere auch für Linux-Anfänger eignet. Es soll in zwei Geschmacksrichtungen auf den Stick:

    • Ubuntu Desktop 9.10 Karmic Koala 32bit (Oktober 2009)
      Die aktuelle 32bit Version von Oktober 2009 – zur direkten Nutzung vom Stick sowie zur Installation
    • Ubuntu Desktop 8.04.3 LTS Hardy Heron 32bit (April 2008)
      Die aktuelle 32bit Version mit Longterm Support – die nächste LTS erscheint im April 2010 (Lucid Lynx)
  • debian-logo-verticalDebian (Distrowatch, Wikipedia de en) in der Version 5.03 (Netinstall, Version vom September 2009)
    Die Mutter sehr vieler Linux-Distributionen, sehr solide, sehr stabil, sehr frei und auf sehr vielen Plattformen verfügbar … aber deswegen manchmal etwas langsam bei der Einpflege der neuesten, hippen Features.
    Auf den Stick soll eine minimale Version, von der aus über das Internet die für eine Installation erforderlichen Pakete nachgeladen werden können.
  • grml-logoGRML (Distrowatch, Wikipedia de en) in der Version Hello-Wien vom Oktober 2009
    GRML (sprich: “grummel”) ist die eierlegende Wollmilchsau für Systemadministratoren, Geeks, Konsolen-Fans und reisende PC-Doktoren. “GRML eignet sich hervorragend für typische Systemadministratortätigkeiten. Darunter fallen Arbeiten wie Dateisystemchecks, Bootloader-Reparaturen, Hardware-Untersuchungen und Netzwerkdebugging. Aber auch für forensische Untersuchungen kommt grml zum Einsatz.” (Michael Prokopp: grml – Linux für Systemadministratoren und Texttool-User, S. 4)
  • parted_magic logoParted Magic (Distrowatch, Wikipedia de) mit Clonecilla in der Version 4.7, Dezember 2009
    zum einfachen Partitionieren, Vergrößern, Verkleinern, Sichern und Wiederherstellen von Partitionen bzw. ganzen Festplatten (auch von Windows NTFS Partitionen!)
  • Sidux-logosidux (distrowatch, Wikipedia de en) – Debian hot and spicy :-) (xfce-Version 2009-03 vom November 2009)
    Sidux basiert auf Debians unstable brunch – und versucht, diesen “stabil”, d. h. auch für den produktiven Einsatz nutzbar zu machen. Dazu wird ein eigenes Script zur Verfügung gestellt, das bekannte Bugs und Probleme löst bzw. “work-around”et.
  • SlaxLogo2Slax (distrowatch, Wikipedia de en) Version 6.1.2, August 2009
    Slackware basiertes Mini-Linux mit modularem Konzept, dass Änderungen auf dem USB-Stick speichern kann. Auf den Webseiten kann man sich seine eigene Version von Slax zusammenklicken – und nur die Applikationen auswählen, die man wirklich braucht (Slax Module Konfiguration).
  • mint-logoLinux Mint (Wikipedia de en) – Version 8.0 Helena vom 28. November 2009
    Mint basiert auf Ubuntu. Zielsetzung der Distribution: Alles soll möglichst out-of-the-box lauffähig sein. Daher sind Multimedia-Codecs bereits integriert, ebenso SUN-Java, NDIS-Wrapper Unterstützung für WLAN-Karten ist enthalten. Auf der Mint-Webseite wird die weitgehende Nutzer-Beteiligung herausgestellt: “It’s one of the most community driven distributions. You could literally post an idea in the forums today and see it implemented the week after in the “current” release.”
  • netboot-me logonetboot.me (Beschreibung auf heise.de)
    Sehr coole Idee: erlaubt es, beliebige Distributionen über das Internet zu booten, man hat die aktuellste Version der Distribution quasi immer in der Hosentasche. Derzeit stehen standardmäßig für eine Installation zur Verfügung: FreeBSD, Debian, Fedora, OpenSuse, Ubuntu und außerdem Tools wie memtest 86+, HDT, GParted, Parted Magic.
  • Tiny-Core-Linux-logoTiny Core Linux (distrowatch, Wikipedia en) – Version 2.7 vom Dezember 2009
    Wirklich winziges Linux (10Mbyte) mit grafischer Benutzeroberfläche! Es ist unglaublich, was sich in 10MB alles unterbringen lässt. Zum Surfen in Internet für zwischendurch absolut ausreichend.
  • systemrescueSystemRescueCD (distrowatch, Wikipedia de en) – Version 1.3.4
    Ein Rettungssystem um zerschossenen Linux- und Windows-Systemen wieder auf die Sprünge zu helfen, bzw. zu retten, was noch zu retten ist. Das Live-System basiert auf Gentoo. Enthält neben anderem die Tools TestDisk zum wiederherstellen verlorener Partitionen und PhotoRec zum wiederherstellen verlorener Daten.
  • SliTaz (distrowatch, Wikipedia de en) – Version Cooking vom 4. November 2009
    Eine wirklich sehr kleine Desktop Distribution (32MB), mit grafischer Benutzeroberfläche (LXDE), wird vollständig ins Ram geladen und ist daher sehr schnell. SliTaz verfügt über einen eigenen Paketmanager, der auf ein eigenes Software Repository zugreift. SliTaz stellt mit TazLito ein Tool bereit, mit dem sich schnell und einfach angepasste, um zusätzliche Pakete erweiterte SliTaz-Live-Cds (ISOs) erzeugt werden können. Wenn ich einmal viel Zeit habe, möchte ich eine SliTaz Live ISO mit den Virtualisierern qemu/KVM, VirtualBox und VMware-Player erstellen. Mit diesen können dann alle Images geladen werden, die sich über Grub2 wiederspenstig zeigen bzw. garnicht als Live-Medium verfügbar sind (wie z. B. Google Chromium OS).
  • xpud-logoxPUD (Distrowatch, Heise, Heise zur Version 0.92 Golem zur Version 0.92)
    xPUD ist insbesondere für Netbooks gedacht: “Die Benutzeroberfläche Plate – gebaut auf der Basis von Mozillas Runtime-Engine Gecko und XUL [der technische Unterbau des Web-Browsers Firefox] – kann Websites nun im Web-App-Modus direkt in der GUI öffnen.” (heise.de, s. o.)
  • memtest-logomemtest86+ (Wikipedia de en) Version 4.00 vom 22. September 2009
    Testet den Arbeitsspeicher eines Rechners mittels Stresstests auf Fehler.

Multiboot USB-Stick via grub.cfg konfigurieren

Was bleibt noch zu tun?

  1. Download der iso-Dateien der Distributionen und Tools
  2. Konfiguration des Boot-Menüs von Grub2 über die grub.cfg

Beides erledigt das Shell-Script multiboot055.sh. Im Konfigurations-Block zu Beginn des Skripts müssen ggf. einige Anpassungen vorgenommen werden (z. B. muss das Verzeichnis angegeben werden, das als Mount-Point für den USB-Stick dient). Der Rest des Skripts besteht einerseits aus einem ISO-Konfigurations-Block, in dem für jede Distribution die zum Schreiben der grub.cfg benötigten Variablen gesetzt werden und andererseits aus dem Grub2-Boot-Block, mit dem die Datei “grub.cfg” geschrieben wird. “grub.cfg” ist die neue Konfigurationsdatei, die bei Grub2 die “menu.lst” von Grub ersetzt. Sie wird beim Boot-Prozess aus dem Ordner “/boot/grub” gelesen und u. a. zur Erstellung des Boot-Menüs verwendet.

Hier ein Auszug aus dem Skript:

...
# Ubuntu
UBUNTU_TITLE="Ubuntu Desktop 9.10 Karmic Koala 32bit"
UBUNTU_URL="http://ftp.uni-kl.de/pub/linux/ubuntu.iso/9.10/ubuntu-9.10-desktop-i386.iso"
[ $DOWNLOAD ] && wget $UBUNTU_URL -P $DOWNLOADPATH
UBUNTU_ISO=`basename $UBUNTU_URL`
...
cat <<EOF> $MOUNTDIR/$GRUBPATH/grub.cfg
menuentry "$UBUNTU_TITLE" {
 loopback loop $ISOPATH/$UBUNTU_ISO
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$ISOPATH/$UBUNTU_ISO noeject noprompt --
 initrd (loop)/casper/initrd.lz
}
...
EOF

Wie unschwer zu erkennen ist, werden im ISO-Konfigurations-Block die Variablen $UBUNTU_TITLE, $UBUNTU_URL und $UBUNTU_ISO gesetzt, die im folgenden Grub2-Boot-Block verwendet werden. Bei einem Update müssen Anpassungen lediglich im ersten Block vorgenommen werden und das Skript erneut ausgeführt werden. Das Skript erstellt beim Ausführen in jedem Fall eine neue “grub.cfg”, die es auch gleich im richtigen Verzeichnis auf dem USB-Stick ablegt und lädt – sofern die Variable DOWNLOAD=1 gesetzt wurde – die ISO-Dateien entsprechend der Konfiguration in den *_URL-Variablen von den Webseiten der Projekte und speichert sie im Verzeichnis $ISOPATH des USB-Sticks.

Die von multibootXX.sh erstellte grub.cfg (update 0.55: grub055.cfg) erzeugt beim booten das nachfolgend abgebildete Boot-Menü:

pmt-menu

Boot Menü anhübschen

Grub2 (nicht aber die Dokumentation, die man sich zu diesem Stichwort googlen kann!) macht es leicht, ein angepasstes Boot Menü mit eigenm eingebundenen Bildern zu erstellen. Was wird für ein solches Boot Menü mit eingebundenen Splash Image gebraucht?

  1. Ein passendes Bild: Dieses kann man sich mit GIMP erstellen. Wenn man die Standardauflösung von 640×480 Pixel verwenden will (und das empfiehlt sich für ein USB Flash Drive, von dem man nicht weiß, auf welcher Hardware es gebootet wird), dann skaliert man sich das Bild entsprechend, und speichert es im *.tga-Format ab (z. B. pmt.tga). Das Bild muss im Grub-Verzeichnis (/boot/grub auf dem Stick) abgespeichert werden. Im selben Verzeichnis muss ein angepasster UTF-8-Zeichensatz abgelegt werden (unicode.pf2).
    Ein paar geeignete Bilder habe ich für Sie vorbereitet (nur für den Fall, das Sie Angelina Jolie, Brett Pitt oder Marilyn Monroe meinem Konterfei vorziehen – was ich eigentlich nicht wirklich verstehen kann ;-)

    1. Angelina Jolie (joli.tga)
      jolie-menu
    2. Brett Pitt (pitt.tga)
      pitt-menu
    3. Marilyn Monroe (monroe.tga, monroe2.tga
      monroe-menu

      monroe2-menu
      
  2. Außerdem muss grub.cfg entsprechend angepasst werden, die folgenden Zeilen sind zu Beginn einzufügen:
    if loadfont /boot/grub/unicode.pf2 ; then
      set gfxmode="640x480"
      insmod gfxterm
      insmod vbe
      terminal_output gfxterm
      if terminal_output gfxterm; then true ; else
        terminal gfxterm
      fi
    fi
    insmod tga
    background_image /boot/grub/pmt.tga

    Die Auflösung habe ich konservativ gewählt: der Stick soll ja auch auf alter Hardware problemlos laufen.

Tipps

  • Einen Teil der erforderlichen Bootparameter (z. B der Name des Kernels oder der initialen Ramdisk) lassen sich durch einen Blick in das iso-image leicht ermitteln. Hierfür einfach das image mounten:
    sudo mount -o loop image.iso /mnt
  • Manchmal wurde bei meinen Versuchen ein Eintrag in der grub.cfg einfach nicht angezeigt, ich bin nicht dahinter gekommen, warum nicht. Möglicherweise hat mein Editor irgendwelche unfreundlichen unsichtbaren Zeichen an unpassender Stelle eingefügt. Geholfen hat in solchen Fällen jedenfalls, den kompletten Eintrag zu löschen und neu zu schreiben. Ich hasse sowas! Wenn jemand eine Idee hat, was da vor sich geht, er oder sie lasse mich bitte nicht dumm sterben!
  • Es macht nicht wirklich Spaß, zum Testen von Änderungen am USB Stick jedesmal den Rechner neu zu booten. Ist auch nicht nötig. Einfach den Emulator und Virtualisierer Qemu benutzen (ubuntuusers.de zu Qemu) Installation von Qemu:
     sudo apt-get install qemu-kvm

    Dann den Stick einstecken, z. B. mit “df -h” das Device feststellen, als das seine Partitionen eingebunden sind (z. B. /dev/sdb1), und dann das Device mit dem folgenden Befehl in Qemu booten:

    sudo qemu -m 512 -hda /dev/sdb
    

    Mit qemu kann man übrigens nicht nur Devices booten (wie eine Festplatte oder einen USB-Stick), sondern auch CD-Roms oder ISO-images. Also, man kann bequem die ISO-Images auch direkt mit qemu starten:

    sudo qemu -m 512  -cdrom slitaz-cooking.iso

    Bei SliTaz gibt es allerdings ein kleines Problem mit dem Netzwerk. SliTaz erkennt die standardmäßig von qemu emulierte Netzwerkkarte (rtl8139) nicht. Man muss daher von qemu eine andere Netzwerkkarte emmulieren lassen, z. B. eine e1000:

    sudo qemu -m 512 -net nic,model=e1000,vlan=0 -net user,vlan=0 -cdrom slitaz-cooking.iso

    … dann klappt’s auch mit dem Netzwerk :-) … Das gilt natürlich genauso, wenn man in qemu den USB-Stick bootet und aus dem Boot-Menü des Sticks heraus SliTaz mit Netzwerkunterstützung starten möchte.

  • Werden Änderungen an der grub.cfg vorgenommen, reicht es nicht, das Qemu-Fenster zu schließen und qemu erneut aufzurufen. Änderungen an der grub.cfg werden dann nicht erkannt, ich habe keine Ahnung, warum nicht. Was hilft, ist, den Stick zu unmounten und erneut zu mounten (oder einfach rüpelhaft den Stick abziehen und neu einstecken). Wer eine Ahnung hat, was da vor sich geht, lasse mich bitte nicht dumm sterben!

Links

16

Outdoor Navigation mit Linux und Garmin Legend HCx

November 1, 2009

HOWTO: OSM-Karte für QLandkarteGT aufbereiten

QLandkarteGT ist ein sehr nützliches Landkartenprogramm für Linux, dass in der Lage ist, GARMIN-Karten auf dem PC darzustellen. Das Programm ist darüberhinaus in der Lage, Tracks im gpx-Format vom Garmin zu importieren und auf der Karte darzustellen. Es stellt außerdem Möglichkeiten zur Verfügung, diese Tracks zu editieren (überflüssige Teile wegschneiden etc.). QLandkarteGT kann GARMIN-Karten (gmapsupp.img) nicht direkt darstellen, sondern benötigt hierfür eine *.tdb-Datei. Ich habe bisher keinen Weg gefunden, aus einer gmapsupp.img direkt eine *.tdb zu erzeugen. Was funktioniert, ist der Umweg über eine Openstreetmap-Karte (*.osm). Naja, eigentlich ist das ja auch die Quelle der imagesupp.img. Folgende Schritte sind also notwendig:

  1. Download einer Openstreetmap-Karte (z. B. von GEFABRIK)
  2. Erzeugung einer *.tdb-Datei mit folgendem Befehl
    mkgmap karte.osm --tdbfile --gmapsupp
  3. Ggf. muss man sich das Programm mkgmap zuvor noch installieren (Homepage)

Linux (Ubuntu) Vorbereitungen

Anschluss des Navis an den Rechner via USB und Zugriff über das Dateisystem:

  1. Die oben verlinkten Ubuntu Einstellungen durchführen
  2. Auf dem Navi “Hauptmenü | Einstellungen | Schnittstelle | USB Massenspeicher” aktivieren

Das Garmin HCx verfügt allerdings nur über eine USB 1.1 Schnittstelle, d. h. dieser Weg ist nur für das Kopieren kleinerer Dateien geeignet (z. B. von Waypoints im *.gpx-Format). Für größere Uploads empfiehlt es sich, die Speicherkarte über ein Speicherkartenlesegerät direkt zu beschreiben.

HOWTO: Daten vom Navi auf den Rechner holen (und umgekehrt)

Dafür gibt es viele Möglichkeiten:

1. Mit gpbsbabel (MarchK’s Tipps hierzu)

gpsbabel -D9 -w -i garmin -f usb: -o gpx -F WP.gpx
Holt alle waypoints vom Garmin.
gpsbabel -D9 -t -i garmin -f usb: -o gpx -F TP.gpx
Holt alle tracks vom Garmin.
gpsbabel -t -i gpx -f route.gpx -x simplify,count=500 \
         -o gpx -F route-simplified.gpx
Reduziert die Anzahl der Waypoints einer Route / eines Tracks auf 500.
gpsbabel -D9 -t -i gpx -f route.gpx -o garmin \
         -F usb: > debug.txt
Sendet route.gpx als Track zum Garmin.
gpsbabel -i gpx -f NAME.gpx -o garmin -F usb:
Sendet NAME.gpx (z. B. mit Waypoints oder Geocaches) zum Garmin.
gpsbabel -t -i garmin -f usb: \
         -o kml,points=0,line_color=ff0000ff \
         -F Track.kml
Holt tracks vom Garmin und konvertiert sie in KML.

Bei mir funktioniert das leider derzeit nur als root (dem Befehlsaufruf “sudo” voranstellen).

Die Optionen bedeuten:

  • -D9 = Debuglevel (damit man Fehlermeldungen erhält, falls was schief läuft)
  • -w = es geht um Waypoints
  • -t = es geht um Tracks
  • -i = input Typ
  • -f = input Datei (oder Gerät)
  • -0 = output Typ
  • -F = output Datei

sieht a bisserl kompliziert aus, ist aber eigentlich einfach und logisch.

HOWTO: Massenweise Geocaches von geocache.com holen und auf das Navi schieben

Hierfür eignen sich die genialen geo-xxx-Tools von Rick Richardson hervorragend. Homepage: http://geo.rkkda.com/ . In der Tool-Suite gibt es 5 Skripte, mit denen Geocache-IDs von geocache.com abgefragt werden können:

geo-found	gibt Geocache-IDs aus (gefunden von irgendeinem geocache.com-User)
geo-placed	gibt Geocache-IDs aus (platziert von irgendeinem geocache.com-User)
geo-nearest	gibt Geocache-IDs der nächstgelgegenen Geocaches aus
geo-newest	gibt Geocache-IDs der neuesten Geocaches aus (in einem Land)
geo-keyword	gibt Geocache-IDs aus, die ein "keyword" enthalten.

Optionen für die geo-xxx-Tools können sowohl auf der Kommandozeile übergeben werden, als auch in der geo-Konfigurationsdatei “.georc” abgelegt werden. Dies empfiehlt sich für Standardoptionen, die ständig gebraucht werden. Bei mir sieht diese Datei folgendermaßen aus:

# .georc Konfigurationsdatei für geo-xxx tools
PASSWORD="xxx"
USERNAME="schreberpeter"
LAT=n52.24.059
LON=e09.45.503
 

Wann immer von einem der geo-xxx-Tools ein Username und ein Passwort sowie eine Positionsangabe benötigt wird, werden diese Informationen aus dieser Datei übernommen (sofern nicht explizit entsprechende Optionen auf der Kommandozeile übergeben werden). Bei dem folgenden Aufruf sind diese Optionen daher implizit schon gesetzt (spart  ‘ne Menge Schreibarbeit):

geo-nearest -n 5

Der Aufruf holt die IDs der Geocaches, die den angegebenen Koordinaten (meinem zu Hause) am nächsten liegen. Die Rückgabe des Aufrufs:

GC1V522 52.40087 09.75447 Geocache-multi
GC10WW9 52.39773 09.75958 Geocache-multi
GC1TV9N 52.39868 09.75387 Geocache-regular
GC1J494 52.39618 09.76368 Geocache-unknown
GC17Y55 52.39750 09.74917 Geocache-unknow 

Die anderen Tools liefern entsprechende Rückgaben. Mit Hilfe des Tools “geo-gpx” kann ich mir jetzt für eine (oder mehrere) GeoCache IDs (GXxxxxx) Detail-Informationen im gpx-Format holen:

geo-gpx -ogpx -OGC1V522.gpx GC1V522

Der Befehl liefert als Rückgabe eine Datei “GC1V522.gpx” mit alle Informationen, die ich auch auf den Webseiten von geocaching.com zum Geocache “GC1V522″ abfagen kann (im gpx-Format; einem XML-Format). Diese gpx-Datei kann nun problemlos mit gpsbabel (s. o.) auf das Navi laden.

Die folgenden beiden Befehle verketten den Vorgang: es werden in einem Schritt die 500 nächstgelegenen Geocache-IDs geholt und und die Detail-Informationen für alle 500 Geocaches in die Datei nearest.gpx geschrieben. Diese wird dann mit gpsbabel auf das Navi kopiert:

geo-gpx -ogpx -Onearest.gpx $(geo-nearest -n 500 | awk '{print $1}')
sudo gpsbabel -i gpx -f nearest.gpx -o garmin -F usb:

Und Schwubs, hat man 500 Geocaches auf dem Navi :-)

Jetzt brauchen wir noch die ausführlichen Beschreibungen Human-readable (also z. B. im HTML-Format, damit diese mit einem Browser betrachtet werden können). Hierfür gibt es zwei Möglichkeiten:

1. HTML aus GPX mit gpsbabel (diese Variante hat schwerwiegende Nachteile, s. u.)

gpsbabel -D9 -i gpx -f nearest.gpx -o html -F nearest.html # Lösung problematisch, besser: gpx2html !

Nachteil der gpsbabel-Lösung: Es wird eine (ggf. sehr große) HTML-Datei erzeugt. Das kann zu Schwierigkeiten führen, diese auf leistungsschwächeren Pocket-PC’s mit angemessener Geschwindigkeit (oder überhaupt) darzustellen. Außerdem ist es bei mir in mehreren Fällen vorgekommen, dass nur einige der GeoCaches in die HTML-Datei aufgenommen wurden und die Erstellung dann abgebrochen wurde. Dabei kam es nicht zu Fehlermeldungen, sodass ich das erst unterwegs bemerkt habe (zu meinem besonderen Verdruß, weil ich vom Geocachen unverrichteter Dinge wieder heim kehren musste).

2. HTML aus GPX mit geo-Tools (gpx2html)

gpx2html *.gpx

Die gpx2html-Lösung hat gleich mehrere Vorteile (weshalb ich sie präferiere und empfehle):

  • Die Syntax des Aufrufs ist deutlich einfacher.
  • Es können mit einem Aufruf gleichzeitig HTML-Dateien für mehrere geocaching-gpx-Dateien erzeugt werden
  • Diese werden nicht in einer (ggf. riesigen) HTML-Datei zusammengefasst, sondern für jeden GCxxxxx wird eine eigene HTML-Datei erzeugt, sodass das Lesen auch auf schwachbrüstigen Rechnern keine Schwierigkeiten macht.
  • Da hierbei ein Verzeichnis mit (u. U. sehr) vielen HTML-Dateien entsteht (und so etwas kann auf Pocket-PCs dann auch wiederum zu Schwierigkeiten führen), wird eine Hauptseite “index.html” angelegt, von der aus die einzelnen GCxxxxx.html Dateien verlinkt werden. Dieses Layout lässt sich performant und komfortabel auch auf leistungsschwächeren Geräten lesen.
  • Als Convenience-Funktion werden zusätzliche Indizes erstellt:
    • Nach ID sortiert
    • Rückwärts nach ID sortiert
    • Nach Datum des letzten Logs auf geocaching.com sortiert
    • Liste von Geocaches mit Travel Bugs
    • Liste der noch nie gefundenen Geocaches
  • In die HTML-Dateien werden auch alle Log-Einträge aufgenommen (die manchmal ja zum Auffinden des Caches durchaus nützlich sein können)

Die HTML Beschreibungen der Geocaches kann man sich auf seinen Palm schieben, auf sein Nokia-Tablet, sein Netbook oder was immer man beim Geocachen so mitnimmt. Und hat dann alle ausführlichen Informationen (samt aller Hints!) immer dabei. Cool :-)

HOWTO: Routen erstellen und (als Track) auf den Garmin laden

  1. Route auf Openrouteservice.org erstellen.
  2. Diese als gpx-Datei downloaden.
  3. Route auf max. 500 Waypoints kürzen. Das geht so:
    gpsbabel -t -i gpx -f route.gpx -x simplify,count=500 -o gpx -F route-simplified.gpx
  4. Route als Track auf den Garmin laden. Das geht so:
    gpsbabel -D9 -t -i gpx -f route-simplified.gpx -o garmin -F usb: > debug.txt
  5. Ein Upload als Route empfiehlt sich nicht (weil der Garmin das dann als hunderte von Waypoints darstellt und die Sache damit sehr unübersichtlich wird).

HOWTO: Koordinaten für eine Adresse finden

Weitere Ressourcen

Todo

0

Backup mit storeBackup

July 17, 2009

backup Was zeichnet ein gutes Backup-Tool aus? Es ist einfach! Denn Backup-machen ist lästig. Deshalb muss es einfach sein. Damit es überhaupt gemacht wird. Und: Backups sind sehr wichtig. Es sind schon Firmen pleite gegangen, weil das Backup versagt hat. Auch deswegen müssen Backups einfach sein. Damit Backup-Administratoren immer wissen, was sie tun. Damit nicht dann, wenn das Backup gebraucht wird, die große Hektik ausbricht. Damit nicht dann, wenn das Backup gebraucht wird, Fehler gemacht werden. Und das Backup zerstört wird. Alles schon vorgekommen!

Backup sind wichtig! Denn Computer gehen kaputt. Glaubt mir ja nie einer. Besonders die nicht, die keine Ahnung von Computern haben. Ist aber so. Computer gehen kaputt! Und dann sind die Daten futsch. Die werden nämlich auf dem Computer gespeichert. Und zwar auf der Festplatte. Und Festplatten gehen kaputt von Zeit zu Zeit. Im Büro habe ich eine kleine Sammlung von etwa zehn kaputten Festplatten. Habe ich gesammelt über die Jahre. Ist nicht vollständig, die Sammlung. Viele Festplatten haben wir getauscht auf Garantie. Oder auf Kulanz. Aber zehn Festplatten habe ich doch sammeln können. Von jeder kann ich eine traurige Geschichte erzählen. Geschichten, in denen erwachsene Männer weinen. Nicht gelogen! Weil die Arbeit von Wochen und Monaten verloren gegangen ist.

Das wollen Sie nicht? Dann machen Sie Backups!

Hab’ ich Sie überzeugt? Gut! … Dann stellt sich Ihnen jetzt die Frage: Wie mache ich Backups?

… da hätte ich dann einen Vorschlag: nehmen Sie storeBackup!

Wir haben storeBackup jetzt seit etwa sechs Jahren im Einsatz und es hat uns bisher nie im Stich gelassen. Das Prinzip ist genial einfach und erspart Administratoren viel Arbeit. Weil User das Restore selbst machen können. Und damit dem Admin nicht auf den Wecker gehen müssen. Und weil keine (mehr oder weniger) komplizierten Systeme ersonnen werden müssen, nach deren Vorgaben Voll-Backups bzw. inkrementelle Teil-Backups erzeugt werden. Und die dann ein Restore zum Intelligenztest machen.

Das storeBackup Grundprinzip

hardlinks (todo)

Installation

Die Installation ist trivial und kann entweder aus den Repositories via “apt-get install storebackup” erfolgen (dann erhält man zur Zeit, Juli 2009, allerdings nur die Version 2.x), oder händisch. Die Installation ist hier beschrieben: Installations-Anleitung

Erste Schritte

storeBackup.pl -g storeBackup.conf # erzeugt Konfigurationsdatei

diese anpassen und dann ausführen:

storeBackup.pl -l storeBackup.conf #  führt Backup aus

Weitere Informationen

Remote Backup

Sie wollen ein Verzeichnis auf einem entfernten Rechner in Ihr Backup einbeziehen. Lösung: Einmounten des entfernten Verzeichnisses über sshfs (Wikipedia-globe-16x16 SSHFS, SSHFS-HomepageubuntuusersSSHFS).

Installation des SSHFS Pakets mit

sudo apt-get install sshfs

Einmounten eines Verzeichnisses auf einem entfernten Rechner:

mkdir /path/to/local/directory # Anlegen des Mountpoints, einmalig
sshfs username@yourserver.org:/path/to/directory /path/to/local/directory

Unmount:

fusermount -u /path/to/local/directory

oder (kann ich mir besser merken, weil Standard):

sudo umount /path/to/local/directory

Ein auf diese Weise lokal eingemountetes Verzeichnis kann prima in das Backup einbezogen werden.

0

Horde – Groupware

July 9, 2009

Homepage: Horde Groupware Webmail Edition

wget http://ftp.horde.org/pub/horde-webmail/horde-webmail-1.2.3.tar.gz
tar xvzf horde-webmail-1.2.3.tar.gz
cd horde-webmail-1.2.3

Installationsanleitung:  Installing Horde Groupware Webmail Edition 1.1

Abweichend von der Installationsanleitung war bei mir folgendes notwendig (vermutlich, weil bei mir die horde-Installation nicht im DocumentRoot liegt, sondern nur durch einen symbolic link darauf verwiesen wird):

vim config/registry.php

dort in Zeile

   'webroot' => _detect_webroot(),

ersetzen durch

   'webroot' => '/horde',

Die zweite Hürde ist die Konfiguration eines Benutzers. Horde bietet hier unzählige Möglichkeiten und leider keine intuitive Default-Lösung. Ich habe mich für die Authentifizierung gegen einen IMAP-Server entschieden, da mein Webhoster mir einen solchen Service zur Verfügung stellt. Zwei Dinge sind hierfür erforderlich:

  1. Anpassung der Datei “imp/conf/server.php”.  Bei mir sieht die anzupassende Stelle dann so aus:

    $servers['imap'] = array(
    ‘name’ => ‘IMAP Server’,
    ’server’ => ‘mail.p-mt.net’,
    ‘hordeauth’ => false,
    ‘protocol’ => ‘imap/notls’,
    ‘port’ => 143,
    );

  2. Anpassung der Datei “config/conf.php”. Dort den IMAP-Nutzer eintragen, gegen den authentifiziert wird. Dieser Eintrag macht den entsprechenden Benutzer zu einem Horde-Administrator:
    $conf['auth']['admins'] = array(‘hier IMAP-Benutzername einsetzen’);

Das war es dann aber auch schon.

 

2

Mach, das alles so ist wie früher … (installierte Packages clonen)

April 16, 2009

schule_frueher_3a05_10 Ja, ja, können Sie kriegen, alles so wie früher, wie auf Ihrem alten Debian (oder Ubuntu), alle Packages, die sie so im Laufe der Zeit installiert haben, sollen auch auf dem neuen System zur Verfügung stehen. Machen wir. Vorausgesetzt, Sie haben sich gemerkt, was Sie auf Ihrem alten System gemacht haben. Oder: Sie haben (von Zeit zu Zeit) den folgenden Befehl ausgeführt:

sudo dpkg --get selections > installed-software.txt

Dann haben Sie jetzt eine Datei “installed-software.txt” zur Verfügung, die Sie auf dem neuen System zur Installation aller noch nicht vorhandenen Packages nutzen können. Und zwar mit dem Befehl:

sudo dpkg --set-selections < installed-software.txt
sudo apt-get dselect-upgrade

Das wars schon. So einfach geht Betriebssystem-Installation mit Linux (Geschmacksrichtung Debian / Ubuntu).

0

Ubuntu 8.10 installiert – und dann?

February 21, 2009

Ubuntu LogoGut. Ubuntu ist jetzt also auf dem Rechner. Das ist schon ziemlich klasse und viele wichtige Programme, die man so zum arbeiten braucht, sind sofort verfügbar. Dennoch gibt es noch das Eine oder Andere, was ich (und Sie vielleicht auch) zusätzlich auf dem Rechner haben möchte.

Vim – der Editor

Für administrative Dinge verwende ich Vim. Vim hat den Ruf, schwer erlernbar zu sein und nur etwas für unverbesserliche Hacker und Nerds. Alles Quatsch. Vim ist einfach. Wirklich. Und auf jedem Unix/Linux System vorhanden. Jedenfalls in der Originalversion vi. Ich habe Vim vor Jahren gelernt in 30 Minuten, durch das Klasse Tutorial, das mit jeder vim Installation mitkommt. Man kann es aufrufen mit

vimtutor

und in knapp 30 Minuten wird man in die Geheimnisse der Bedienung von Vim eingeführt. Sehr empfehlenswert. Nur 30 Minuten und Sie kommen mit Vim klar.

Nach der Installation von Ubuntu ist nur eine abgespeckte Version von Vim auf dem Rechner. Daher zunächst die Installation des eigentlichen Vim mit:

sudo apt-get install vim

Danach sollte noch in der Datei /etc/vim/vimrc einige Änderungen vorgenommen werden:

sudo vim /etc/vim/vimrc

und vor den folgenden Zeilen das Kommentarzeichen (“) entfernen:

syntax on               " Enable syntax highlighting
...
set showcmd		" Show (partial) command in status line.
set showmatch		" Show matching brackets.
set ignorecase		" Do case insensitive matching
set smartcase		" Do smart case matching
set incsearch		" Incremental search
set autowrite		" Automatically save before commands like :next and :make
set hidden              " Hide buffers when they are abandoned
set mouse=a		" Enable mouse usage (all modes) in terminals

Ubuntu restricted extras – Sieben auf einen Streich

Es gibt eine Reihe von nützlichen Dingen, die im Standard-Ubuntu (meist aus lizenzrechtlichen Gründen) nicht enthalten sind. Das Paket ubuntu-restricted-extras installiert eine ganze Reihe von diesen auf einmal: Eine Vielzahl häufig benötigter Multimedia-Codecs (zum Abspielen von Audio- und Video-Dateien), Microsofts Truetype-Fonts (Times New Roman, Arial und Co, das, was Windows-Nutzer immerzu benutzen), Sun’s Java, das Flash-Plugin für Firefox und den Archiv-Auspacker unrar. Damit das funktioniert, müssen die “Multiverse”-Repositories von Ubuntu freigeschaltet sein (entweder durch editieren der Datei /etc/apt/sources.list (dort die Kommentarzeichen (“#”) vor den multiverse-Archiven entfernen) oder im grafischen Paketmanager Synaptic, Aufruf unter  “System | Systemverwaltung | Synaptic”, dort “Einstellungen | Paketquellen” aufrufen und “urheberrechtlich eingeschränkte Software (multiverse)” anhaken). Im Einzelnen werden die folgenden Pakete installiert (alle auf einen Streich):

sudo apt-get install ubuntu-restricted-extras

(more…)

2

RadRails und Eclipse als IDE für JRuby und Ruby on Rails

February 15, 2009

Eclipse Logo

Eclipse ist eine integrierte Entwicklungsumgebung (IDE) (integrated development environment) insbesondere für Java. Eclipse ist keinesfalls auf Java festgelegt, sondern wird auch bei der Entwicklung in vielen anderen Progtrammiersprachen verwendet (z. B. PHP, C, Python, HTML). Die offene, plugin-basierte Struktur von Eclipse hat ihre Nutzung für eine Vielzahl von Programmiersprachen und Entwicklungsumgebungen ermöglicht, so auch für JRuby und das Web Application Framework Ruby on Rails.

Auswahl des Eclipse-Basis-Pakets

Aller Anfang ist schwer und das geht schon bei der Auswahl des richtigen Eclipse-Packages los. Die offene Struktur hat auch ihre Nachteile: je mehr Plugins es gibt, desto mehr Inkompatibilitäten kann es auch geben. Daher veröffentlicht Eclipse seit 2006 einmal jährlich verschiedene Packages mit unterschiedlichen Zusammenstellungen von häufig benötigten Plugins in Versionen, die miteinander harmonisieren. Der Name der 2008er Version dieser Packages ist “Ganymede” (veröffentlicht am 25 Juni 2008, Eclipse Version 3.4).

Auf der compare-packages-Webseite des Eclipse Projektes kann man sich einen Überblick verschaffen über die verschiedenen Eclipse Packages und ihre Plugin-Zusammenstellungen. Für meine Zwecke ist das JEE/Reporting-Package das Produkt der Wahl: Es enthält alles notwendige zur Java-Programmierung und außerdem die Business Inteligence and Reporting Tools (BIRT), die für mich interessant sind, weil Data Warehousing und Informationssysteme zu meinen Interessen- und Aufgabengebieten zählen.

Installation unter Ubuntu

Die Installation der IDE ist trivial und in wenigen Sekunden erledigt: nach dem Download des JEE/Reportin-Package (Linux 32bit Version) erledigen die folgenden Befehle den Rest:

cd download-directory
tar xvzf eclipse*tar.gz
sudo mv eclipse /usr/local
sudo ln -s /usr/local/eclipse/eclipse /usr/local/bin/eclipse

Eclipse ist in Java geschrieben, das bedeutet: man braucht eine Java-Maschine auf dem Rechner, um Eclipse nutzen zu können. Seitdem die Firma SUN Java unter einer Open Source Lizenz freigegeben hat, spricht auch aus strategischen und politischen Gründen nichts mehr gegen die Nutzung von SUNs Java. Unter einem Debian-basierten System (wie z. B. Ubuntu Intrepid) lässt sich das bei aktuellen Distributionen leicht mit dem folgenden Befehlen erledigen:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install sun-java6-jdk sun-java6-doc \
     sun-java6-demo sun-java6-fonts sun-java6-plugin

Für etwas Verwirrung sorgt die Installation der Dokumentation (Package sun-java6-doc). Wahrscheinlich aus irgendwelchen lizenzrechtlichen Gründen ist diese nicht im Package enthalten sondern muss zunächst separat von SUNs Java Seite heruntergeladen werden (wie ich so einen Mist hasse, dieser ganze kleinliche Copyright-Sch… macht nichts als Ärger). Und natürlich heißt das Dokumentations-Archiv jetzt anders und man ist zunächst unsicher, ob man das richtige hat. Und dann meckert die Paket-Installation, weil sie die Doku nicht finden kann. Ich habe mir schließlich mit einem symbolic link geholfen:

ln -s jdk-6u10-docs.zip jdk-6-doc.zip

danach lief die Package-Installation zu Ende wie geschmiert.

Benutzung von Eclipse und erste Schritte

Ab jetzt kann Eclipse durch Eingabe von “eclipse” auf einer Konsole aufgerufen werden. Das Starten von Eclipse dauert (… und dauert … und dauert …), besonders beim ersten Mal. Das Warten wird belohnt mit dem Öffnen einer schon ziemlich cool gestalteten Oberfläche, auf der der Weg gewiesen wird zu weiteren Informationen, Tutorials etc.

Als nächstes macht es in der Tat Sinn, sich mit den grundlegenden Prinzipien und Funktionen von Eclipse vertraut zu machen. Hierzu finden sich im Web eine Vielzahl von Tutorials. Ich habe mich für den allerersten Überblick für den Eclipse Workshop von admin-wissen.de entschieden, weil sich der in kurzer Zeit überfliegen und abarbeiten lässt.

Eclipse Workshop von admin-wissen.de

Inhalt

Der Workshop gibt einen guten Überblick über die grundlegenden Prinzipen der Nutzung von Eclipse und endet mit dem Verfahren der Installation von weiteren Plugins. Für mich ist hier insbesondere Subclipse interessant, dass den Zugriff auf Quellcode im Sourcecode-Verwaltungssystem subversion erlaubt (Der Zugriff auf cvs-Repositories ist bereits im Eclipse-Kern implementiert).

Sehr instruktiv ist auch das Tutorial von Lars Vogel:

Introduction to Eclipse 3.4 (Ganymede) – Tutorial von Lars Vogel

Last but not least: Die ersten Schritte von Torsten Horn. Kurz, knapp, auch Referenz, nicht nur Tutorial.

Eclipse – Erste Schritte (von Torsten Horn)

Inhalt

  1. Terminologie in Eclipse
  2. Installation von Eclipse
  3. Einige Tastaturkürzel
  4. Templates
  5. Erste Konsolenanwendung
  6. Weitere erste Anwendungen
  7. Import von ‘Ant’-Projekten
  8. Export als ausführbare .jar-Datei
  9. SQL-Datenbank-Clients (SQuirreL, QuantumDB, SQLExplorer, Clay)
  10. UML-Editor (JUDE, EclipseUML)
  11. JUnit mit Eclipse
  12. CVS-Integration
  13. Subversion-Integration
  14. Eclipse mit Maven
  15. Links auf weiterführende Informationen

Installation von aptana RadRails

aptanaradrails

Wir nähern uns dem Ziel unserer Bemühungen: Der Installation von aptana RadRails als Eclipse Plugin. Folgt man gewissenhaft der Installationsanleitung auf den Webseiten von aptana, läuft man gleich zu Beginn ins Leere: Unter “Windows | Preferences | General |Capabilities” soll man “classic update” auswählen … nur: Nach “Capabilities” werden Sie sich erfolglos einen Wolf suchen! Jedenfalls dann, wenn Sie die JEE/Reporting-Zusammenstellung von Eclipse ganymede 3.4 installiert haben. “Capabilities” gibt’s einfach nicht. Eine Google-Recherche und das aptana-forum Mitglied “fredpyo” bringen die Ursache ans Licht: Es fehlt die Eclipse SDK. Diese muss zunächst mit dem Update-Manager nachinstalliert werden. Den Update-Manager erreichen Sie unter “Help | Software Updates …”.

eclipse-software_updates

Mit Klick auf “Update …” prüfen Sie, ob alle Plugins auf dem aktuellsten Stand sind. In einem weiteren Dialog werden alle Plugins angezeigt, für die neuere Versionen verfügbar sind. Nachdem Sie noch irgendwelche Nutzungsbedingungen abgenickt haben, ohne Sie zu lesen (oder lesen Sie sowas? Hand auf’s Herz!), installieren sich eine Vielzahl von Plugin-Updates. Danach ist ein Neustart von Eclipse fällig.

So. Nun endlich geht es an die Nach-Installation des Eclipse-SDKs. Wir öffnen “Help | Software Updates …”, Reiter “Available Software”. Dort wählen wir “The Eclipse Project Updates” aus. Und weil ich nicht so recht weiß, was genau wir aus dem Untermenü alles brauchen, schlage ich vor, wir wählen einfach alles. Nach Klick auf “Install …” und erneutem Abnicken irgendwelcher Nutzungsbedingungen (Ja, ja, “I accept the terms of the license agreements”, was immer da auch drin stehen mag) wird wiederum haufenweise Krams nachinstalliert. … Bzw. wird angefangen, haufenweise Krams zu installieren. Tatsächlich bricht die Installation ab mit einer Fehlermeldung bezüglich Problemen mit Archiven von “com.ibm.icu.base.feature.group”.

install-eclipse-sdk

Nachdem auch mehrfaches Wiederholen nicht half, habe ich dieses widerspenstige Plugin einfach abgewählt (in der Hoffnung, dass es nicht genau das ist, was wir dringend brauchen). Jedenfalls läuft danach die Installation durch, und, Heureka!, nach einem Neustart von Eclipse findet sich unter “Windows | Preferences | General |Capabilities” auch das ersehnte “classic update”. Na also. Geht doch!

eclipse-capabilities1

Nachdem auch diese Hürde genommen wurde, können wir mit den Instruktionen von Aptana fortfahren: Aufruf von “Help | Software Updates” (nicht von “Software Updates …”, den Eintrag gibt’s zweimal, einmal mit, einmal ohne Punkte, wahrscheinlich, um uns zu verwirren), und dort das Untermenü “Find and Install …”. Nach einiger Zeit öffnet sich ein Dialog und wir wählen dort “Search for new features to install”. Zwischendurch werden wir jetzt gebeten, einen “Mirror” auszuwählen. Wir tun dies brav. Bei der zweiten Nachfrage habe ich mich entschieden, die Option “Select Mirror automaticaly” auszuwählen. Die Sache dauert mir auch so schon lange genug. Nach einiger (längerer!) Zeit erscheint ein weiteres Untermenü, indem ich nach kurzem Grübeln auch den deselektierten Eintrag für einen “WTP-Patch” auswähle (was immer das sein mag). Nach nochmaligem Abnicken von irgendwelchen “license agreements” beginnt eine Installation, unterbrochen von weiteren eher unverständlichen Hinweisen (“Feature Verification: You are about to install an unsigned feature. You may choose to install the feature or cancel its installation”), die ich vorsichtshalber einfach mit “Install all” akzeptiert habe (damit ich nicht erneut gefragt werde und mir dann erneut eingestehen muss, das ich nicht weiß, was genau da eigentlch vor sich geht). Und … Überraschung: der dritte Neustart von Eclipse ist fällig :-) .

Also nochmal: “Help | Software Updates | Find and Install …”, “Search for new features to install” aufrufen. Endlich öffnet sich der benötigte Dialog “Update sites to visit”:

eclipse-update_sites_to_visit

In diesem Dialog wählen wir “New Remote Site …” und tragen im erscheinenden PopUp unter “Name” “Aptana Studio” und unter “Url” “http://update.aptana.com/install/studio/3.2/” ein. Nach Klick auf “Finish” erscheint ein weiterer Dialog “Updates Search Results”, indem wir “Aptana Studio” auswählen, nach “Next” zum nunmehr vierten Male die gewissenhaft gelesenen “license agreements” akzeptieren und nach einem nochmaligen “Next” die Installation “Finish”en. Naja, was heißt finishen: es folgt ein langer Download. Ich riskiere es und akzeptiere erneut die Installation eines “unsigned features” mit “Install all”. Na was kommt jetzt? Richtig, der obligatorische Neustart von Eclipse!

Nach dem Neustart poppen nach einander zwei Fenster auf. Eines, welches mich darauf hinweist, dass mit der Installation auch eine 30-Tage-Version von Aptana Studio Pro installiert wurde, und dass die wunderbaren zusätzlichen Features dieser Pro-Version bein nächsten Neustart eingeschaltet werden (das ist schön) und leider aber wieder nach 30 Tagen abgeschaltet werden (das ist doof). Ich akzeptiere das mit “OK” (eine andere Wahl habe ich auch nicht). Der zweite Dialog informiert mich darüber, dass Aptana es für notwendig hält, den “Aptana Subversion Support” zu installieren. Ich habe hiergegen keine Einwände. Was folgt? Wir ahnen es schon: Abnicken von “license agreements” und Abwarten eines weiteren Installations-Prozesses (einschließlich eines erneuten “Install all” auf eine erneute Warnung vor “unsigned features”). Was folgt jetzt? Klar, Neustart von Eclipse :-)

Geschafft! Ja, wirklich! Seht selbst:

eclipse_mit_aptana

Doch nein, wir sind noch nicht am Ende. Fertiggestellt ist jetzt die Integration von Apanta Studio in Eclipse aber noch nicht die Installation von RadRails in Apanta Studio. Die RadRails-Installations-Anleitung auf den Apanta-Webseiten bittet uns ein letztes Mal um den nun schon vertrauten Ablauf:  Aufruf von “Help | Software Updates | Find and install…” und dann “Search for new features  to install” . Danach “Next” und dann “New Remote Site…” auswählen, den
Namen “RadRails” eintragen und als URL “http://update.aptana.com/install/rails/3.2/”. Dann  auf “Finish” klicken, noch zweimal “Next” anklicken, dazwischen nochmal RadRails auswählen und wieder Lizenzen abnicken, ein weiteres Mal “Finish” und  ein letztes Mal “Install all” und noch ein letzter Neustart und dann ist RadRails installiert (ja, wirklich!). Nach dem Neustart möchte Eclipse dann noch “Aptana RadRails Professional” installieren. Das ist die lizenzpflichtige Version, die wollen wir nicht, wir brechen daher diese Installation ab. Jetzt ist aber wirklich alles fertig! :-)

Der Lohn all der Mühen ist ein installiertes Eclipse mit einem in Aptana Studio integrierten RadRails! Es bleibt zu hoffen, dass es der Mühe wert ist!

railsway_magDafür spricht indes einiges (schließlich hätten wir uns der Mühe gar nicht unterzogen, wenn es nicht hierfür handfeste Indizien gäbe). Eines ist das Review in der ersten Ausgabe des Magazins für Ruby on Rails “RailsWay“. Sein Chef-Redakteur, Michael Johann, u. a. Gründer des Magazins “Java Spektrum” und bei uns in der Firma auch durch hervorragende Ruby-Schulungen bekannt, kommt in seinem Review “Mit der IDE von der IDEE zur Realisierung – Integrierte Entwicklungsumgebungen für Ruby on Rails” zu folgendem Fazit: “Apanta ist für Eclipse-erfahrene Entwickler das Mittel der Wahl, wenn es um eine integrierte Entwicklungsumgebung geht, die neben der reinen Ruby-on-Rails-Entwicklung auch noch AJAX, Flex und Adobe AIR umfasst. Für eine erste Version ist das Produkt sehr ausgereift”.

Bleibt abzuwarten, ob sich das Produkt in der Praxis bewährt. Ich bin hoffnungsfroh, dass unsere beiden Praktikanten, die derzeit an einem kleinen Projekt mit Ruby-on-Rails arbeiten, in nicht allzuferner Zukunft einen Erfahrungsbericht beisteuern werden.

Weitere Informationen zu RadRails

Installation von Ruby und Ruby on Rails

Rails LogoAber halt! Wir sind noch nicht fertig. Zum Ruby-Entwickeln fehlt uns ja noch Ruby auf dem Rechner. Und natürlich Ruby on Rails. Und auch hier ist das Leben nicht so einfach, wie man es sich wünscht.

Auf den Ubuntu Webseiten (Ubuntu Community Documentation RubyOnRails) wird ebenso wie auf den RubyOnRails.org-Seiten (Ruby on Rails – Rails on Ubuntu) übereinstimmend zu folgendem Vorgehen geraten:

  1. Installation von Ruby aus den Ubuntu Paket Quellen (mit apt-get)
  2. Installation von Rubygems aus den Sourcen (Rubygems ist so etwas wie der Paketmanager von Ruby)
  3. Installation von Rails mit Rubygems

lirpa_14Wer sich daran nicht hält, dem droht Grauenvolles: “Let gems manage your rails package otherwise gem and apt-get will start fighting like Spock and Captain Kirk in Amok Time. If you haven’t seen that episode, trust me: you don’t want that.”

Gut. Überzeugt. Halten wir uns also an diesen Vorschlag. Zunächst installieren wir “build-essential” über den Ubuntu Package Manager. build-essential enthält alles was man braucht, um Debian/Ubuntu-Packages zu erstellen, keine Ahnung warum wir das wollen, wird aber empfohlen und kann nicht schaden. Es folgt die Installation von “ruby-full”. Mit ruby-full bekommen wir: “emacs emacs22-bin-common emacs22-common emacs22-gtk emacsen-common irb irb1.8 libdbm-ruby libdbm-ruby1.8 libgdbm-ruby libgdbm-ruby1.8 libopenssl-ruby libopenssl-ruby1.8 libreadline-ruby libreadline-ruby1.8 libtcltk-ruby libtcltk-ruby1.8 rdoc rdoc1.8 ri ri1.8 ruby-elisp ruby-full ruby1.8-dev ruby1.8-elisp tcl8.4 tk8.4″. Na, das ist doch was!

sudo apt-get install build-essential
sudo apt-get install ruby-full

Außerdem installieren wir auch gleich noch die erforderlichen Web Server zum Ausliefern von Ruby Webpages, ich entscheide mich für den Apache, denkbar wäre aber auch z. B. lighttpd.

sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev

Es folgt die Installation von Rubygems aus den Quellen:

wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
tar xzvf rubygems-1.3.1.tgz
cd rubygems-1.3.1
sudo ruby setup.rb # die eigentliche Installation
cd ..
rm -r rubygems-* # das wird nun nicht mehr gebraucht
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem # Symbolischen Link anlegen für die Bequemlichkeit

Abschließend updaten wir Rubygems:

sudo gem update --system

Wenn hierauf eine Meldung ausgegeben wird:”nothing to update”, dann machen wir vorsichtshalber noch:

sudo gem install rubygems-update
sudo update_rubygems

Damit sollte dann das Rubygems Update durchgeführt sein.

Es folgt die Installation von Rails und Mongrel mit Rubygems:

sudo gem install rails mongrel

Um Schwierigkeiten bei der Installation von anderen Gems vorzubeugen, empfiehlt sich zusätzlich die Installation des libc development package:

sudo apt-get install libc6-dev

Schließlich brauchen wir noch eine Datenbank (nebst Ruby-Treibern), es bieten sich MySQL oder PostgreSQL an:

sudo apt-get install mysql-server libmysql-ruby
sudo apt-get install postgresql libpgsql-ruby

Schließlich noch die Ruby Gem Installation:

sudo apt-get install libmysqlclient15-dev
sudo gem install mysql
sudo gem install postgres

Mit dem folgenden Befehl erstellen wir die Rails Applikation:

rails mynewapp -d mysql

Jetzt noch die erforderlichen Datenbanken anlegen:

mysql -u root -p
mysql> create database mynewapp_development ;
mysql> create database mynewapp_production ;
mysql> quit

So. Jetzt muss das ganze noch zusammengebunden werden, dass die neue Rails Applikation auf dem Webserver deployed wird … aber das folgt an einem anderen Tag …

radrails-in-eclipse

-eof-

4

Lenovo X200s unter Ubuntu Intrepid Ibex (8.10)

February 14, 2009

So. Da ist es nun. Mein neues Notebook. Die Kinder sagen: “Das ist ja klein … und das willst Du wirklich tauschen gegen Dein altes (ein Lenovo Thinkpad T60)?” Ja, ich will! Das ist ja gerade der Grund. Das es so schön klein ist, das X200s. Und leicht! Denn ich bin die Schlepperei leid. Und 2kg leichter, das macht schon einen Unterschied! Und ich möchte den neuen Rechner auch gerne nutzen, um während einer Sitzung schon gleich das Protokoll zu schreiben oder Notizen zu machen. Und so’n großes Monster schafft dann so viel Distanz zwischen mir und dem Rest.

Die Installation von Ubuntu war vollkommen schmerzfrei. Linux-Installationen sind langweilig, inzwischen. Nichts aufregendes passiert, alles funktioniert ;-(
Einziges Anfangsproblem:

Bildschirmaufösung Teil 1

Die Bildschirmauflösung betrug lediglich 1024*768 Pixel und ließ sich zunächst unter System|Einstellungen|Bildschirmauflösung auch nicht auf einen höheren Wert einstellen. Erst nach dem Entfernen des Hakens vor “Bildschirm spiegeln” kann auch eine höhere Auflösung von 1280*800 Pixel eingestellt werden. Der Sache werde ich später noch genauer auf den Grund gehen (müsen). Die Probleme scheinen zusammenzuhängen mit einer getrennt möglichen Konfiguration eines externen Bildschirms (der via Dockingstation angeschlossen werden kann).

Leistungsparameter

  • Prozessor: Intel Core2 Duo processor SL9400 (1.8Ghz, 1Ghz FSB)
  • Grafikkarte: Intel Graphics Media Accelerator 4500MHD
  • Bildschirm: 12,1 Zoll,  1280×800 Pixel. 16:9 Format, CCFL backlight, 200 nit
  • Speicher: 2 GB DDR3-RAM PC3-8500 (sollte reichen)
  • Card Reader (SD,SDHC,MMC,MS & MS Pro)
  • Festplatte: SATA 160 GB, 7200 rpm (gut! Schnelle FP!)
  • Netzwerk
    • Wired: Intel Gigabit Ethernet Controller (82567LM)
    • Wireless
      • (MiniPCI Express slot 1) (Intel WiFi Link 5300AGN) 802.11a/g/n
      • Bluetooth 2.1
      • UWB
  • Sonstiges
    • Ultrabase
    • Fingerprint Gadget
    • Intel Turbo Memory 2GB
    • Audio (Conexant Azalia Audio Codec)
  • Gewicht: 1486 Gramm (mit 6 Zellen Akku, eigene Messung)
  • Laufzeit nach Angaben Lenovo: 6,2 Stunden mit 6 Zellen Akku, bis zu 10 Stunden mit 9 Zellen Akku, das glaub ich erst, wenn ich’s gesehen habe.

Informationsquellen

Energieverbrauch

Was nach einer Ubuntu-Installation out-of-the-box auf dem Rechner ist, ist schon ziemlich klasse, aber ich habe da noch gerne das ein oder andere Extra. Was genau, notiere ich fortlaufend in einem anderen Post: Ubuntu 8.10 installiert, und dann?

0

Virtualisierung

February 1, 2009

Visualisierung von Virtualisierung :-)

Virtualisierung von Rechnern: im Serverbereich hat sich das Konzept durchgesetzt – zu Recht. Die Frage “macht Virtualisierung Sinn?” ist längst positiv entschieden, aus Sicht Februar 2009 stellt sich nur noch die Frage nach dem “Wie?”. Eine Reihe von Lösungen stehen zur Verfügung, freie, halb-freie, kostenlose, halb-kostenlose und voll-kommerzielle. Hier stellen sich strategische Fragen (Vermeidung von Abhängigkeiten) und auch betriebswirtschaftliche (z. B. Lizenzgebühren für die Lösung insgesamt bzw. für erweiterte Features wie Management-Tools). Auch technologisch  ist noch längst nicht alles abschließend entschieden (z. B. Para-Virtualisierung vs. Voll-Virtualisierung).

Grundlegung / Pro’s und Cont’s der Virtualisierung:

Weiterführende Informationen:

Kriterien für die Entscheidung:

  • Grad der Freiheit (Open Source, Closed Source, Teilkomponenten Closed Source?)
  • Abhängigkeiten
  • Kosten (Lizenzgebühren für Lösung, für Management-Tools, etc.)
  • Dokumentation (Verfügbar? Kostenpflichtig?)
  • Performance
  • Komplexität / Einfachheit in der Bedienung (Lernkurve, Schulungsaufwand, Verbreitung von Knowhow)
  • Stabilität der Lösung
  • Technologische Qualität (Eleganz der Lösung, Features)
  • Zukunftsträchtigkeit (Was bringt die Zukunft?)

Wer steht hinter welcher Lösung?

Desktop oder Server?

  • Vmware: Server und Desktop
  • VirtualBox: Desktop
  • Xen: Server
  • KVM: Server und Desktop
1

GTD – Getting Things Done

November 2, 2008

Informationsquellen

Open Source Software

0