iPhone/iTunes no Ubuntu com VirtualBox

Update: novo endereço em http://rodrigo.cmachado.org/blog/2009/03/iphoneitunes-no-ubuntu-com-virtualbox

Update: Nas versões mais novas do VirtualBox não deve ser necessário realizar o procedimento de recompilar o módulo do kernel. No entanto, você ainda precisará utilizar a versão closed source.

Depois da empolgação inicial com o iPhone, veio a realidade: qualquer sincronização de dados entre o PC e o iPhone só pode ser feita pelo iTunes, incluindo aí minhas músicas. Isso não chega a ser um problema para usuários de Mac e Windows. Mas para quem (só) utiliza o Linux, isso se torna uma dor de cabeça.

Existem algumas alternativas a esse problema. A que eu escolhi foi utilizar uma imagem de Windows XP rodando no VirtualBox com o iTunes instalado. Simples e eficiente, desde que você faça alguns ajustes.

O motivo de utilizar o iTunes rodando no VirtualBox e não no Wine foi para garantir o mínimo de problemas durante o uso. Como tanto o iPhone quanto o iTunes são “caixas-pretas”, melhor não arriscar – ainda mais quando se trata de um dispositivo de R$ 1.600,00.

Primeiramente você deve ter instalado a versão “closed source” do VirtualBox, já que a versão Open Source não tem suporte a USB. Para isso, remova a instalação (e quaisquer arquivos de configuração) da versão Open Source. No Ubuntu, você pode remover o pacote virtualbox-ose:

$ sudo apt-get purge virtualbox-ose

Com o VirtualBox Open Source desinstalado, instale a versão “closed source”, disponível no site do projeto. Ao iniciar o programa pela primeira vez, ele irá converter suas máquinas virtuais para a nova versão. Nas configurações da máquina virtual ative o suporte a USB. Pronto, terminamos com o VirtualBox.

No entanto, ainda não conseguiremos utilizar o iPhone com o iTunes. Para isso, é necessário recompilar o módulo usbcore do kernel do Linux, aumentando o valor de um buffer. Caso você utilize o Ubuntu, pode fazer isso facilmente. Primeiro, descubra a versão do kernel que você está utilizando. Para isso, abra um terminal e digite o seguinte comando:

$ uname -r

Você vai obter uma resposta parecida com essa:

2.6.27-14-generic

A versão do kernel são os números até o primeiro hífen (nesse caso, 2.6.27). Anote-os em algum lugar.

Primeiro, baixe o source do kernel que você está utilizando (é importante baixar pelo gerenciador de pacotes para manter todas as customizações que a sua distribuição fez):

sudo apt-get build-dep linux-source-2.6.27
sudo apt-get install linux-source-2.6.27 build-essential
sudo tar -jxvf /usr/src/linux-source-2.6.27.tar.bz2

Agora, modifique o valor da constante MAX_USBFS_BUFFER_SIZE de 16384 (16k) para 131072 (128k):

cd /usr/src/linux-source-2.6.27/drivers/usb/core
sudo perl -pi.bak -e 's/16384/131072/' devio.c

Ainda no diretório ‘core’, recompile e instale o novo módulo:

sudo make -C /lib/modules/`uname -r`/build/ M=`pwd` modules
sudo strip --strip-debug usbcore.ko
sudo install -m644 -b usbcore.ko /lib/modules/`uname -r`/kernel/drivers/usb/core
sudo depmod -ae
sudo update-initramfs -u

Pronto! Reinicie o PC e você já poderá utilizar o iPhone com o iTunes sem problemas.

Referências:
iphone not connecting through to itunes on windows guest

2 Respostas para “iPhone/iTunes no Ubuntu com VirtualBox”

  1. Fernando diz:

    Amigo vê se vc pode me ajudar…já estou no final do seu tutorial só que estouy usando o kernel 2.6.28 e quando dou o comando abaixo:

    fernando@vaio:~/linux-source-2.6.28/drivers/usb/core$ sudo strip –strip-debug usbcore.ko
    strip: ‘usbcore.ko’: No such file

    aparece esse erro sabe dizer porque? segui sequencia várias vezes e continua o erro.

  2. Rodrigo Machado diz:

    Olá Fernando,

    Realmente, existia um erro no post. Onde se lia:

    cd linux-source-2.6.27/drivers/usb/core

    Deveria ser:

    cd /usr/src/linux-source-2.6.27/drivers/usb/core

    Ou seja, o erro acontecia porque você estava no diretório errado.

    Espero ter ajudado,
    Rodrigo Machado


Fechado para comentários.