InternetExplorer < 7

Wie gutgläubig waren die Entwickler?

<script>
var x = clipboardData.getData("Text");
</script>

Bilder von einer “defekten” Speicherkarte retten

Vor kurzem hat sich bei mir eine SD-Karte verabschiedet. Da das System (in allen Lesegeräten!) E/A-Fehler gemeldet hat, war ich mir recht sicher, selbst nichts mehr retten zu können.

Bei einer weiteren Karte sah es schon anders aus. Die fotografierende Person hat berichtet, dass die Kamera bei der Aufnahme einen Fehler brachte. Das zuletzt aufgenommene Bild war auf der Kamera nur noch “halb” zu sehen. Die Speicherkarte war zu diesem Zeitpunkt etwa zur Hälfte belegt.

Nach einem Neustart der Kamera war dann Schluss: die Kamera bot nur noch an, die vermeintlich kaputte Speicherkarte zu formatieren. Via Kartenleser an den PC (bzw. hier: Mac) angeschlossen, schlug das Betriebssystem ebenfalls ein Formatieren der Karte vor.

Da die Karte in diesem Fall ja noch erkannt wurde und das Betriebssystem auch keine “I/O-Errors” o.ä. protokollierte, versuchte ich mich an einer Rettung.

Zuerst habe ich (direkt vor Ort unter MacOS X) mittels dd ein Image der Karte angelegt. Bei der (bereits oben erwähnten) Hälfte der Karte brach der Lesevorgang dann ab, nur der erste Teil war im Image gesichert.

Ein erster Rettungsversuch an besagtem Image mit TestDisk (Frank erinnert sich hoffentlich!) brachte mich leider nicht weiter. Trotz diversen Hinweisen auf den mutmaßlichen Partitionstyp hat das Programm keine Partition mehr gefunden.

Da es sich in diesem Fall ausschließlich um JPEG-Dateien handelte, kam mir eine Suche nach Dateimustern in den Sinn. Vielleicht habe ich mich auch deshalb nicht weiter mit der Rettung durch TestDisk befasst. Basierend auf TestDisk gibt es inzwischen das Tool PhotoRec – speziell für die Rettung von Fotos auf Datenträgern.

Das Werkzeug läßt sich sehr einfach (im Prinzip wie TestDisk) bedienen und hat bereits nach wenigen Sekunden alle noch lesbaren Bilder gefunden.

Die Vermutung, dass die Kamera nach der Hälfte der Speichers auf der Karte wieder begonnen hat, am Anfang weiter zu schreiben (und damit die Partitionstabelle samt magischem Bitmuster zu überschreiben), brachte mich auf zwei Ideen:

  • Vor einiger Zeit kursierten Meldungen über billige Speichermedien, in denen nicht die beworbene Speichermenge verbaut wurde.
  • Vielleicht ist einfach nur an dieser “Grenze” (sprich der Grenze zur zweiten Hälfte) ein bzw. der zweite (?) Speicherbaustein ausgefallen.

Da es sich um eine Speicherkarte eines Herstellers handelt, der mit 30 Jahren “Garantie” wirbt, bin ich gespannt unter welchen Bedingungen nun eine neue Karte erhältlich sein könnte.

In diesem Zusammenhang möchte ich noch H2cdimage erwähnen, das mir beim Einlesen von problematischen CD/DVDs bereits oft geholfen hat. Auf dieser Seite sind außerdem noch weitere ähnliche Werkzeuge aufgeführt.

Zum Auffinden von Dateien anhand von Mustern hatte ich auch noch ein weiteres Programm im Kopf. Leider habe ich es bisher nicht wieder gefunden. Es gibt inzwischen eine riesige Anzahl an (kommerziellen) Daten-Rettungs-Werkzeugen, die einem leider etwas die “Sicht” nehmen…

Nachtrag:
MacOS X bietet beim Einlegen folgende Optionen an: Datenträger auswerfen, formatieren oder ignorieren. Zur weiteren Untersuchung an der Kommandozeile kann man den Dialog entweder “stehen lassen” oder auf ignorieren drücken.

Unter MacOS X alle Datenträger auflisten:
diskutil list
oder dann direkt eine bestimmte Platte mit
diskutil list /dev/diskX

TestDisk empfiehlt übrigens anstatt mit /dev/diskX zu arbeiten, das zugehörige Raw-Device unter /dev/rdiskX zu verwenden.

Von Feisty zu Gutsy und von Gutsy zu Hardy.

Ein Upgrade des kompletten Systems auf eine neue Version funktioniert unter Debian bzw. Ubuntu eigentlich ganz gut. Da Feisty (7.04) allerdings seit Oktober vergangenen Jahres nicht mehr unterstützt wird, sind auch die zugehörigen Paketquellen verschwunden. Also ist eigentlich eine Neuinstallation angebracht. Da ich jedoch ein System hatte, das völlig unkritisch war, wollte ich das Upgrade unbedingt ausprobieren.

Um generell ein Upgrade der Distribution durchzuführen benötigt man das Python-Script do-release-upgrade (in der Server-Version, ansonsten bietet einem der Update-Manager das Upgrade an). Falls es nicht installiert ist, bekommt man es mit dem Paket update-manager-core aus dem Release-Archiv unter http://old-releases.ubuntu.com/ubuntu

Nach der Installation kann man mit do-release-upgrade zum nächsten Release wechseln (hier 7.10). Allerdings ist im Upgrade-Paket der Ubuntu-Mirror des jeweiligen Landes eingetragen – der in diesem Fall jedoch wie bereits gesagt, die benötigten Pakete nicht mehr liefert. D.h. das Upgrade einer Distribution ist Angelegenheit der momentan installierten Distribution – einige Pakete müssen aus den Paketquellen des installierten Releases heruntergeladen werden.

Hier ist beschrieben (im Beitrag “Vin’c said on 2009-02-27:”, leider sind keine Anker auf der Seite), wie man in den Upgrade-Vorgang eine Pause einbaut, die Adresse des Servers ändert und dann wieder die sources.list der alten Distribution anlegt, so dass der Upgrade-Prozess den Namen der Distribution darin austauschen kann.

Das Upgrade ging bei mir am Ende mit diversen “Segmentation Faults” schief. Die Lösung gibts hier. Allerdings konnte ich das Paket libc6-xen schon nicht mehr installieren, weshalb ich zuerst das Verzeichnis /lib/tls von einem funktionierenden System kopieren musste. Nach einigen aptitude -f install war dann 7.10 endlich installiert und lief auch nach einem Neustart noch einwandfrei.

Also auf zum Upgrade 7.10 auf 8.04 LTS. Ein do-release-upgrade sollte es erledigen. Allerdings kam das Script nicht über den Versuch hinaus, die Liste der Distributionen herunterzuladen. Auch der manuelle Aufruf über die Python-Shell brachte mich nicht weiter.

Okay, ich die Suche nach der Ursache dauerte mir zu lange. Einfach gutsy durch hardy in der /etc/apt/sources.list ersetzt, aptitude update und anschliessend ein aptitude dist-upgrade aufgerufen. Die Auflösung eines kleinen Konfliktes bestätigt, danach nochmals ein upgrade ausgeführt und schon war ich am Ziel:

root@cx2:/root# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.2
Release: 8.04
Codename: hardy

Unterwegs hatte ich noch folgende Befehle gebraucht, vielleicht helfen Sie dem ein oder anderen ja auch mal weiter:

Herausfinden, zu welchem Paket eine installierte Datei gehört:
dpkg -S /pfad/zu/datei

Für nicht installierte Dateien verwendet man entweder “apt-file” oder die Suche der Distribution (http://packages.ubuntu.com – zweites Formular!)

Liste der Installierten Pakete erzeugen und diese Pakete (woanders) wieder installieren:
dpkg --get-selections | grep "\binstall" | awk '{print $1}' > list.txt
xargs -n1 aptitude install -y < list.txt

(Oder via --set-selections)

Ubuntu Hardy 8.04.2 LTS unter XEN 3.0: Installationshürden…

Da der Supportzeitraum des vorherigen Systems schon lange peinlicher weise viel zu lange abgelaufen war, musste eine aktuelle Version her. Ich habe mich für die LTS-Ausgabe von Hardy entschieden, da diese bis 2013 unterstützt wird.

Bei der Installation unter XEN 3.0.x sind ein paar Probleme aufgetreten, die ich hier kurz für die Nachwelt (vor allem für mich wenn ich ehrlich bin) archivieren möchte:

Eigentlich dachte ich, mit dem Paket libc6-xen auf der sicheren Seite zu sein was die “Segmentation Faults” und die TLS-Libraries betrifft. Die Installation alleine genügt jedoch nicht. Folgendes muss noch ausgeführt werden, damit die Anwendungen auch diese libc verwenden:

echo 'hwcap 0 nosegneg' > /etc/ld.so.conf.d/libc6-xen.conf && ldconfig

Da das /tmp-Verzeichnis auf einer eigenen Partition liegt (noexec, nosuid, …) und unter /tmp eingebunden wird, müssen die Rechte nach dem ersten Mount gesetzt werden (das gleiche betrifft ggf. /var/tmp):

chmod 0777 /tmp && chmod +t /tmp

Nach dem debootstrap darf man sich noch mit den “Locales” beschäftigen (im laufenden System bzw. im chroot):
cat > /var/lib/locales/supported.d/de <<EOF
de_DE.UTF-8 UTF-8
de_DE@euro ISO-8859-15
EOF

locale-gen
export LC_ALL=de_DE.UTF-8
update-locale

Dann sollte man aber auch im SSH-Client (zumindest in Putty) den Zeichensatz auf UTF-8 stellen.

Typo3 und PHP 5.2.4: Leerer BODY in HTML, Empty BODY-Tag

Nach dem Update auf PHP 5.2.4 geben Typo3-Installationen im Frontend nur noch Seiten aus, bei denen zwischen den Body-Tags kein Inhalt mehr steht. Das Backend funktioniert allerdings und die restlichen Angaben (Titel, Meta-Tags, usw.) werden auch ausgegeben.

Nach langer Suche bin ich auf dieses Problem und die Lösung dazu gestoßen.

Typo3 Debugging / Logging aktivieren

Zuerst sollte man sicherstellen, dass das Protokollieren von Fehlern von PHP generell richtig eingestellt ist (Hinweise: richtige php.ini, error_reporting).

Dann lassen sich folgende Optionen in der localconf.php setzen, um möglichst alle Fehlermeldungen in Typo3 einzuschalten:
$GLOBALS['TYPO3_DB']->debugOutput = true;
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '1';
$TYPO3_CONF_VARS['SYS']['sqlDebug'] = '1';
$TYPO3_CONF_VARS['FE']['debug'] = '1';

Wenn das Backend generell funktioniert, kann man noch das Admin-Panel aktivieren über Template:Setup:
config.admPanel = 1

Um eine defekte Datenbank-Tabelle zu finden kann man das MySQL-Query-Log einschalten und durchschauen oder auch einfach bei MyISAM-Tabellen diese prüfen:
find /var/lib/mysql/ -name '*.MYI*' -exec myisamchk {} \;

Vodafone WebSessions UMTS K3520 / Huawei E169 – MacOS X 10.4 Verbindung wird getrennt / IPCP: timeout sending Config-Requests

Unter MacOS X 10.4 konnte ich mit einem Vodafone WebSessions (Prepaid UMTS-Zugang) UMTS-Stick K3520 zwar eine Verbindung herstellen – sie wird aber nach wenigen Sekunden wieder beendet.

Im Programm “Internet-Verbindung” kann man im Menü “Fenster” das Verbindungsprotokoll anzeigen und man kommt zu folgender – etwas aussagekräftigeren – Fehlermeldung als Grund für das Problem:

IPCP: timeout sending Config-Requests

Nachdem ich wirklich viele Dinge ausprobiert hatte, habe ich diese Diskussion gefunden und folgende Vorgehensweise hat funktioniert:

  • Den USB-Stick entfernen und alle zugehörigen Programme schliessen.
  • Die Datei /etc/ppp/options bearbeiten (falls vorhanden: Sicherheitskopie machen, ansonsten anlegen) und folgendes eintragen:
    refuse-chap
    refuse-mschap
    refuse-mschap-v2
  • Anschliessend den USB-Stick erneut anschliessen und kurz warten.
  • Dann das Programm “Vodafone Mobile Connect” starten und die gefundene Verbindung aktivieren (ansonsten manuell z.B. “DE Vodafone.de WebSessions” auswählen).
  • Die Verbindung kann dann über “Internet-Verbindung” hergestellt werden.

Entgegen der Meinung in anderen Diskussionen funktioniert die Verbindung bei mir OHNE die Angabe von Benutzername/Kennwort (Felder leer lassen) und auch dann, wenn Airport (WLAN) aktiviert ist und sogar wenn ich bereits vor der UMTS-Verbindung mit einem Funknetz verbunden bin.

Das aktuelle Verzeichnis im Bash-Prompt kürzen

# …
PS1=’${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]$pwd_short \[\033[00m\]\$ ‘

function prompt_command()
{
local pwd_maxlen=20
local pwd_full="${PWD/$HOME/~}"
if [ $(echo -n $pwd_full | wc -c | tr -d " ") -gt $pwd_maxlen ]
then
pwd_short="$(basename $pwd_full)"
else
pwd_short="$(echo -n $pwd_full)"
fi
}

# …

case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND=prompt_command

# …

Samsung X11-Pro: Dunkler Bildschirm nach Arbeitsspeicher-Erweiterung

Das Samsung X11-Pro T7400 Reza (rot) konnte ursprünglich nur mit bis zu 2 GB RAM umgehen.

Einige Quellen sprechen jedoch von maximal 4 GB, die das Gerät auch erkennt. Allerdings wurde nach dem Einbau von insgesamt mehr als 2 GB (egal in welche DIMM-Bank) der Monitor dunkel (schwarz), sobald Windows XP mit dem Laden fertig war. Das BIOS erkannte den RAM jedoch vollständig und der XP-Boot-Bildschirm wurde auch angezeigt.

Ein CMOS-Reset brachte leider nichts, allerdings das Update des BIOS von Version 21X auf 22X.

Jetzt läuft es einwandfrei mit 3,0 GB Arbeitsspeicher.

Nachtrag: Die komplette Modellbezeichnung ist übrigens NP-X11AV02/SEG.

Versions-Stand von Anwendungen unter Windows prüfen

Von Frank habe ich den Tipp zu den “Sicherheitsupdates in Windows” gefunden.

Dabei möchte ich diese Empfehlung noch um ein weiteres Tool ergänzen: Den “Secunia Personal Software Inspector (PSI)“. Dieses Tool (Variante für den privaten Gebrauch) prüft die Software-Version vieler installierter Anwendungen unter Windows. Dabei erkennt es veraltete Versionen und schätzt die dadurch entstandene Gefährdung ein.

Per Mouseover werden die Pfade zu den Anwendungen angezeigt und ein Klick auf die Gefahrenstufe führt zum zugehörigen Vulnerability-Advisory von Secunia.