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


Abril 27, 2009 às 19:53
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.
Abril 29, 2009 às 01:31
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