Social Icons

iDroid Guia Definitivo

idroid-mini-browser
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.



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 2giPhone 3giPhone 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%
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.

 

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



 

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.
  1. 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.
  2. Extraia todo conteúdo da imagem do Ubuntu Linux 10.04 em c:\vmware\ (se o diretório não existir, crie).
  3. Então apenas execute o VMware e abra a imagem, clicando em File/Open
  4. Selecione que você está utilizando uma cópia da imagem.
  5. Logue-se com a senha: infohelp.org
  6. 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).
  7. 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.
  8. 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.

  9. Verifique a conexão com a internet abrindo um Terminal e pingando o infohelp.org.
Pronto, você já tem seu ambiente de trabalho já pré-preparado para a manipulação de qualquer versão do iDroid.


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.
  1. Primeiramente certifique-se de que está no ~/
    cd ~
  2. Então instale o gerenciador diretamente via apt:
    sudo apt-get install git-core
  3. 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.
  1. Compile a ARM toolchain (aguarde um bom tempo pela compilação, um bom tempo mesmo. acredite)
    sudo toolchain/build-toolchain.sh make
    
  2. 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)
    
  3. 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.
  4. 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 comando export 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
  5. Compile tudo em client/:
    cd client
    sudo make all && cd ..
Concluído com sucesso, você já terá uma imagem do OpeniBoot preparada para a instalação em seu iPhone.

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:
  1. Desligue totalmente o aparelho e desplugue do computador;
  2. 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.
  3. Segure o botão Home do iPhone e então sem soltar, plugue o cabo USB ao computador;
  4. Aguarde o VMware detectar o iPhone com a seguinte tela:

    E o aparelho deverá mostrar esta tela:
  5. 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.
  6. Vá até o iPhone, pressione o botão Power 1x(uma vez), para selecionar o Console do OpeniBoot, deixe o cursor em cima dele.
  7. 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
    
    
Feito isso corretamente, você terá a tela acima no Linux sincronizada com seu iPhone, qualquer outra tela significa que não funcionou, repita o processo até conseguir o resultado.

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.

Para efetuar o backup, apenas digite o seguinte comando abaixo em seu Terminal:
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:
Install
Ao 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.
Tendo todos esses aplicativos instalados em seu iPhone, você poderá prosseguir.

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 é: alpine

Você 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:~/iphonelinux
Neste 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.img
Agora 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:
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/
Vá até a outra janela de Terminal que está conectada ao iPhone via SSH e digite o seguinte comando:
chmod 755 ramdisk.img system.img userdata.img cache.img android.img.gz zImage
Neste 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.
- Um ambiente Linux Ubuntu 10.04 preparado:
  1. Copie nosso script ih_succa_2010052600.sh para a pasta de compartilhamento.
  2. 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).
  3. 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")
Aguarde então a finalização de todos processos, o tempo de conclusão depende muito de sua velocidade de conexão.
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