.

ClimbU.com

TESTDFS

iDroid – Google Android dual-boot em seu iPhone (guia definitivo)

25, junho, 2010  ( atualizado em: 15, março, 2014 )
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.

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

(Caso não possua nenhum Torrent Client instalado em seu computador, primeiro baixe/instale o uTorrent)

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
      

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)
  1. 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.
  2. 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
  3. 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 (confirme nosso guia).
– 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 conforme nosso guia acima.

  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.

Relacionados

Firmware DD-WRT no roteador Linksys WRT54G v8
Cryptainer PE 7 - Protegendo arquivos com senha
F-Secure – Um Antivírus para todos
Popcorn Time - Assista filmes em streaming HD via Torrent

Comentários:



TEST2DFS

Políticas e objetivos | Contato
Direitos reservados © INFOhelp.org
Qualquer informação ilegal aqui contida, é de domínio público, não incentivamos a pirataria.