Como já foi apontado, você deve instalar um chroot compatível com ARM no dispositivo e instalar todos os pacotes necessários nesse chroot. No entanto, fazer isso em seu diretório pessoal gasta muito espaço valioso. Em vez disso, isso pode ser feito no seu cartão SD usando um computador executando um sistema operacional Linux apropriado (testado no Linux Mint 17 e Ubuntu Trusty). Como não encontrei nenhuma informação sobre isso em nenhum outro lugar, coloquei aqui como resposta a uma pergunta antiga.
As instruções a seguir assumem que você deseja instalar um debian jessie chroot no diretório jessie.
Criando e preenchendo o arquivo de imagem em um computador desktop
Criando um arquivo de imagem vazio
Para criar uma imagem de 1 GB chamada IMAGE.img no diretório de trabalho atual, faça:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Observe que o B em GB é deixado de fora. "if" significa "arquivo de entrada", "of" para "arquivo de saída" e "bs" para "tamanho do bloco".
Existem comandos mais eficientes por aí, mas esses funcionam apenas em certos tipos de sistemas de arquivos, tanto quanto eu sei. Este também funciona em um cartão SD ou em um tempfs. Observe o uso de / dev / zero e não / dev / random ou / dev / urandom, pois isso levaria muito mais tempo e levaria muito mais tempo para transferir a imagem entre os dispositivos posteriormente.
Criando um sistema de arquivos na imagem
Sem o sistema de arquivos, o telefone não seria capaz de armazenar dados na imagem. Sem um sistema de arquivos, você ainda não pode montar a imagem em um diretório, apenas em um dispositivo de bloco.
Este comando bash produzirá o próximo dispositivo de loop vazio na variável LOOP
:
$LOOP=$(sudo losetup -f)
Em seguida, atribua a imagem a um dispositivo de bloco:
sudo losetup $LOOP IMAGE.img
Em seguida, crie o sistema de arquivos ext4 nele:
sudo mkfs -t ext4 $LOOP
Em seguida, desanexe a imagem do dispositivo de loop:
sudo losetup -d $LOOP
Se você receber erros de comando não encontrado, basta instalar os programas ausentes.
Monte o arquivo de imagem no computador para acessá-lo
Agora, crie um diretório temporário no diretório de trabalho:
mkdir jessie
e monte o arquivo de imagem IMAGE.img nele:
sudo mount -o loop IMAGE.img $(pwd)/jessie
O comando pwd
garantirá que você monte um caminho absoluto para o seu diretório de trabalho atual.
Preencher a imagem com o novo sistema operacional com qemu-debootstrap
O próximo passo será usar o qemu-debootstrap para baixar os arquivos necessários. Isso é fácil se o qemu-debootstrap estiver disponível, como é o caso do Ubuntu e de sistemas operacionais derivados. Se você receber erros de comando não encontrado ao executar
qemu-debootstrap --help
, tente instalar o pacote apropriado, o que pode ser feito no Ubuntu via:
sudo apt-get install qemu-user-static
Para baixar todos os arquivos necessários e preparar o novo sistema operacional, execute o seguinte comando:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Observe que o primeiro jessie
representa a versão do sistema operacional, enquanto o segundo jessie
representa o diretório em que os arquivos serão instalados. Agora você pode desmontar a imagem, pois o restante do trabalho deve ser feito no telefone. Faça isso através de:
sudo umount $(pwd)/jessie
Se você não conseguir instalar o qemu-debootstrap, consulte a próxima seção.
Preencher a imagem com o novo sistema operacional sem qemu-debootstrap
Pule esta seção se você tiver o qemu-debootstrap disponível. Você ainda precisará de um debootstrap nativo para sua arquitetura. Se isso acontecer, use apenas a linha de comando acima, mas substitua qemu-debootstrap
por
debootstrap
. Caso contrário, siga esta seção.
Para baixar todos os arquivos necessários para o novo sistema operacional, execute o seguinte comando:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Agora você pode desmontar a imagem, pois o restante do trabalho deve ser feito no telefone. Faça isso através de:
sudo umount $(pwd)/jessie
Transferir imagem para o telefone
Agora é melhor criar um arquivo tar a partir deste e copiá-lo para o seu telefone. Não importa se o arquivo é colocado no cartão SD ou no armazenamento interno. Crie o arquivo na área de trabalho usando:
tar -cvzf jessie.tar.gz IMAGE.img
Agora, no seu telefone, ative o suporte ssh para copiar a imagem novamente. Você também pode fazer isso usando um cabo USB. Como o servidor ssh é redefinido a cada reinicialização, inicie o serviço ssh no telefone via:
sudo service ssh start
Em seguida, copie a imagem via:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
onde a variável COPYDIR
contém o diretório em que a imagem deve ser armazenada. Este comando assume que seu nome de usuário no telefone é phablet e o nome do host do telefone é ubuntu-phablet. Você pode descobrir emitindo echo $USER
eecho $HOSTNAME
por telefone, respectivamente.
Agora você só precisa extrair o arquivo onde quiser que a imagem resida. Suponha que o diretório onde você deseja que a imagem a ser localizado é armazenado na variável IMAGEDIR
. Extraia a imagem lá através do comando bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Agora você pode remover o arquivo morto:
rm $COPYDIR/jessie.tar.gz
Finalizando e usando a imagem no telefone
Se você não ativou o servidor ssh no telefone, faça-o agora através de:
sudo service ssh start
Em seguida, monte sua imagem em um diretório de sua escolha (neste caso "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Agora, digite seu chroot pela primeira vez via:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Se você tinha o qemu-debootstrap disponível no seu computador, está pronto. Use os 2 comandos acima para se conectar ao seu chroot. Caso contrário, você ainda precisará executar o seguinte comando quando estiver dentro do chroot, para configurar corretamente o sistema operacional:
/debootstrap/debootstrap --second-stage
Resumo de como acessar o chroot
Se você seguiu as etapas acima, poderá acessar seu chroot usando este script simples no telefone:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Você deve primeiro transferir o ssh para o seu telefone a partir do telefone devido a restrições de aplicação do aplicativo de terminal. O aplicativo de terminal só pode executar binários em determinados locais e nem o diretório pessoal nem o cartão SD estão entre eles. O serviço ssh, no entanto, não possui essas restrições.