Instalação do Debian Linux no Galaxy Tab 10.1

Desde que comprei o Galaxy Tab lí que era possível rodar linux no android. Logo ví que isso poderia ser útil: ter um sistema linux completo na ponta dos dedos. Melhor ainda: até comprei o keyboard dock original samsung e um mouse bluetooth para deixar a brincadeira ainda melhor.

Debian Linux Squeeze LXDE Desktop

Debian Linux Squeeze rodando no Galaxy Tab 10.1 com Android ICS.

Existem dois aplicativos na Play Store que fazem este “serviço” para você.

Linux Installer Standard foi o primeiro que fiquei sabendo da existência. Ele permite que você instale as distribuições Debian ou Ubuntu e ainda pode selecionar a versão. Tentei fazer a instalação a partir dele pois é o que mais tem recursos para você personalizar seu linux. Não tive sucesso. O processo de debootstrap não concluía. Tentei todas as alternativas possíveis e artimanhas, gambiarras e nada. Só perdi tempo. Talvez seja diferente para você.

Uma alternativa era o Complete Linux Installer. Este é moleza de usar e funcionou bem para mim. Ele permite a instalação das distros Debian, Ubuntu, Arch, Backtrack e Fedora. O problema dele é que você não tem muitas escolhas de personalização da imagem a ser criada, até porque ela já está pronta e ele só faz o download para o seu dispositivo android. Mas o problema principal foi que eu desejava instalar o Debian Wheezy mas o app só possui o Debian 4 com xfce. Não gostei.

Pelos motivos que descrevi acima decidi criar a minha própria imagem de disco do tamanho que eu queria e com o Linux configurado como eu desejava. Se você quiser pode fazer o download dela no link abaixo. Ela foi testada no Galaxy Tab 10.1 mas deve funcionar em qualquer android com processador arm.


Fiz um vídeo demonstrando o linux no galaxy tab:

Requerimentos:


  • Uma maquina com Debian ou Ubuntu (usei meu Linux Mint Debian Edition).
  • Galaxy Tab 10.1 rootado com BusyBox instalado.
  • Muita paciência.

Criando a Imagem:


Na maquina com o Linux você precisará instalar o debootstrap.

sudo apt-get update
sudo apt-get install debootstrap

Crie uma imagem em branco, depois formate e monte ela.

dd if=/dev/zero of=squeeze.img bs=1M count=2048

sudo mkfs.ext4 -F squeeze.img

sudo mkdir /mnt/squeeze/
sudo busybox mount -t ext4 -o loop squeeze.img /mnt/squeeze/


Nota: O arquivo de imagem acima é para 2GB. Mude o count para o tamanho que desejar (a instalação do lxde ocupa mais de 800 MB)


Rode o debootstrap e instale o sistema na imagem.

sudo debootstrap --verbose --arch armhf --foreign squeeze /mnt/squeeze/ http://ftp.debian.org/debian

Desmonte a imagem

sudo umount /mnt/squeeze

Instalação da Imagem no Android


Crie uma pasta no Android. Eu coloquei em /sdcard/Debian. Copie a imagem para a pasta.

A instalação resume-se em:

  • Criar um ponto de montagem e montar a imagem.
  • Chroot para a imagem do Debian.
  • Definição de variáveis de ambiente.
  • Rodar a segunda parte do debootstrap

Sugiro a instalação de um emulador de terminal para o android. Eu uso o Better Terminal Emulator. Você pode usar o adb shell também.
Digite os seguintes comandos no terminal. O código está comentado para facilitar a compreensão.

# Torne-se root.
su

# Crie um ponto de montagem e monte a imagem nele.
mkdir /data/local/debian
busybox mount -o loop,noatime -t ext4 /sdcard/Debian/squeeze.img /data/local/debian

# Faça chroot para o Debian
chroot /data/local/debian/ /bin/sh

# Defina algumas variáveis de ambiente
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root

# Defina o prompt do shell
export PS1='$USER@$HOSTNAME:${PWD-?} # '

# Termine o debootstrap
/debootstrap/debootstrap --second-stage

# Inicie um shell do bash
/bin/bash


Não saia do shell antes de mover para a próxima sessão.


Primeiro Boot


Tecnicamente o sistema está rodando mas ainda precisamos fazer uma última coisa:

# Adicione os repositórios para instalação de pacotes.
echo "deb http://ftp.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list

# Faça o primeiro update
apt-get update

Retorne para o Android executando o seguinte comando:

exit

O sistema está pronto para ser usado então precisamos de um script para facilitar a inicialização do Linux. Copie esse script para o diretório onde você colocou a imagem e chame ele de linux.

#!/bin/sh
if [ $EUID -ne 0 ]
then
	echo "Tornando-se root!"
	su -c linux
	exit 1
fi

mnt=/data/local/debian

# Soh eh preciso caso use o nautilus. Se usar outro
# gerenciador de arquivos nao eh necessario.
echo "Remontando a raiz para escrita para escrita..."
busybox mount -o rw,remount /

echo "Montando o Debian Squeeze..."
busybox mount -t ext4 -o loop,noatime squeeze.img $mnt/

echo "Definindo variáveis de ambiente..."
export PATH=$bin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH
export TERM=linux
export HOME=/root
export USER=root
# export PS1='$USER@$HOSTNAME:${PWD-?} # '
export PS1='\[\e[1;31m\][\u@\h \W] \$\[\e[0m\] '

echo "Montando devpts/proc/sysfs..."
busybox mount -t devpts devpts $mnt/dev/pts
busybox mount -t proc proc $mnt/proc
busybox mount -t sysfs sysfs $mnt/sys

# Voce pode colocar aqui o comando para montar o cartao de
# memoria externo tambem. No meu caso o galaxy tab nao tem.
echo "Montando o cartaão de moemória..."
if [ ! -d $mnt/mnt/sdcard ]; then
    mkdir $mnt/mnt/sdcard
fi
busybox mount --bind /mnt/sdcard $mnt/mnt/sdcard

echo "Entrando no Debian Squeeze..."
echo " "
chroot $mnt/ /bin/sh /root/.init.sh

# busybox fuser -m $mnt -k

echo "Desmontando devpts/proc/sysfs..."
busybox umount $mnt/mnt/sdcard
busybox umount $mnt/dev/pts
busybox umount $mnt/proc
busybox umount $mnt/sys

echo "Desmontando Debian Squeeze..."
busybox umount $mnt/

Agora quando quiser rodar o linux abra o emulador de terminal do android e digite os comandos:

cd /sdcard/Debian
su
sh linux

LXDE ou GNOME e VNC Server


O LXDE tem desempenho muito superior ao Gnome em máquinas mais lentas mas é possível instalar os dois como eu fiz.

LXDE:

apt-get install lxde

Gnome:

# Não instale o pacote gnome pois é gigante e cheio de dependências.
# Instale os seguintes pacotes separados:
apt-get install gnome-session gnome-themes gnome-terminal xserver-xorg-core gdm

Durante a instalação aparecerão duas janelas de configuração. Deixe as configurações padrão e continue.
Instale o VNC Server.

apt-get install tightvncserver

O tightvncserver é o servidor vnc padrão. Para melhor desempenho baixe o código fonte do turbovnc e da libjpegturbo e compile.

TurboVNC: http://www.virtualgl.org/Downloads/TurboVNC

Libjpeg-turbo: http://libjpeg-turbo.virtualgl.org/



Para iniciar e parar o vncserver usando “service start” crie o script abaixo em /etc/init.d/vncserver e execute chmod 755 nele.

export HOME="/root"
export USER="/root"
STARTCMD="vncserver -geometry 1280x752"
STOPCMD="vncserver -kill :1"

case $1 in
    start)
        if [ -e /tmp/.X1-lock ] ; then
            echo "VNCServer already running"
        else
            $STARTCMD
        fi
            ;;
    stop)
        $STOPCMD
        ;;
    restart)
        $STOPCMD
        $STARTCMD
        ;;
    *)
        echo "$0 start|stop|restart"
        exit 1
        ;;
esac

exit 0

Execute o comando abaixo para iniciar o vncserver automaticamente.

echo "service vncserver start" >> /root/.bashrc

A primeira vez que você rodar ele vai pedir para entrar com a senha do vnc.

Configure o vncviewer do android para conectar com localhost na porta 5901.

Pronto! Temos o Debian 6 rodando em paralelo com o Android.

Algumas dicas:


Caso o script exit não consiga desmontar a imagem do linux experimente executar o seguinte comando:

killall menu-cached

Para aumentar o tamanho da imagem depois de criada (substitua 256 para a quantidade de megabytes que deseja adicionar):

dd if=/dev/zero bs=1M count=256 >> data.img
e2fsck -f data.img
resize2fs data.img
e2fsck -f data.img

Para mudar para o gnome:

update-alternatives --config x-session-manager

Sobre o autor

Um desenvolvedor web veterano que está sempre a procura de novas tecnologias que facilitem o desenvolvimento de aplicativos ricos para a internet. Louco por tecnologia, games e Linux. Pai do Victor.

20 Comentários

  1. R. Katsutoshi27 de novembro de 2012 at 9:15

    Sem dúvidas uma ótima iniciativa.

    Será que é completamente possível também fazer uma instalação dessas (com as devidas modificações) num Acer Iconia Tab A500?

    • Leonardo Lima de Vasconcellos27 de novembro de 2012 at 9:19

      Tranquilo. Vai funcionar sim. O Acer Iconia Tab A500 é muito parecido com o Galaxy Tab e por isso você não vai precisar mudar nada. Pode baixar a imagem e testar ou fazer a sua própria.

  2. mpsnets27 de novembro de 2012 at 10:04

    Parabéns pelo artigo !

    sera que roda em um Galaxy P1010 ?

    • Leonardo Lima de Vasconcellos27 de novembro de 2012 at 10:26

      Roda sim! Você vai precisar mudar a resolução do vncserver. Onde diz: STARTCMD=”vncserver -geometry 1280×752″ mude para a resolução do seu dispositivo.

  3. [...] Squeeze no seu Galaxy Tab, compartilhou a imagem de instalação para os interessados, escreveu um artigo contando como fazer, e ainda publicou um vídeo mostrando como [...]

  4. Junior27 de novembro de 2012 at 10:35

    Faltou um descrição de desempenho, no vídeo me pareceu lento… mas achei legal o post.

    • Leonardo Lima de Vasconcellos27 de novembro de 2012 at 10:40

      Realmente é mais lento do que no PC mas funciona. Vale a pena testar. Como eu disse, com processadores quadcore e overclock vai ficar melhor ainda. Um diferencial desta instalação é o turbovnc e a libjpeg-turbo que melhoram muito o desempenho.

  5. [...] Squeeze no seu Galaxy Tab, compartilhou a imagem de instalação para os interessados, escreveu um artigo contando como fazer, e ainda publicou um vídeo mostrando como [...]

  6. André15 de janeiro de 2013 at 8:52

    Sou leigo no assunto. Instala o Linux dentro do Android? (Parece pela foto) ou seja… não é preciso formatar/excluir/arriscar inutilizar o aparelho? Estou inclinado a fazer isso num galaxy tab p6800. Desde que seja “seguro como um simples aplicativo”. Obrigado.

  7. Nelson Simpson3 de junho de 2013 at 21:40

    Uma alternativa era o Complete Linux Installer . Este é moleza de usar e funcionou bem para mim. Ele permite a instalação das distros Debian, Ubuntu, Arch, Backtrack e Fedora. O problema dele é que você não tem muitas escolhas de personalização da imagem a ser criada, até porque ela já está pronta e ele só faz o download para o seu dispositivo android. Mas o problema principal foi que eu desejava instalar o Debian Wheezy mas o app só possui o Debian 4 com xfce. Não gostei.

    • Leonardo Lima de Vasconcellos4 de junho de 2013 at 10:20

      Exatamente. Eu testei mas eu queria o debian com lxde mais atual e por isso preferi fazer a minha imagem personalizada. Na época o wheezy era testing e não funcionava varias coisas. Muitos erros de segmentation falt. Por isso eu testei com o squeeze e ficou ótimo.

  8. José Campos29 de agosto de 2013 at 11:12

    Se eu instalar no meu galaxy s2 gt-9100, tem como desinstalar caso eu não goste? Se como como faço? ?

  9. Marcos Conceição18 de setembro de 2013 at 14:41

    Olá amigo,

    Você acredita que essa instalação também pode ser feita em um Galaxy S III ?

    Abraços e Parabéns

  10. marcio28 de junho de 2014 at 11:09

    Enviei um e-mail porque gostaria de colocar ubuntu ou outra distro deb no meu galaxy tab 2 7 (1310)… poderia me ajudar?

  11. marcio30 de junho de 2014 at 15:57

    Aguardarei seu tutorial…

  12. Wilken17 de julho de 2014 at 11:26

    Ola Leonardo,

    Comprei recentemente um tablet chines (Genesis 7305), com a intenção de substituir o android por linux e rodar alguns programas voltados de áudio do linux, como o Linuxsampler e o Qsynth. Basicamente, eu queria transformar meu tablet em um móduo de timbres midi, para operar com um controlador usb, o que eu já faço com um computador muuuuito antigo.
    Eu consegui instalar tanto o debian como o ubuntu, usando o complete linux installer, mas aparentemente, nenhuma dessas soluções que instalam o linux sobre o android tem suporte ao som.
    Vc sabe como resolver isso?
    Conhece algum tutorial com o qual eu possa eliminar o android e instalar apenas o linux, para que eu possa ter acesso ao hardware de audio, eliminando a camada android?
    Desde já obrigado, este tutorial foi muito util para mim!

Deixe uma resposta