Hur man hackar AppleTV Take 2
Efter lite pill har jag äntligen lyckats uppdatera min AppleTV till Take 2, d.v.s. nya programvaran med hyrfilmer, AirTunes, Flickr-integration och annat kul, samt återställa alla hack så jag har alla ”extrafunktioner” jag hade med version 1.1. Hittills har jag fått igång sshd, afp-servern och lagt in pluginen ATVFiles så att jag kommer åt .avi-filmer och annat innehåll som inte stöds av iTunes.
Själva hackningsproceduren är lite krångligare än den var tidigare. Sitter man redan med en hackad ATV finns möjligheten att att göra en manuell ”safe update” där alla hack, plugins etc. bibehålls, men jag tycker det inte verkar fullt lika lyckat som det låter eftersom man bland annat förlorar 1080i-upplösningen och eventuellt får en massa annat krångel. Jag gjorde därför en full ”factory restore” så att precis allt på ATV:n rensades, och uppdaterade till Take 2 för att få en ”ren” installation. Hela proceduren finns beskriven här: Take 2 Full Update.
Själva patchsticken, d.v.s. usb-minnet man ska använda för att lägga in sshd på ATV:n, var inte riktigt lika enkel att fixa som när jag hackade 1.0. Framför allt kör jag Leopard nu, och eftersom ATV:n kör någonting som mest liknar 10.4.9 (även i Take 2) funkar det inte längre bara att flytta över kodbibliotek och binärer från iMacen. Jag följde därför den här guiden och hämtade systemfilerna från återställnings-DVD:n som följde med iMacen, lade dem i rätt folder och körde sedan createPatchstick-skriptet för att slänga in allting på usb-minnet och göra det bootbart. Det man får vara beredd på är att det fortfarande är mycket mer manuell hantering än det var med den ”magiska” patchsticken för version 1.0, men det är definitivt något en vanlig dödlig med grundläggande terminalvana kan fixa.
Problemet
Naturligtvis råkade jag på allt möjligt strul innan jag fick patchsticken att fungera. När jag hade petat in min patchstick i AppleTV:ns usb-port och bootat om skrället så startade den mycket riktigt från patchsticken, med en massa konsolltext som rullade över tv:n. Men då blev det bara en massa felmeddelanden, först om att /etc/master.passwd inte finns och sedan ett kul fel på sista raden i installer.d/ssh där den klagade på att /usr/bin/sed inte finns. Den där raden är inte helt oviktig, så resultatet blev att sshd installerades men inte länkade till rätt kodbibliotek.
Lösningen
Eftersom det verkar fungera för en massa andra kanske det är antingen min patchstick eller mitt AppleTV-system som är konstiga, men för mig gick det att ordna det hela genom att redigera createPatchstick-skriptet samt flytta över sed till patchsticken. Först fixade jag problemet med master.passwd (vilket inte verkar vara någon deal breaker, men det är ju alltid trevligt att få bort ett av felmeddelandena när man ska felsöka något). Det gjorde jag genom att lägga in det här strax efter rad 73 i createPatchstick, i funktionen copyKernal() (sic!):
grep '^root:' /etc/master.passwd > /Volumes/Patchstick-root/etc/master.passwd
Problem 1 fixat. Sedan flyttade jag över sed till mappen sbin (i min Patchstick-katalog, den ska alltså till ~/Patchstick/Files/sbin eller var man nu valt att lägga den katalogen). Den binären hittar man i BaseSystem.pkg, under /usr/bin (använd Pacifist, precis på samma sätt som i AwkwardTV-guiden alltså). Eftersom binären då hamnar på en annan sökväg redigerade jag sista raden i installer.d/ssh:
/sbin/sed -i"" -e 's;^exec;DYLD_FRAMEWORK_PATH="/System/Library/Frameworks/OSXFrames" exec;' /OSBoot/usr/libexec/sshd-keygen-wrapper
Alternativt så hade man ju kunnat lägga in sed på ”rätt” sökväg i stället, det är väl egentligen bara en smaksak hur man löser det hela. När sshd väl är inlagt är det bara att följa guiden på AwkwardTV för att fixa resten av hackandet via ssh.

Resultatet
Patchsticken fungerade bara fint, förutom att den spyr en hel massa ganska ovidkommande felmeddelanden. I mitt fall blir det dessutom alltid en panic när patchstick-systemet försöker köra /sbin/reboot, men det är egentligen bara kosmetiskt. Något jag märkte är bara att createPatchstick-skriptet ibland får märkliga problem med partitionerna; det är nästan som att ”Patchstick-root”-partitionen inte finns när den kört färdigt och ska avmontera usb-minnet. För mig har det funkat att bara rycka ut minnet, sätta in det igen och köra skriptet från början igen.
Nya versionen av ATVFiles fungerar för övrigt hur bra som helst under 2.0; det är väldigt trevligt att ha all extrafunktionalitet från både Take 2 och ATVFiles samtidigt. Filservern fungerar bra också, men jag har inte lagt in USB-hacket än (det där som gör att man kan använda externa hårddiskar som kopplats in i ATV:ns usb-port). Det har dessutom dykt upp en ganska trevlig plugin som förser ATV:n med en fullfjädrad Safari-baserad webbläsare, får se om jag lägger in den också när jag ändå håller på…




