Archiv 29. Oktober 2014

Mittwoch, 29. Oktober 2014

Mac bootet nach Upgrade auf Yosemite und TimeMachine-Restore nicht mehr

Kürzlich durfte ich einem Arbeitskollegen helfen, welcher sein neues Retina MacBook-Pro bei der Installation von Mac OS X Yosemite und dem anschliessenden Restore des TimeMachine-Backups zerschossen hatte.

Bootete der Kollege den Mac, erschien alsbald das blinkende Fragezeichen, welches darauf hindeutete, dass im System kein brauchbares Boot-Volume gefunden wurde.

Wir booteten deshalb in den Recovery-Modus und ich sah mir anschliessend die Situation genauer an. Im Disk Utility erschien die Festplatte zwar, uns war es aber nicht möglich, Partitionen auf der Festplatte zu erstellen oder zu löschen. Wählten wird die Systempartition an, blieb der „-„-Knopf (für „Löschen“) ausgegraut.

Ich wechselte deshalb in Terminal.app und startete auf einem anderen PC einige Google-Suchen zur Thematik. Äusserst rasch stiess ich auf folgende Ask Different/Stackexchange-Frage:

Can’t ever remove partition?

Wie in der Frage dargelegt führte ich ebenfalls folgendes Kommando aus:

# diskutil list
    ~ - Tue Aug 14 10:12:00: diskutil list
    /dev/disk0
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *512.1 GB   disk0
       1:                        EFI                         209.7 MB   disk0s1
       2:                  Apple_HFS MacSSD                  425.7 GB   disk0s2
       3:                 Apple_Boot Recovery HD             784.2 MB   disk0s5
       4:          Apple_CoreStorage MacSSD 2                85.3 GB    disk0s4   <--- Want to remove this
       5:                 Apple_Boot Boot OS X               134.2 MB   disk0s6
    /dev/disk1
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:                  Apple_HFS MacSSD2                *84.9 GB    disk1

(Symbolauszug) Wie auch bei dem Terminalauszug auf Stackexchange lag das Problem bei uns auch bei einer Partition, die als "Apple_CoreStorage" gekennzeichnet war. Dies bedeutet, dass die Partition mit FileVault verschlüsselt ist.

Der Kollege gab mir sein OK, dass ich die Partition löschen konnte, da er ja ein aktuelles Backup auf seiner TimeCapsule liegen hatte. Wie in der Antwort auf Stackexchange beschrieben listet ich zuerst alle File Vault-Partitionen auf:

# diskutil cs list

Anschliessend kopierte ich die Volume ID des Logical Volumes, eine Zeichenkette aus den Buchstaben und Zahlen A-F0-9. Als nächstes löschte ich die Volumengruppe:

# diskutil cs delete <Volume ID>

Nach dieser Aktion starteten wir Disk Utility wieder - und siehe da, die Festplatte konnte neu partitioniert werden.

Meine Vermutung war daraufhin, dass der Restore mit Time Machine eine fehlerhafte Manipulation an der Festplattenverschlüsselung vorgenommen und die Partition unlesbar gemacht hatte.

Tags: , , , , ,
Labels: Apple

1 Kommentar | neuen Kommentar verfassen

Mittwoch, 29. Oktober 2014

Alle Seiten von PDF-Dateien unter Windows in Grafikdateien umwandeln

Kürzlich nahm ich mir vor, besonders visuell ansprechende Folien von Abschlusspräsentationen im Powerpoint-Format in einer Galerie zu sammeln, damit sich künftige Autoren an guten Beispielen inspirieren lassen können.

Als erstes sammelte ich alle Präsentationen, die mir auf unserem Netzlaufwerk bei der Durchsicht begegneten. Anschliessend öffnete ich jede Präsentation von Hand in Powerpoint und speicherte diese als PDF-Datei in einem zentralen Verzeichnis ab.

Da die Foliensätze nun in einem elektronischen Standardformat vorlagen, machte ich mich hinter ein Bash-Script, mit welchem ich alle Seiten der PDF-Dateien mittels ImageMagicks convert in einzelne Grafiken umwandeln konnte. Das Resultat:

# /bin/sh

DESTEXT="jpg"
DESTEXT="png"

echo "Starting up ..."
echo ""

echo "Working in directory $PWD ..."
echo ""

CONVERT=$(which convert)

if [ ! -f "$CONVERT" ]
then
echo "ERROR: convert binary 'convert' not found ($CONVERT). Aborting"
exit 1
fi

echo "Using convert binary at $CONVERT"
echo ""

# Ghostscript not in path in WIN32, won't succeed
# This is how imagemagick does it: http://trac.imagemagick.org/browser/ImageMagick/branches/ImageMagick-6/magick/nt-base.c?rev=13427
# https://www.google.ch/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=site%3Atrac.imagemagick.org%20gswin32c.exe
#GS32=$(which gswin32c.exe)
#GS64=$(which gswin64c.exe)
#if [ ! -f "$GS32" ] && [ ! -f "$GS64" ]
#then
#	echo "ERROR: Ghostscript binary 'gswin[32|64]c.exe' not found (32-bit: $GS32, 64-bit: $GS64). Aborting"
#	exit 1
#fi

#echo "All binaries exist, continuing conversion process."
#echo ""

echo "Using convert binary at $CONVERT"
echo ""

# http://unix.stackexchange.com/questions/9496/looping-through-files-with-spaces-in-the-names
find . -type f -iname "*.pdf" -print0 | while IFS= read -r -d '' PDF; do
echo "Converting $PDF ..."
SOURCE="$PDF"
DEST="$PDF.$DESTEXT"

CMD="\"$CONVERT\" -density 72 \"$SOURCE\" \"$DEST\""
echo "Command: $CMD"
eval $CMD
echo "Done"
echo ""
done

exit 0

Siehe auch:

Probleme

Fehlendes bash

Ich verwende die Git for Windows, um auch unter Windows auf eine bash zugreifen zu können. Git for Windows bringt unter anderem eine bash-Shell mit sich. Im Windows-Explorer öffnet man bash im aktuellen Verzeichnis, indem man nach einem Rechtsklick auf eine leere Fläche im Zielordner im Kontextmenu auf Git Bash klickt.

Fehlendes ImageMagick

ImageMagick steht auch als kompilierte Windows-Binaries zur Verfügung. Bei mir hat das Script mit folgendem Paket funktioniert:

C:\Users\USER>convert --version
Version: ImageMagick 6.8.9-6 Q16 x64 2014-07-22 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo freetype jbig jng jp2 jpeg lcms lqr pangocairo png ps rsv
g tiff webp xml zlib

Fehlendes Ghostscript

Wenn ImageMagick folgenden Fehler meldet …

convert.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -
dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEV
ICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" "-sOutputFile=C
:/Users/USER/AppData/Local/Temp/magick-4444uMzVadN1QsOl%d" "-fC:/Users/USER/AppData/Local/Temp/magick-4444-MgLEhwrf1qK" "-fC:/Users/USER/AppData/Loc
al/Temp/magick-4444WnOaJKpe5I_Y"' (-1) @ error/utility.c/SystemCommand/2051.

… bedeutet dies, dass auf dem lokalen Windows-System die Installation von Ghostscript (gswin32c.exe) fehlt.

Ghostscript steht natürlich auch in Form von Windows-Binaries zur Verfügung und lässt sich mit einigen wenigen Mausklicks installieren.

Beim Debugging des oben genannten Problems drang ich tief in den Source Code ein, um die Stelle zu finden, wo ImageMagick herausfindet, wo die Ghostscript-Executables liegen:

Man schaue sich die Funktion NTLocateGhostscript() in nt-base.c genauer an: Die Pfade sind nicht hardkodiert, sondern werden aus der Windows-Registry ausgelesen. Dies bedingt, dass Ghostscript ordnungsgemäss installiert wurde.

Labels: Programmierung

Keine Kommentare | neuen Kommentar verfassen