Eurax

Think different!

iTunes Bibliothek sichern und auslagern

Ich habe seit geraumer Zeit meine itunes Bibliothek auf eine externe Festplatte ausgelagert. Im Grunde eingentlich nicht schwer, aber dennoch gibt es ein paar Dinge die man beachten sollte. Im itunes muss man den Speicherort von "itunes Musik" zur Festplatte legen. Dannach kann man wie gewohnt einfach die Musik ins itunes ziehen.
Ob man die beiden zusätzlichen Optionen aktiviert oder deaktiviert, sei jedem selbst überlassen.



Um sich ein Backup seiner iTunes Bibliothek zu erstellen, kopiert man am Besten den kompletten Ordner "iTunes". Dieser ist im Finder unter Musik zu finden.
Will man dieses Backup wieder aufspielen einfach zurück kopieren.

Bash Script

Hier gibts jetzt ein kleines Bash Script, damit kann man sich automatisch auf der Box einloggen und gleichzeitig neustarten, ausschalten oder Festplatte aushängen.
Wichtig ist das das Script ssh.sh und ssh.exp im gleichen Ordner liegen.

Zum Gebrauch:

Für ein AppleTV kann man dieses Kommando verwenden.
./ssh.sh [hostname] [command]

Beispiel ./ssh.sh AppleTv.local ps -x

für command habe ich schonmal ein paar Funktionen vordefiniert.

./ssh.sh AppleTv.local reboot startet AppleTV neu
./ssh.sh AppleTv.local shutdown schaltet AppleTV aus
./ssh.sh AppleTv.local umount hängt ein Device aus

ssh.sh:


#!/bin/bash
# Einfaches Beispiel

if [ $# -eq 4 ] || [ $# -eq 2 ]; then


if [ $# -eq 2 ]; then
password="frontrow"
command="$2"
else
password="$3"
command="$4"
fi

case $command in

reboot) command="echo $password | sudo -S reboot"
;;
shutdown) command="echo $password | sudo -S shutdown -h now"
;;
umount) command="echo $password | sudo -S umount /Volumes/MyBook"
;;
*) command=$4
;;
esac

case $# in
2) expect ssh.exp $1 frontrow frontrow "$command"
;;
4) expect ssh.exp $2 $3 $1 "$command"
;;
esac
else
echo "Usage : ./ssh.sh [hostname] [command]"
echo "or for other device"
echo "Usage : ./ssh.sh [username] [hostname] [password] [command]"
echo "[command]:"
echo "reboot : restart host"
echo "shutdown : shutdown host"
echo "umount : umount /Volumes/MyBook"
echo "or own command:"
exit 1
fi




ssh.exp

set hostname [lindex $argv 0]
set password [lindex $argv 1]
set username [lindex $argv 2]
set command [lindex $argv 3]

spawn ssh -1 $username@$hostname $command
expect "Password:"
send "$password\r"
interact


Nur noch zum Verständnis, das expect Script regelt den Login auf dem Server und das Shell Script die Befehle die auf dem Server ausgefürt werden sollen.

Gui für Patchstick



Ich bin gerade auf eine sehr interesante Seite gestoßen. Es gibt jetzt eine Tool mit dem man ganz einfach einen Patchstick erstellen kann. Zu beachten ist lediglich, dass das neuste Update AppleTV 2.2 vom 3.10.2008 noch nicht unterstützt wird. Wie es scheint gibt es dabei Probleme mit der Fernbediehnung.
Ich konnte das Tool leider noch nicht testen, da es nur für Intel Plattform geschrieben wurde. Falls jemand Erfolg damit hatte, möge er doch bitte einen Kommentar hinterlassen.

Update Take2

Ich hatte jetzt wieder ein wenig Zeit und habe mein AppleTv geupdatet.
Dannach habe ich meinen "alten" Patchstick rausgekramt und versucht damit SSH zu aktivieren - ohne Erfolg. Nach ein wenig rechaschieren, fand ich eine Lösung. Der alte Patchstick kann verwendet werden, man muss auch nichts an der patchstick-root Partition ändern, lediglich an der Patchstick Partition.
Zuerst wird diese Datei benötigt.
Diese wird entpackt, man erhält einen Ordner names Patchstick, in diesem ist wiederum ein Ordner names Patchstick. Den Inhalt

About ATV Loader.txt
atvloader
installer.d
ssh
unused

kopiert man auf die Patchstick Partition, des vorhandenen Patchstick.
Dannach einfach wie gewohnt ins AppleTV stecken und rebooten.

Wichtig, es wird nur SSH aktiviert!
Wichtig, zuerst Gerät zurücksetzen und dann Take 2 aufspielen.

Watchdog, Kernel, USB, Maus, Keyboard

Nach langer Pause habe ich mal wieder an meinem AppleTV einige Veränderungen vorgnommen.
Als erstes sollte man den Kernel patchen, damit erhält man USB - Unterstützung und kann im gleichen Zug den Watchdog abschalten. Dazu läd man sich diese Datei
Wichtig ist das man das bspatch binary vom mac auf das AppleTV und auch die bsdiff Datei kopiert.
Nun "erstellt" man den neuen Kernel.

bspatch /mach_kernel.prelink mach_kernel.patched turbo-11-usb-and-watchdog-20070623.bsdiff

und überprüft mit md5, dass sollte so aussehen:

-bash-2.05b$ md5 /mach_kernel.prelink.patched
MD5 (/mach_kernel.prelink.patched) = 311f50ae644bc16967b7c0ac91cefaae

nun kann man den alten mit dem neuen ersetzten.

mv mach_kernel.prelink.patched /mach_kernel.prelink

Neustarten und gut is...

Jetzt kann man auch beruhigt den Finder beliebig lange killen, ohne das die Box neustartet.

In der Therorie sollte man auch eine externe Platte anschliesen können, leider war mir das bis heute nicht möglich diese erfolgreich zu benutzen, da ich keinen weg gefunden habe die erforderlichen Kernelextensions zu laden.

kextload: extension /System/Library/Extensions/IOUSBMassStorageClass.kext appears to be valid
kextload: loading extension /System/Library/Extensions/IOUSBMassStorageClass.kext
kextload: loaded version 2.8.5 of module com.apple.iokit.IOUSBFamily differs from requested version com.apple.iokit.IOUSBFamily
kextload: unable to register module with kernel
kextload: a link/load error occured for kernel extension /System/Library/Extensions/IOUSBMassStorageClass.kext
kextload: sending 1 personality to the kernel

Sollte jemand eine Möglichkeit finden wäre es sehr cool, wenn er hier einen Kommentar hinterlassen würde.

Eigene Plugins - FileBrowser

Da ich nicht viele Vorkenntnisse mit Object - C habe und dennoch versuchen wollte ein eigenes Plugin zu schreiben, von dem ich einen Nutzen habe und später vielleicht noch Teile davon wiederverwenden wollte, habe ich einen kleinen FileBrowser geschrieben.

Grundlage dafür waren zahlreiche Tutorials und vorallem der rekursive Menü Controller von Allan Quatermain.

Wenn ich jetzt zurück blicke war es dann doch einfacher als ich vermutet hatte.
Ich muss aber auch dazu sagen, dass dieses die ersten Zeilen sind die ich mit Object - C geschrieben habe.

Hier meine Projektdateien.

und hier das Plugin.

Applications Menu




Ein weiteres, sehr nützliches Plugin ist das Applications Menu, mit ihm ist es möglich Programme wie Centerstage, VLC, Firefox und weitere, zu starten. Dazu benötigt man nur die Fernbedienung. Die Installation gestaltet sich primär sehr einfach: Man wählt über ATVLoader Applications Menu aus und es wird sofort geladen und installiert.
Nun muss man natürlich noch die Programme auf die Box laden, dazu benutzt man dann ssh.
Die Datei "Applist.plist" im Ordner "/Users/frontrow/Documents/" wird benötigt um weitere Einstellungen wie Pfad zu dem Programmen und andere Parameter festzulegen.

Will man zum Beispiel, das VLC im Vordergrund startet wird, ohne das der Finder gekillt wird, sollte das Ganze so aussehen:




  • fireandforget - Programm wird im Hintergrund gestartet
  • killfinder - Apple TV UI wird gekillt
  • remotehelper - Fernbedienung wird verwendet
  • [-browseforfile-] - Ordner - Navigation
  • browsepath - Start Ordner
  • menu - Name der im Menu angezeigt wird
Nebenbei bemerkt ist es sehr ratsam sich eine Verknüpfung zu den Plugins zu erstelle:

sudo ln -s /System/Library/CoreServices/Finder.app/Contents/PlugIns/ /Users/frontrow/

mount_smbfs, mount_afp, etc...

Wer sich mal genauer den Ordner "sbin" auf der Box angeschaut hat, wird bemerkt haben das alle wichtigen mount Funktionen entfernt wurden. Daher ist es auch nicht mehr so einfach externe Dateisysteme einzuhängen. Aber es ist dennoch machbar.

Das Vorgehen ist prinzipell immer das gleiche.

Fangen wir mal mit smbfs an. Wir kopieren zuerst die nötigen Dateien auf die Box.
Hat man einen Intel- Mac kopiert man "/System/Library/Extensions/smbfs.kext" und
"/sbin/mount_smbfs" erstmal in "/Users/frontrow/".

Nun kommen einige Zeilen, dazu muss man mit ssh eingeloggt sein.
sudo mount -uw /
sudo mv /Users/frontrow/smbfs.kext /System/Library/Extensions/
sudo mv /Users/frontrow/mount_smbfs /sbin/
sudo chmod -R 755 /System/Library/Extensions/smbfs.kext
sudo chmod +x /sbin/mount_smbfs
sudo chown -R root:wheel /System/Library/Extensions/smbfs.kext
sudo chown root:wheel /sbin/mount_smbfs



sudo mount -uw /
sudo touch /.readwrite
sudo sync
sudo reboot

hier neu mit ssh einloggen:

sudo rm /.readwrite
sudo sync
sudo mount -ur /


Nun lädt man sich diese Datei mit dieser kann man Kernel- Extensions laden. Diese ist auf die Box zu kopieren und muss dort auch bleiben. Nicht löschen! Ich nehme jetzt an das turbo_kext_enabler.bin im Ordner "/Users/frontrow" liegt.

chmod 755 turbo_kext_enabler.bin
sudo ./turbo_kext_enabler.bin
sudo kextload /System/Library/Extensions/smbfs.kext

Wichtig - dies muss nach jedem neustart der Box gemacht werde, oder man erstellt sich die Datei rc.local, hat man diese schon kann man darauf verzichten.

sudo touch /etc/rc.local
sudo echo -e "./Users/frontrow/turbo_kext_enabler.bin\nkextload /System/Library/Extensions/smbfs.kext" > /etc/rc.local

Nun wird das ganze beim Start ausgeführt. Also kann man jetzt das Filesystem einhängen:

mkdir /User/frontrow/Movies/externesFilesystem
sudo mount_smbfs "//:@/" /User/frontrow/Movies/externesFilesystem

So das ganze für afp, dabei sind ebenfalls folgende Dateien an die gleiche Stelle auf der Box zu kopieren.

/System/Library/Filesystems/AppleShare
/sbin/mount_afp

Zusäztlich wird noch ein Symlink gestezt:

cd /System/Library/Filesystems
ln -s AppleShare afpfs.fs

Jetzt muss wieder das Kernel- Extension geladen werden:

sudo chmod -R 755 /System/Library/Filesystems/AppleShare
sudo chmod +x /sbin/mount_afp
sudo chown -R root:wheel /System/Library/Filesystems/AppleShare
sudo chown root:wheel /sbin/mount_afp

Nun ist sind die oben fettgedruckten Befehle auszuführen, falls das nicht schon vorher gemacht wurde. Es muss auch die Datei turbo_kext_enabler.bin vorhanden sein.
Ebenfalls muss die Kernel- Extension beim start geladen werden.

Daher ist der Datei "/etc/rc.local" folgendes hinzuzufügen:

"/System/Library/Filesystems/AppleShare/afpfs.kext"


So kann man dann noch das Dateisystem mounten:

mkdir /path/to/your/share
sudo mount_afp "afp://:@/" /path/to/your/share

IMG to ISO

Wer ein Image in eine Iso- Datei wandeln will, muss sich nicht viel Stress machen.
Mit wenigen Schritten kann man das ganz ohne zusätzliche Software bewerkstelligen.

1. Man mounted das Image mit einem Doppelklick
2. Öffnet das Festplatten- Dienstprogramm
3. Klickt in der linken Spalte auf das Image
4. Klickt oben auf Konvertieren
5. Als Format wählt man "DVD/CD Master" und ".cdr" als Dateiendung
6. Dannach einfach in ".iso" umbenennen

Fertig ist die Iso- Datei.

ATV und CenterStage



Ich habe testweise Centerstage auf meiner Box laufen lassen. Ist auch nicht schlecht.
Da ich aber noch Probleme mit dem Watchdog habe, ist dies noch keine Alternative für mich. Man überträgt die DMG- Datei auf die Box wieder nach "/Users/frontrow/" und muss dann nur noch das ganze rauskopieren:

hdiutil mount /Users/frontrow/CenterStage.dmg
sudo mount -uw /
mkdir /Users/frontrow/center.app
sudo cp -r /Volumes/CenterStage\ \&\ BackStage\ Combo/CenterStage.app/center.app
sudo mount -ur /

nun kann man das ganze mit "open CenterStage.app" starten und die Sache läuft.