Patchstick

From AwkwardTV
Revision as of 11:20, 2 April 2007 by Probono (talk | contribs) (XML format)
Jump to: navigation, search

This is the page about Project Patchstick, a 100% legal way to open up the ATV for hacking without having to open the case.

Primary Goals

  • Build our own Darwin kernel that boots on the ATV
  • Build our own sshd (probably dropbear)
  • Install sshd on the ATV, enable it

Secondary goals

  • Add an awkwardtv.frappliance that shows screenshots, descriptions of frappliances and installs them online
  • add more hacks (ericIII's ATVFiles comes to mind)
  • make it work from a (small) USB stick
  • create an image that can be put on a USB-stick even under Windoze (the no-brain-needed part)
  • install wget (or similar) to simplify installation of further features
  • ...

Steps to be taken

  • get a homebrew Darwin kernel to boot up
  • build boot scripts that upload the sshd binary to the ATV, and enable it

Artwork


XML format

The idea is to have an XML format for fetching information on available plugins that is as easy as possible and as flexible as necessary. Please comment.

<item>
<category>Communication</category>
<title>My Great New Frappliance</title>
<shortname>mygreatnewfrappliance</shortname>
</item>

<item>
...

Once the user clicks that, mygreatnewfrappliance XML gets loaded:

<item>
<category>Communication</category>
<title>My Great New Frappliance</title>
<shortname>mygreatnewfrappliance</shortname>
<author>Joe Doe</author>
<enclosure url="http://example.com/downloads/mygreatnewfrappliance.tgz"  md5="5655cc6f7d1ba118665fe14be41ad296" length="5650889" type="application/tgz" />
<guid>mygreatnewfrappliance/guid>
<version>1.0v1</version>
<pubDate>Wed, 8 Jun 2005 19:00:00 GMT</pubDate>
<copyright>© Copyright 2007 Joe Doe</copyright>
<license>GPL</license>
<URL>http://www.mygreatsite.com/myproduct</URL>
<keywords>(set of keywords to be defined)</keywords>
<info>
<English>
  <subtitle>Cooking plugins is fun!</subtitle>
  <summary>This plugin doesn't really exist, but here we have one sentence of description saying what it does and why it is so insanely great.</summary>
  <description>A longer description here, up to one screen page</description>
</English>
<Dutch>
</Dutch>
<French>
</French>
<German>
  <subtitle></subtitle>
  <summary></summary>
  <description></description>
</German>
<Italian>
  <subtitle></subtitle>
  <summary></summary>
  <description></description>
</Italian>
<Japanese>
  <subtitle></subtitle>
  <summary></summary>
  <description></description>
</Japanese>
<Spanish>
  <subtitle></subtitle>
  <summary></summary>
  <description></description>
</Spanish>
</info>
</item>

Code ideas

#!/bin/sh

#
# Initial ideas for AwkwardTV Patchstick Script to be done
# by phoem at phoempc.com
# v20070331.0
#

echo -n "Disabling watchdog..."
mkdir /Volumes/OSBoot/etc/mach_init.disabled
mv /Volumes/OSBoot/etc/mach_init.d/ripstop.plist /Volumes/OSBoot/etc/mach_init.disabled
echo "/sbin/kextunload -b com.apple.driver.AppleTCOWatchdog" >> /Volumes/OSBoot/etc/rc.local 
echo "done"
echo -n "Installing sshd..."
cp /usr/sbin/sshd /Volumes/OSBoot/usr/sbin/
cp /System/Library/LaunchDaemons/ssh.plist /Volumes/OSBoot/System/Library/LaunchDaemons/ssh.plist
echo "done"
echo -n "Installing various programs..."
cp /usr/bin/sort /Volumes/OSBoot/usr/bin/sort
cp /usr/bin/nidump /Volumes/OSBoot/usr/bin/nidump
cp /usr/bin/passwd /Volumes/OSBoot/usr/bin/passwd
cp /usr/bin/du /Volumes/OSBoot/usr/bin/du
cp /usr/bin/kdump /Volumes/OSBoot/usr/bin/kdump
cp /usr/bin/ktrace /Volumes/OSBoot/usr/bin/ktrace
cp /usr/sbin/kextstat /Volumes/OSBoot/usr/sbin/kextstat
cp /usr/bin/gdb /Volumes/OSBoot/usr/bin/gdb/
cp /usr/bin/vim /Volumes/OSBoot/usr/bin/
cp /usr/bin/nc /Volumes/OSBoot/usr/bin/
cp /usr/bin/diff /Volumes/OSBoot/usr/bin/
cp /usr/bin/strings /Volumes/OSBoot/usr/bin/
cp -pRvf /usr/libexec/gdb /Volumes/OSBoot/usr/libexec/
cp -pRvf /Volumes/OSBoot/System/Library/PrivateFrameworks/PlatformHardwareManagement.framework /Volumes/OSBoot/System/Library/PrivateFrameworks/
cp /usr/bin/bspatch /Volumes/OSBoot/usr/bin/
cp /usr/bin/bzip2 /Volumes/OSBoot/usr/bin/
echo "done"