Dienstag, 15. Juli 2014

Bootcamp: Per Script von OSX in Windows booten und zurück

Wer als Mac-Besitzer häufiger noch auf Windows angewiesen ist, hat eine Reihe von Möglichkeiten, um Windows zu betreiben. Die gängigste Methoden sind dabei Virtualisierung oder eine Boot-Camp-Installation.

Virtualisierung ist die einfachste Methode, um ein Windows-Gastbetriebssystem, etwa mittels Parallels (Klassenprimus), VMWare (meine Empfehlung) oder VirtualBox (kostenlos) zu betreiben.
Wer allerdings die Hardware exklusiv für ein Betriebssystem nutzen möchte (etwa für PC-Spiele) oder mit Software arbeitet, die sich nicht richtig virtualisieren lässt (Stichwort Hyper-V/SLAT), der kann auf eine parallele Installation von Windows ausweichen. Um ein solches Dual-Boot-Szenario zu erleichtern, stellt Apple den Bootcamp-Assistenen zur Verfügung. Der Assistent hilft bei den nötigen Handgriffen (insb. Umpartitionieren & Installation) und – ganz wichtig – stellt die benötigten Windows-Treiber für die eigene Apple-Hardware bereit. (Wer noch zwischen Virtualisierung und Dual-Boot schwankt, dem sei gesagt: Auch wenn man mit dem Bootcamp-Assistenten eine gewisse Hilfe bekommt, ist die parallele Installation von Windows doch aufwändiger.)

Wie der Titel schon sagt, möchte ich hier zeigen, wie man per Script einfach und schnell von OSX in Windows bootet und umgekehrt. 

1. Reboot von Mac OSX in Windows: per AppleScript

do shell script "bless -mount /Volumes/BOOTCAMP -legacy -setBoot -nextonly" with administrator privileges
do shell script "shutdown -r now" with administrator privileges 

Am Terminal:

sudo bless -mount /Volumes/BOOTCAMP -legacy -setBoot -nextonly
sudo shutdown -r now

Damit wird der Rechner ohne weitere Vorwarnung heruntergefahren und die Windows-Partition gestartet.

Man muss im Applescript bzw. beim Terminalbefehl ggf. den Namen der Windowspartition anpassen.
Der Name sollte sich am Bootcamp-Laufwerksamen auf dem Desktop bzw. im Finder ablesen lassen.
Mann kann den Laufwerksnamen auch direkt im Terminal nachgeschlagen:

ls /Volumes

Terminal  bash  80×24  (bei mir heißt die Windowspartition es eben BOOTCAMP)

Insbesondere das AppleScript lässt sich problemlos per Launcher starten oder direkt in Quicksilver, Alfred & Co einbinden. Siehe hier.
Ein kleiner Nachteil an dem Skript ist, dass man stets das Admin-Passwort eingeben muss.
Wem es nicht zu unsicher ist, der findet hier eine Anleitung, wie man sein Passwort im Script mit angibt. 

2. Wer statt eines Scripts lieber kleines Tool verwendet findet in BootChamp einen Freund:

BootChampInSystemMenu

Nützlich und zudem kostenlos – wer also noch Platz in seinem Menü hat, wird hier bedient. :-)

3. Schließlich gibt es hier noch ein Batch-Skript, um von Windows nach Windows zu rebooten:

@echo off
c:\progra~1\Bootca~1\bootcamp.exe -StartupDisk "Windows"
Shutdown /r /t 0 

4. Per Alt-Taste beim Booten

Nicht unerwähnt bleiben soll schließlich auch die Standardmethode zum Wählen des gewünschten Betriebssystems beim Hochfahren:
Gleich nach dem Einschalten des Rechners die ⌥-Taste halten, bis ein Boot-Menü erscheint.

Frohes Schaffen.

Mittwoch, 2. Juli 2014

Wie bekomme ich eine kleinere .WAV-Datei - Convert Audio to GSM6.10, G.711

Es gibt tatsächlich immer noch Situationen, in denen man darauf angewiesen ist, einen Sound als wave-Datei vorliegen zu haben. Dies ist heute teilweise noch in Computerspielen und in Mobile Apps der Fall und alten bzw. eingeschränkten Programmierschnittstellen (APIs) geschuldet.

Da es sich bei WAV um ein unkomprimiertes Format handelt, sind die Dateien leider schnell ziemlich groß (file size). Für Mobile Apps (iOS, Android, Windows Phone, etc) ist das allerdings nicht so schön, da ein kleines App aufgrund eines einzigen Musiksstücks im Wave-Format schnell um 20Mb anschwellen kann.

Am gängisten sind 44kHz 16bit PCM .wav-Dateien. Und die sind groß. Ein Beispiel: Ein 1:35 Minuten Musikstück in diesem Format belegt schlappe 18Mb.
Wenn man jedoch an der Bit-Tiefe, der Sample Rate und den verfügbaren Kanälen (Stereo, Mono) schraubt, kann man auch sehr viel kleinere Wave-Dateien produzieren.

Dabei muss  allerdings immer sichergestellt sein, dass die verwendete .wav auch auf dem Gerät abgespielt werden kann. Hierzu muss man freilich die Dokumentation des Gerätes bzw. der verwendeten API konsultieren. Wenn sie den vorhanden ist.. was leider nicht immer der Fall ist. Und natürlich testen, testen...

Unten finden sich beispielhaft Angaben aus der MSDN-Dokumentation zu Windows Phone 8. Ich hatte auf die schnelle keine andere Zusammenstellung gefunden. Die Angaben können nach meinen Tests aber auch für andere Geräte übertragen werden.

Die kleinstmögliche Datei bekommt man mit der Formatspezifikation WAV GSM6.10.
Das besagte Hintergrund-Musikstück belegt damit statt 18Mb nur 900kb! Der Klang ist noch erträglich, für Mono eigentlich sogar gut.

 Auf dem iPhone kommt dagegen G.711 .wav (a-law, µ-law) für möglichst kleine Wave-Dateien in Frage.

Um Die Dateien zu kodieren (bzw. resamplen), empfehle ich die Audio-Allzweckwaffe XLD oder bei Audacity das entsprechende Export-Format: GSM6.10
(Um die Sample-Rate in Audacity zu senken, sollte man: Tracks->Resample.. wählen, statt im Projekt-Pan: Set sample rate, da dies auch das Tempo ändert.)
 

The following table lists WAV audio formats that are supported starting with Windows Phone 8.

Feature

LPCM

MS ADPCM

IMA ADPCM

GSM 6.10

G.711 (A-Law, µ-law)

Containers

WAV

WAV

WAV

WAV

WAV

Bit depth

16

16

16

8

8

Max bit rate (per second)

1500 kbits

64 kbits

64 kbits

13 kbits

64 kbits

Max sample rate

96 kHz

8 kHz

8 kHz

8 kHz

8 kHz

Channels support

1, 2

1, 2

1, 2

1, 2

1, 2

Streaming support

Yes

Yes

Yes

Yes

Yes

Emulator support

Yes

Yes

Yes

Yes

Yes

Dienstag, 1. Juli 2014

Papierkorb kann nicht vollständig entleert werden: Datei-Objekt ist in Verwendung

Ein Papierkorb ist eine praktische Sache, da man hier so manche Datei wieder herausfischen kann, die man aus versehen oder absichtlich gelöscht hat, aber dann doch noch braucht.
Irgendwann muss das Zeug im Papierkorb auch mal weg; schwupps wird der Papierkorb entleert.

Leider kommt es dabei häufiger vor, dass sich einzelne Dateien nicht löschen lassen. Mac OS X meldet schlicht: Die Datei bzw. das Objekt ist in Verwendung – und kann deshalb nicht gelöscht werden, auch wenn man "trotzdem löschen" bzw. "fortfahren" wählt.

Teilweise sind die Dateien tatsächlich noch von irgendwelchen Programmen geöffnet, die dann blockieren.

a) Abhilfe schafft hier häufig:

- sich von OSX ab- und wieder anmelden
- einmal neu Booten bitte – und dann den Papierkorb entleeren
- das Programm, in dem die Datei geöffnet ist, schließen
 
  Falls man nicht weiß, welches Programm bzw. welcher Prozess blockiert,
  1. öffnet man den Terminalund gibt: lsof und ein Leerzeichen ein; 
  2. Dann zieht man die blockierte Datei per Drag & Drop mit der Maus ins Terminalfenster.
  3. Der Pfad zur Datei erscheint daraufhin im Terminal; nun kann man Enter drücken. 
      Man bekommt bei Erfolg einen Programmnamen & eine PID genannt, nach der man im Aktivitätsmonitor.app sucht, um den Prozess zu beenden

b) Wenn auch das nichts hilft:

- Im Finder->Finder-Menü->Papierkorb sicher entleeren
 
(Alternativ kann man beim Entleeren des Papierkorbs Alt+Shift halten) 

c) Sollte dies auch helfen, wird teilweise empfohlen, den Prozess Locum und/oder quicklookd zu beenden:

- Aktivitätsanzeige öffnen (ggf. per Spotlight suchen); und den Locum-Prozess stoppen; danach den Papierkorb normal entleeren
- Aktivitätsanzeige öffnen; quicklookd-Prozess stoppen; danach den Papierkorb normal entleeren 

d) Wer die Datei immer noch nicht los wird, der kann das kostenlose Hilfsprogramm Trash It! probieren.

e) Sollte die Datei im Papierkorb durch den Admin-Account gesperrt sein, hilft folgender Terminal-Befehl (Admin-Passwort notwendig):

sudo rm -rf ~/.Trash/*

f) Noch mehr Tipps findet sich im zugehörigen Knowledge Base Artikel von Apple "Der Papierkorb lässt sich nicht entleeren oder eine Datei lässt sich nicht in den Papierkorb verschieben"