Tuneando el AppleTV II: Instalando Linux…

Comenzamos la segunda parte del tuto. Aunque en principio iba a poner las dos variantes,  AppleTV OS y Linux, al final he decido poner solo la de Linux por varias razones: soporta 1080p y tiene más opciones de personalización.

Antes de empezar aclarar que con este tuto se perderán todos los datos del disco duro interno del appletv, por lo que se recomienda hacer backup o bien, sustituir el disco duro por otro. De todas maneras, existe una manera de recuperar el appletv sin hacer backup, pero eso formará parte de la cuarta parte que escribiré mas adelante. Es posible que algunos pasos varien según el ordenador que se utilice, yo uso mac y por lo tanto los pasos están adecuados a MAC OS. Comenzamos!

Prerequisitos:

  • Un USB Hub
  • Un teclado USB o bluetooth soportado por linux.
  • Un pendrive de 256 mb o más (aunque 64 mb son suficientes)
  • Un servidor DHCP
  • El AppleTV conectado a la red :)
  • Un PC/MAC/Linux conectado a la misma red

** Crear el USB de arranque:

Nos descargamos el atvusb-creator y lo ejecutamos. Una vez que termine el proceso veremos que aparece un volumen vacio llamado PATCHSTICK. Descargamos y descomprimimos ahí la instalación por red de ubuntu. La encontramos aqui. Quedaros simplemente con los archivos initrd.gz y linux que encontrareis en ubuntu-installer/i386 del archivo descomprimido.

** Reparticionado del disco duro:

Atención, llegamos al punto de no retorno. A partir de aquí perderemos todo el contenido del disco duro.

Arrancamos el AppleTV con el usb que hemos creado antes pinchado. Cuando lo encendamos pulsamos simultanetamente las teclas menu y ‘-’ para que arranque desde ahí. Si todo ha salido bien, encontraremos algo similar a esto: pebuntu login:

Nos conectamos al AppleTV a través de telnet. Siempre va a ser más comodo trabajar desde un portatil/sombremesa que directamente en el AppleTV.: telnet <ip del AppleTV>. El usuario y password es root/root.

Generalmente el disco interno del appletv es /dev/sda, aunque a veces esto puede variar. Una manera de comprobarlo es ejecutando:

parted /dev/sda -s print

(en el caso de que vuestro disco sea el de 40 Gb obtendremos algo similar a esto:)

Model: FUJITSU  K00FT7125M1W (scsi)
Disk /dev/sda: 78140160s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start     End        Size       File system  Name      Flags  
 1      40s       69671s     69632s     fat32        EFI       boot  
 2      69672s    888823s    819152s    hfs+         Recovery  atvrecv
 3      888824s   2732015s   1843192s   hfs+         OSBoot          
 4      2732016s  77878015s  75146000s  hfs+         Media

Una vez comprobado nos ponemos manos a la obra, si vuestro disco no es /dev/sda, cambiar todas las menciones /dev/sda a lo que corresponda en vuestro caso:

# Formateamos el disco duro

dd if=/dev/zero of=/dev/sda bs=4096 count=1M

# Creamos la estructura incial gpt

parted -s /dev/sda mklabel gpt

# Creamos la particion EFI de 25MB (empezando en el secto 40, esto es muy importante!)

parted -s /dev/sda mkpart primary fat32 40s 25M parted -s /dev/sda set 1 boot on

# Creamos la particion RECOVERY de 25MB

parted -s /dev/sda mkpart primary HFS 25M 50M parted -s /dev/sda set 2 atvrecv on

# Creamos la particion OSBOOT de 25MB

parted -s /dev/sda mkpart primary HFS 50M 75M

# Creamos la partición Linux

parted -s /dev/sda mkpart primary ext3 75M 38.9GB

# Creamos la partición swap.

parted -s /dev/sda mkpart primary linux-swap 38.9GB 40.0GB

El tamaño de estas dos ultimas pueden variar según el espacio que le querais dar a la swap

# Sincronizamos

partprobe /dev/sda

# Verificamos

parted -s /dev/sda print

# Deberíamos obtener algo similar a esto:

Model: FUJITSU  K00FT7125M1W (scsi)

Disk /dev/sda: 78140160s

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags

1      20.5kB  25.0MB  25.0MB               primary  boot

2      25.0MB  50.0MB  25.0MB               primary  atvrecv

3      50.0MB  75.0MB  25.0MB               primary

4      75.0MB  38.9GB  38.8GB               primary

5      38.9GB  40.0GB  1104MB               primary

# Formateamos.

mkfs.msdos -F 32 -n EFI /dev/sda1

mkfs.hfsplus -v Recovery /dev/sda2

mkfs.hfsplus -v OSBoot /dev/sda3 mkfs.ext3  -b 4096 -L Linux /dev/sda4 sync

Una vez hecho esto, instalamos el atv-bootloader.

# Descargamos atv-recovery.

wget http://atv-bootloader.googlecode.com/files/recovery-0.6.tar.gz tar -xzf recovery-0.6.tar.gz

# Hacemos varios puntos de montaje.

mkdir /mnt/osboot /mnt/recovery

# Montamos las particiones.

fsck.hfsplus /dev/sda2

mount /dev/sda2 /mnt/recovery

fsck.hfsplus /dev/sda3

mount /dev/sda3 /mnt/osboot

# Copiamos el atv-bootloader.

cp -arp recovery/* /mnt/osboot/ cp -arp recovery/* /mnt/recovery/

# Recordar copiar el boot.efi, lo podemos encontrar en el usb.

mkdir tmp mount /dev/sdb1 tmp

cp -ap tmp/boot.efi /mnt/osboot

cp -ap tmp/boot.efi /mnt/recovery

umount /dev/sdb1

Ya estamos preparados para instalar linux: Las rutas pueden varias según donde hayáis descomprimido los ficheros linux initrd.gz

mount /dev/sdb3 tmp

kexec –load tmp/linux –initrd=tmp/initrd.gz –command-line=”nosplash vesa video=vesafb”

kexec -e

Debería apareceros en vuestro televisor la pantalla de instalación de linux por red. Simplemente seguir las instrucciones, seleccionado /dev/sda4 como partición de linux y formateando en EXT3 y /dev/sda4 como linux-swap. Teneis que crear un usuario. NO useis xbmc, ese le crearemos luego.

Cuando os pida que paquetes quereis instalar, simplemente seleccionar openssh y (opcional) smb server. El grub lo instalais en /dev/sda4 (aunque da lo mismo)

Una vez instalado, arrancamos nuevamente desde USB, aún quedan por cambiar un par de cosas:

mkdir tmp

mount /dev/sdb2 tmp

vi tmp/com.apple.Boot.plist

Cambiamos patchstick a auto.

umount tmp

Modificamos el fichero menu.lst.

mount /dev/sda5 tmp

cp tmp/boot/menu.lst tmp/boot/menu.lst.org

vi tmp/boot/grub/menu.lst

Lo borramos entero y lo dejamos asi (comprobar la version de kernel):

default 0

timeout 3

title Linux

root (hd0,4)

kernel /boot/vmlinuz-2.6.24-27-generic root=/dev/sda4 ro vesa video=vesafb

initrd /boot/initrd.img-2.6.24-27-generic boot

Reiniciamos.

reboot.

Si todo ha ido correctamente, ya tendréis Linux instalado y funcionando en el AppleTV. En la siguiente parte del tuto, nos centraremos en la instalación de XBMC, drivers para la tarjeta Broadcom etc.

10 Comentarios

ironcatan escribio: 17 marzo 2010 - 15:42

Como siempre, un 10 ;-)

cesarale escribio: 21 abril 2010 - 02:28

mmm no hay posibilidad de que subas esa ISO a un rapidshare o megaupload para la gente que no usamos nada de Linux ;)

Muy buen tutorial.

lifting escribio: 27 junio 2010 - 12:20

Si mi disco duro es el de 160 gb, ¿que debo cambiar en los comandos?

lifting escribio: 28 junio 2010 - 23:16

necesitaría que alguien me eche un capote, me he metio a torero y me ha pillao el toro.
Tengo el disco duro del atv formateado, sin particiones y no tengo backup ni recovery. He seguido tu tutorial para instalar linux y no he tenido problemas hasta el paso de formateo : “mkfs.hfsplus -v OSBoot /dev/sda3 mkfs.ext3 -b 4096 -L Linux /dev/sda4 sync” me dice “mkfs.hfsplus: invalid option — L
usage: mkfs.hfsplus [-h | -w] [-N] [hfsplus-options] special-device”, y ya no he querido seguir los siguiente pasos del tutorial para no meter más la pata. Ahora tengo un estupendo pisapapeles de 160 gb al lado de la tele. Gracias

JJJJJ escribio: 28 junio 2010 - 23:25

Hay un error, son tres instrucciones:
mkfs.hfsplus -v OSBoot /dev/sda3
mkfs.ext3 -b 4096 -L Linux /dev/sda4
sync

Prueba así y nos cuentas ;)

lifting escribio: 30 junio 2010 - 20:49

Vale, me ha funcionado, pero al siguiente paso -descargar el atv recovery- pongo “wget http://atv-bootloader.googlecode.com/files/recovery-0.6.tar.gz” y me da este error: “wget: bad address ‘atv-bootloader.googlecode.com’”

JJJJJ escribio: 1 julio 2010 - 06:26

Prueba a descargarlo y lo copias directamente: scp archivo usuario@ip: o mediante un pendrive.

lifting escribio: 4 julio 2010 - 09:17

Lo he descargado al imac, he puesto el comando de scp pero me pone “-sh: scp: not found”. ¿Cual sería el comando desde un pendrive?

JJJJJ escribio: 4 julio 2010 - 09:51

primero vete al terminal y asegurate que estás usando la shell bash. De todas maneras, me estoy dando cuenta que tu appletv no tiene salida a internet y lo vas a necesitar, yo arreglaría eso primero.

De todas maneras, para quien quiera hacerlo mas sencillo, teneis una imagen hecha y las instrucciones en este enlace.

http://forum.xbmc.org/showthread.php?t=74992

saludos y suerte.

lifting escribio: 6 julio 2010 - 18:42

jjjjj . Finalmente he conseguido instalar linux y reproducir .mkv con la tarjeta broadcom , pero se queda colgado a menudo y no consigo que reproduzca el sonido de las peliculas por el hdmi, he probado la salida digital toslink y por ahi si que saca el sonido. Es normal?

Escribe tu comentario

You must be logged in to post a comment.