Android é um sistema operacional mobile desenvolvido pelo Google™, baseado em Linux e totalmente aberto a desenvolvedores, concorrente direto ao iOS. Recentemente os desenvolvedores da Planetbeing iniciaram o desenvolvimento do iDroid, um projeto fantástico que permite portar o Android para o iPhone. Neste artigo vamos mostrar uma maneira bem didática de como instalar o iDroid no iPhone em dual-boot, permitindo você escolher qual sistema operacional deseja iniciar ao ligar o aparelho.
Alguns Videos Demontrando Uso:
Status do projeto
Como você pode notar, até o momento, o iDroid já está 70% funcional em iPhone’s 2g e 3g, ainda sendo portado para 3gs. Por este motivo nosso tutorial será focado para usuários do 2g/3g.
O projeto iDroid pode ser manipulado em vários sistemas operacionais, mas escolhemos o Linux, por ser o mais versátil de todos, permitindo customizar e ter total controle do projeto. Não se preocupe se você não tem experiência com Linux, pois disponibilizamos uma imagem do Ubuntu 10.04 já preparada com todas dependências necessárias, vmware-tools instalado para facilitar a interação Windows X Linux, conexão de internet em bridge c/ ip válido para o roteador e um diretório comun tanto no Windows quanto na máquina virtual Linux para facilitar o compartilhamento de arquivos.
A instalação do OpeniBoot é a mais complicada de todo o processo, pois será necesário compilar e interpretar alguns erros, de qualquer forma já deixamos a imagem com a maioria das dependências pré-configuradas.
Alguns pediram para deixarmos pré-compilado o OpeniBoot já pronto para instalação, mas optamos por ensinar o usuário a compilar, desta forma não limitamos na versão do aparelho, e será o mesmo processo para futuras atualizações do iDroid.
Atenção: Simple recovery mode não é DFU mode, faça o seguinte:
Fazer um backup é altamente recomendado, pois caso aconteça algum erro no meio do processo de instalação, ou acabe a bateria do aparelho, se você não possuir um backup da NOR, não conseguirá mais iniciar o iPhone nem em DFU restore mode, tornando muito complicado sua restauração.
Para efetuar o backup, apenas digite o seguinte comando abaixo em seu Terminal:
Então desligue o aparelho e ligue novamente, e você terá a tela do OpeniBoot sempre que o iPhone for desligado e ligado.
Para bootar o iOS, que é o sistema operacional padrão, apenas selecione usando Power e pressione Home para iniciar.
Em seu iPhone, vá até o Cydia, settings e verifique se o Hacker mode está ativado.
Então, ainda no Cydia, busque e instale os seguintes apps:
Agora vamos copiar o iPhone.mtprops para /var:
Vá até sua pasta de compartilhamento no Linux e mova este arquivo para dentro do diretório ~/iphonelinux
Então em sua outra janela de Terminal(não é a conectada ao iPhone) digite os comandos:
Então faça o mesmo que fez acima, copie o idroid-release-0.2-3g_rooted_with_sd_emulation_backlight_and_dns_fixed.zip que você fez download no início do tutorial para a a pasta de compartilhamento e acesse no Linux. Então mova-o para ~/iphonelinux, feito isso digite os comandos:
Para iniciar o novo sistema basta desligar o aparelho, ligar e selecionar através do botão Power, o ícone do Android e então pressionar Home.
Para o perfeito funcionamento de nosso script, você terá que possuir um iPhone com os seguintes requisitos:
- Apple iPhone 2g/3g jailbreaked com redsn0w, pwnagetool ou quickpwn
- Cydia em Hacker mode com os seguintes aplicativos instalados:
Veja abaixo todo o output do processo de instalação.
Introdução
O iDroid é um projeto recente e algumas funcionalidades ainda não foram portadas para o iPhone, mas já é possível desfrutar do sistema em seu aparelho com as funcionalidades básicas, veja abaixo como anda o status de desenvolvimento do projeto, comparando cada versão do iPhone.
Alguns Videos Demontrando Uso:
Status do projeto
iPhone 2g | iPhone 3g | iPhone 3Gs |
---|---|---|
OpeniBoot - 100% | OpeniBoot - 100% | OpeniBoot - 10% |
CPU - 100% | CPU - 100% | CPU - 100% |
WLAN - 100% | WLAN - 100% | WLAN - 0% |
Bluetooth - 0% | Audio - 100% | Baseband - 0% |
Audio - 100% (c/ bugs) | NAND (8GB) - 100% | Bluetooth - 0% |
NAND - (4GB) 100% | NAND (16GB) - 100% | NAND (16GB) - 0% |
NAND - (8GB) 100% | NOR - 0% | Audio - 0% |
NAND - (16GB) 100% | Multi-Touch - 100% | GPS - 0% |
Baseband - 80% (c/ bugs) | Baseband - 50% | GPU - 0% |
ALS - 50% | Tri-Band HSDPA LNA - 0% | Acelelerometro - 0% |
Accelerometer - 100% | GPS - 30% | |
PMU - 0% | ALS - 80% (necessita driver) | |
GPU - 60% (sem aceleração) | Accelerometer - 100% | |
Bluetooth - 80% (necessita driver) | ||
PMU - 0% | ||
GPU - 0% | ||
UMTS Transceiver - 0% | ||
WEDGE baseband - 0% | ||
Tritium PA-duplexers - 0% |
Requisitos
- Apple iPhone 3g ou 2g (ainda não suporta o 3Gs)
- O aparelho deverá estar ativado com Jailbreak (redsn0w, pwnagetool ou quickpwn), caso não esteja, siga nosso guia de jailbreak aqui.
Downloads necessários
- VMware Workstation lite 7.1.0 (33mb) – Gerenciador de máquinas virtuais que usaremos para carregar nossa imagem do Linux.
- Ubuntu 10.04 Desktop VMware image + vmwaretools (1.1 gb comprimido com o 7Zip) – Imagem do Ububtu 10.04 para o vmware, c/ vmwaretools integrado no Linux para permitir copy’n paste e outras facilidades.
- iDroid 0.2-3g (Android 1.6, Kernel 2.6.32.9) Rooted with SD emulation+backlight and DNS fixed (41mb) – Sistema do iDroid já patcheado com emulação de SD card, backlight e correções no DNS client.
- Marwell SD866 WLAN drivers (88kb) - Drivers wireless.
Preparando nosso ambiente virtual Linux
O projeto iDroid pode ser manipulado em vários sistemas operacionais, mas escolhemos o Linux, por ser o mais versátil de todos, permitindo customizar e ter total controle do projeto. Não se preocupe se você não tem experiência com Linux, pois disponibilizamos uma imagem do Ubuntu 10.04 já preparada com todas dependências necessárias, vmware-tools instalado para facilitar a interação Windows X Linux, conexão de internet em bridge c/ ip válido para o roteador e um diretório comun tanto no Windows quanto na máquina virtual Linux para facilitar o compartilhamento de arquivos.
- Extraia e execute o VMware Wokstation 7.1.0, instale normalmente e ao final registre com o serial gerado pelo Keygen que está incluso no pacote que você fez download.
- Extraia todo conteúdo da imagem do Ubuntu Linux 10.04 em c:\vmware\ (se o diretório não existir, crie).
- Então apenas execute o VMware e abra a imagem, clicando em File/Open
- Selecione que você está utilizando uma cópia da imagem.
- Logue-se com a senha: infohelp.org
- Então, vá até o menu VM/Settings, em Options, vá até Settings/Shared folders e adicione um diretório qualquer de seu computador, será sua pasta de compartilhamento com o Linux, tudo que você jogar nesta pasta no Windows poderá ser acessado através do Linux (Atenção: este passo é importante).
- Então no Linux vá em Places/Computer/File System/mnt/hgfs e sua pasta estará lá, crie um atalho da mesma em seu Destkop.
- Agora configure a conexão com a internet. Para isto, vá até o menu VM/Settings e em Hardware/Network Adapter, selecione Bridged (marque o Replicate), desta forma o ip de sua placa de rede no Linux será na mesma range do DHCP de sua rede, ou seja, se você possuir um router ele atribuirá o IP de sua placa de rede virtual em sua máquina Linux.
- Verifique a conexão com a internet abrindo um Terminal e pingando o infohelp.org.
O gerenciador de dual-boot
Para instalar o iDroid em seu iPhone, você deverá primeiro criar um dual-boot de seu aparelho, o que lhe permitirá escolher qual sistema será carregado ao ligar o aparelho. Para isso instalaremos o OpeniBoot.A instalação do OpeniBoot é a mais complicada de todo o processo, pois será necesário compilar e interpretar alguns erros, de qualquer forma já deixamos a imagem com a maioria das dependências pré-configuradas.
Alguns pediram para deixarmos pré-compilado o OpeniBoot já pronto para instalação, mas optamos por ensinar o usuário a compilar, desta forma não limitamos na versão do aparelho, e será o mesmo processo para futuras atualizações do iDroid.
Métodos de instalação (didático)
Neste artigo vou apresentar dois métodos de instalação, o didático e o automático. recomendo executar e procurar entender primeiramente o método manual didático, pois dominando este método você será capaz de acompanhar todo o desenvolvimento do projeto e solucionar qualquer problema futuramente.- Método didático – Todos os processos estão descritos e são executados manualmente, e todos erros comuns e suas soluções são citadas no tutorial.
- Método automatizado – Todo o procedimento de instalação será executado automaticamente através de um script, basta ter um iPhone já preparado com o OpeniBoot e um ambiente Linux já customizado com os passos acima.
Download da Git do OpeniBoot
Git é o pacote que contém o source do OpeniBoot. Apenas copie e cole os comandos em seu terminal no Linux.- Primeiramente certifique-se de que está no ~/
cd ~
- Então instale o gerenciador diretamente via apt:
sudo apt-get install git-core
- Faça download da Git do OpeniBoot c/ o seguinte comando:
sudo git clone git://github.com/planetbeing/iphonelinux.git cd iphonelinux/
Compilando o OpeniBoot pela primeira vez
Depois de uma vez compilado, você poderá instalar em qualquer aparelho com apenas um comando, porém na primeira vez terá um pouco de trabalho.- Compile a ARM toolchain (aguarde um bom tempo pela compilação, um bom tempo mesmo. acredite)
sudo toolchain/build-toolchain.sh make
- Compilando o OpeniBoot.
Após a mensagem Toolchain install successful confirmando a instalação do toolchain você já poderá partir para a compilação do OpeniBoot. - Primeiramente de um apt-get nas dependências:
sudo apt-get install libusb-dev libreadline-dev libpng12-dev libusb-1.0-0-dev
Nota: Caso esteja compilando em um sistema 64bits, você precisará dar um apt-get na libc6-dev-i386 e usaro comandoexport ARCH=x86_64
antes de prosseguir para os próximos passos.
cd openiboot/
- Para iPhone 3g use o comando
:
sudo PLATFORM=3G make openiboot.img3
- iPhone 2g use
:
sudo PLATFORM=IPHONE make openiboot.img3
Solução para o erro: expected specifier-qualifier-list before ‘AES_KEY’
sudo apt-get install libssl-dev
- Para iPhone 3g use o comando
- Compile tudo em client/:
cd client sudo make all && cd ..
Solução para o erro: Failed to build newlib (stage: newlib_build)
sudo apt-get install texinfo (Apenas instale o texinfo com o comando acima e reinicie a compilação do toolchain)
Solução para o erro: Failed to create symlink (stage: makesymlink)
sudo rm /usr/local/bin/arm-elf-cc (exclua o link simbólico e reinicie a compilação do toolchain)
Carregando o console do OpeniBoot em seu iPhone
Chegou o momento de carregar e instalar o OpeniBoot. Primeiramente coloque seu aparelho em Simple Recovery mode.Atenção: Simple recovery mode não é DFU mode, faça o seguinte:
- Desligue totalmente o aparelho e desplugue do computador;
- Antes de tudo, vá ao gerenciador de tarefas do Windows e finalize o iTunesHelper.exe para impedir que o iTunes carregue automaticamente ao plugar o iPhone no PC.
- Segure o botão Home do iPhone e então sem soltar, plugue o cabo USB ao computador;
- Aguarde o VMware detectar o iPhone com a seguinte tela:
E o aparelho deverá mostrar esta tela:
- Então execute o comando:
sudo client/loadibec openiboot.img3
Solucionando o erro: open_device: unable to connect to device, your device must be in recovery mode.
Isso significa que seu aparelho não está em Simple recovery mode, ou algum aplicativo está conectado mantendo o dispositivo ocupado, como o iTunes por exemplo, verifique se o aparelho está em simple recovery mode e se o iTunes está fechado e então continue os passos abaixo. - Vá até o iPhone, pressione o botão Power 1x(uma vez), para selecionar o Console do OpeniBoot, deixe o cursor em cima dele.
- Agora no iPhone você deverá pressionar Home para executar o Console, e quando na tela do iPhone mostrar USB state change: 1 -> 1, você deverá deverá no Linux executar o comando abaixo, fique atento, pois o intervalo de tempo é bem curto.
sudo client/oibc
Fazendo backup da NOR de seu iPhone
NOR é o flash chip responsável pela inicialização de seu aparelho, é ela que controla tudo que inicializa antes do sistema, inclusive os modos de restauração.Fazer um backup é altamente recomendado, pois caso aconteça algum erro no meio do processo de instalação, ou acabe a bateria do aparelho, se você não possuir um backup da NOR, não conseguirá mais iniciar o iPhone nem em DFU restore mode, tornando muito complicado sua restauração.
nor_read 0x09000000 0x0 1048576
Instalando o OpeniBoot definitivamente em sua NOR
Então digite o comando abaixo para concluir a instalação, o processo é rápido, mas antes de executar, ceritifique-se de que seu aparelho está com a bateria carregada totalmente:InstallAo concluir, deverá exibir a tela abaixo:
Então desligue o aparelho e ligue novamente, e você terá a tela do OpeniBoot sempre que o iPhone for desligado e ligado.
Para bootar o iOS, que é o sistema operacional padrão, apenas selecione usando Power e pressione Home para iniciar.
Extraindo e configurando os drivers de seu iPhone
Antes de prosseguir, necessitaremos os drivers de Wireless e Multitouch do iPhone. Os drivers de wireless já estão compilados e disponíveis para download no início do tutorial, porém os drivers do display Multitouch deverão ser extraídos de seu próprio aparelho, siga os passos abaixo:Em seu iPhone, vá até o Cydia, settings e verifique se o Hacker mode está ativado.
Então, ainda no Cydia, busque e instale os seguintes apps:
- Open SSH – Openssh para iPhone;
- IOKit Tools – Conjunto de ferramentas Unix command-line para o iPhone;
- VI improved – Editor VIm;
- Core utils – Utilitários Unix para manipulação de shell e arquivos;
- Apt 0.7 strict – Apt debian tools para iPhone.
- Mobile terminal – terminal no iPhone que usaremos para dar input nos comandos.
Drivers do Multitouch – Extraindo zephyr2_cal.bin, zephyr2_proxcal.bin e zephyr2.bin
Abra um novo Terminal em sua máquina Linux, e conecte via SSH no IP de seu iPhone usando o comando SSH 192.168.0.104, considerando que seu iPhone está na mesma rede que o computador e que o IP do iPhone seja 192.168.0.104, ao conectar digite Yes, para aceitar a nova chave SSL, caso ele pergunte, e logo após digite sua senha do root do OpenSSH, que por padrão é: alpineVocê poderá também executar os comandos abaixo diretamente de seu iPhone através do aplicativo Mobile Terminal. Lembrando que neste caso não terá como copiar e colar os comandos, terá que digitar usando o tecladinho do aparelho.
ssh root@192.168.0.104 su root mkdir /private/var/firmware cd /private/var/firmware ioreg -l -w 0 | grep '"Calibration Data" =' | cut -d '<' -f2 | cut -d '>' -f1 | xxd -r -ps - zephyr2_cal.bin (atenção, não quebre a linha, o - zephyr2... faz parte da linha de cima) ioreg -l -w 0 | grep '"Calibration Data" =' | cut -d '<' -f2 | cut -d '>' -f1 | xxd -r -ps - zephyr2_proxcal.bin (atenção, não quebre a linha, o - zephyr2... faz parte da linha de cima)Isso irá gerar os arquivos zephyr2_cal.bin e zephyr2_proxcal.bin na pasta /firmware.
Agora vamos copiar o iPhone.mtprops para /var:
cd /private/var/stash/share.* cd firmware/multitouch/ cp iPhone.mtprops /private/var cp iPhone.mtprops /private/var/firmware
.. e finalmente gerar o zephyr2.bin:
cd /private/var/firmware cat iPhone.mtprops | grep -B2 0x0049 | grep data | sed 's/^\t\t<data>//' | sed 's/<\/data>$//' | base64 -d > zephyr2.bin (atenção, não faça a quebra de linha)Faça uma cópia também de todo conteúdo da pasta /private/var/firmware de seu iphone para sua pasta ~/iphonelinux
scp /private/var/firmware/* root@192.168.0.104:~/iphonelinuxNeste momento você tem os drivers do multitouch devidamente instalados no diretório /firmware de seu iPhone.
Drivers da WLAN – Preparação
Pegue o arquivo SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL.zip e copie na pasta de compartilhamento entre Windows e Linux que você criou na preparação do Ambiente.Vá até sua pasta de compartilhamento no Linux e mova este arquivo para dentro do diretório ~/iphonelinux
Então em sua outra janela de Terminal(não é a conectada ao iPhone) digite os comandos:
cd ~/iphonelinux
unzip SD-8686*.zip
Instalando a estrutura do Android
Antes de enviar o sistema operacional para o iPhone, devemos preparar a imagem, vamos montá-la em um diretório virtual e inserir os drivers que criamos dentro dela e montar novamente.Então faça o mesmo que fez acima, copie o idroid-release-0.2-3g_rooted_with_sd_emulation_backlight_and_dns_fixed.zip que você fez download no início do tutorial para a a pasta de compartilhamento e acesse no Linux. Então mova-o para ~/iphonelinux, feito isso digite os comandos:
cd ~/iphonelinux unzip idroid-relea*.zip rm idroid-relea*.zip gunzip android.img.zip mv *.bin /var/firmware/
Montando o Android na máquina Linux
Montaremos o android.img.gz em um diretório e copiaremos os arquivos zephyr_aspeed.bin zephyr_main.bin sd8686_helper.bin sd8686.bin para o diretório /lib/firmware da imagem montada.gunzip android.img.gz sudo mkdir-p /mnt/android sudo mount-o loop android.img /mnt/android sudo cp zephyr_aspeed.bin zephyr_main.bin sd8686_helper.bin sd8686.bin /mnt/android/lib/firmware/ (não existe quebra de linha aqui)… e então desmonte e gzipe novamente a imagem:
sudo umount /mnt/android gzip android.imgAgora faremos o mesmo com o system.img, nele copiaremos os arquivos zephyr_aspeed.bin zephyr_main.bin sd8686_helper.bin sd8686.bin para o diretório /mnt/android/etc/firmware/ da imagem montada.
sudo mkdir-p /mnt/android sudo mount system.img-o loop /mnt/android sudo cp zephyr_aspeed.bin zephyr_main.bin sd8686_helper.bin sd8686.bin /mnt/android/etc/firmware/ (aqui também não existe quebra de linha) sudo umount /mnt/android
Enviando o Android para o iPhone via SCP
Agora enviaremos todo o sistema do Android para o diretório /private/var do iPhone:Vá até a outra janela de Terminal que está conectada ao iPhone via SSH e digite o seguinte comando:cd ~/iphonelinux scp android.img.gz root@192.168.0.105:/private/var/ scp cache.img root@192.168.0.105:/private/var/ scp ramdisk.img root@192.168.0.105:/private/var/ scp system.img root@192.168.0.105:/private/var/ scp userdata.img root@192.168.0.105:/private/var/ scp zImage root@192.168.0.105:/private/var/
chmod 755 ramdisk.img system.img userdata.img cache.img android.img.gz zImageNeste momento você acaba de concluir a instalação do iDroid em seu iPhone.
Verificando a estrutura de arquivos
O Android no iPhone é basicamente o diretório /private/var/firmware contendo os drivers, e as imagens na root da /private/var. Qualquer arquivo a mais em alguma dessas pastas significa novos drivers, emulação de algum hardware como cartão de memória SD, etc. O que não pode é ter arquivos a menos, confira nas imagens abaixo também o tamanho em bytes dos arquivos.Para iniciar o novo sistema basta desligar o aparelho, ligar e selecionar através do botão Power, o ícone do Android e então pressionar Home.
Método de instalação (automático)
O método automático nada mais é que um shell script que executa todo o procedimento de instalação sem a intervenção do usuário, SUCCA significa Speed Up Custom Creation (of) Android, nós pegamos a última versão deste script, editamos, traduzimos e corrigimos algumas falhas.Para o perfeito funcionamento de nosso script, você terá que possuir um iPhone com os seguintes requisitos:
- Apple iPhone 2g/3g jailbreaked com redsn0w, pwnagetool ou quickpwn
- Cydia em Hacker mode com os seguintes aplicativos instalados:
- Open SSH – Openssh para iPhone;
- IOKit Tools – Conjunto de ferramentas Unix command-line para o iPhone;
- VI improved – Editor VIm;
- Core utils – Utilitários Unix para manipulação de shell e arquivos;
- Apt 0.7 strict – Apt debian tools para iPhone.
- Mobile terminal – terminal no iPhone que usaremos para dar input nos comandos.
- Copie nosso script ih_succa_2010052600.sh para a pasta de compartilhamento.
- Dentro do Linux, vá até a pasta de compartilhamento e mova o arquivo ih_succa_2010052600.sh para ~/iphonedroid (caso a pasta não exista, crie).
- Abra um Terminal e digite os seguintes comandos para iniciar o script:
cd ~/iphonelinux ih_succa_2010052600.sh (caso tenha erros de permissões tome acesso de root com su root e a senha "infohelp.org")
Veja abaixo todo o output do processo de instalação.
Succa Installer version 2010052600 (modified by infohelp.org ) Verificando pacotes para instalar localmente... [ OK ] Testando se seu iPhone está conectado... [ OK ] Testando se o diretório ./succa_installer_files existe... [ OK ] Testando se o diretório mnt/android existe... [ OK ] Criando o diretório /private/var/firmware no iPhone... [ OK ] Verificando pacotes para instalar remotamente... [ OK ] Criando zephyr2_cal.bin no iPhone... [ OK ] Criando zephyr2_proxcal.bin no iPhone... [ OK ] Localizando por iPhone.mtprops... [ OK ] Verificando integridade do iPhone.mtprops... [ OK ] Gerando o zephyr2.bin no iPhone... [ OK ] Efetuando download do driver de WLAN sd8686.bin em kernel.org... [ OK ] Efetuando download do driver de WLAN sd8686_helper.bin driver from kernel.org... [ OK ] Transferindo os drivers de WLAN para o iPhone...[ OK ] Efetuando download do pacote unofficial do Android (isto pode demorar um pouco)... [ OK ] Extraindo o pacote do Android... [ OK ] Efetuando download da zImage já patcheada... [ OK ] Descompactando a zImage patcheada... [ OK ] Copiando zImage para o iPhone... [ OK ] Criando a imagem de emulação do sdcard... [ OK ] Criando sistema de arquivos na imagem do sdcard... [ OK ] Efetuando download da libreference-ril.so... [ OK ] Descompactando a libreference-ril.so... [ OK ] Montando a imagem de sistema... [ OK ] Copiando libreference-ril.so para a imagem de sistema... [ OK ] Desmontando a imagem de sistema... [ OK ] Removendo os arquivos remotos instalandos anteriormente... [ OK ] Transferindo arquivos para o iPhone... [ OK ] Setando as permissões dos arquivos no iPhone... [ OK ] Editando o arquivo do Openiboot... [ OK ] Extraindo openiboot... [ OK ] Concluído!Neste momento você acaba de concluir a instalação do iDroid em seu iPhone. Para iniciar o novo sistema basta desligar o aparelho, ligar e selecionar através do botão Power, o ícone do Android e então pressionar Home para iniciar o novo sistema.
Nenhum comentário:
Postar um comentário