Mythic Beasts

mb_boot_tv, a boot loader for the Apple TV.

James McKenzie,

For the impatient, here's a walk-through for installing mb_boot_tv onto an Apple TV.

We are planning to start offering dedicated hosting on Apple TVs shortly; check our services page soon for prices.

New version 1.0.7 - fixes a problem where some appletvs refused to load an OS X kernel with such a large bss, and also adds support for booting from usb without opening the case

mb_boot_tv is a simple and (almost) fully featured boot loader for the Apple TV. It currently supports:

What it lacks is any form of keyboard support, but this should be fixed soon. We use mb_boot_tv at mythic-beasts.com to make Apple TVs remotely manageable.

mb_boot_tv is based on code and work from lots of other places:

How to get mb_boot_tv

Either download a a precompiled binary version or
download the source code. If you want to compile the source code under linux you'll need a darwin cross-compiler. You can download it as three rpms from the original site: Or download the whole lot unpacked from their rpms as a local tar.gz. NB: modern GCCs hard-code the path to the other binaries in the executables, so the old trick of editing the .spec file no-longer works and therefore you have to install it where it was compiled in /opt.

How to install and use mb_boot_tv

For the impatient, here's a walk-through for installing mb_boot_tv onto an Apple TV.

The following instructions require you to mount the Apple TV's disk on another machine. You can either use another Mac OS X machine, or follow the instructions in the walk-through to mount the Mac OS X file systems under linux.

You can now run mb_boot_tv without even opening the case of the Apple TV using a USB stick. The Apple TV will on detecting the stick, run mb_boot_tv and then will net-boot Linux - instructions here.

Copy the mb_boot_tv executable into the root directory of the main Mac OS X partition (sda3), and optionally the recovery partition (sda2). Edit the com.apple.Boot.plist file (located in /System/Library/CoreServices/ in the OSX partition and in the root directory of the recovery partition) and change the lines which read

<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Cache</key>
<string>mach_kernel.prelink</string>
so that they instead read
<key>Kernel</key>
<string>mb_boot_tv</string>
Once you've done that, either

format of the mb_boot_tv.conf file

mb_boot_tv ignores all lines it doesn't recognise; it currently understands the following directives (note that there must not be any white space between the beginning of the line and the directive):

kernel /path/to/vmlinuz   the path to the file containing the kernel. NB: paths are relative to the root of the filesystem
options kernel-options   the options that are appended to the kernel command line are replaced with kernel-options, quotes are not stripped
append kernel-options   a synonym for options
ramdisk /path/to/initrd   the path to the file containing the ramdisk
initrd /path/to/ramdisk   a synonym for ramdisk
try-net-boot   the boot loader will attempt a DHCP/TFTP boot first before attempting a disk boot (only valid in mb_boot_tv.conf files on disk)
force-disk-boot   if present the boot loader will abort the network boot and (re-)attempt a disk boot, ignoring any try-net-boot directives (only valid in mb_boot_tv.conf files fetched from the network)

What mb_boot_tv actually does

Copyright © 2000-2006 Mythic Beasts Ltd. All Rights Reserved.