O repositório Ubuntu no Android permite instalar o Ubuntu ARM64 em dispositivos Android sem root, com o uso do terminal Termux e uma VNC.
Note
Esse script de instalação foi feito para dispositivos Android com a arquitetura ARM64
Important
Todo o sistema será execultado dentro do Termux e por não haver root, não irá modificar as configurações do Android.
A imagem de instalação do sistema é direta dos servidores do Ubuntu para garatir a autenticidade.
O código desse instalador está totalmente aberto para que possa conferir cada arquivo.
Warning
Caso instale algum arquivo desconhecido e que contenha malware, não é garantido que não afete a memória interna do aparelho visto que mesmo que o malware execulte somente dentro da maquina virtual, existe a possibilidade do Ubuntu ler e modificar os arquivos da memória interna. Só nã há a possibilidade de modificar arquivos protegidos de sistema como exemplo os da pasta Android/data
.
O script de instalação deste repositório usa o PRoot para executar a distribuição Linux em seus dispositivos Android sem root.
- Instalar o Ubuntu em dispositivos Android;
- Adicionar repositórios que não estão presentes nos repositórios do Ubuntu;
- Atualizar o repositório do Firefox para que possa ser instalado a partir de um PPA ao invés do instalador snap (padrão) que não funciona no android;
- Instalar o Figma para linux com suporte ao arm;
- Corrigir o problema de iniciação do vscode, figma linux, brave-browser e vivaldi, que não são auto-abertos em máquina virtual sem o comando
--no-sandbox
; - Trocar o idioma do sistema operacional para o Português do Brasil.
Para o bom funcionamento do sistema, será necessário que atenda às especificações abaixo
Área | Requisito | Recomendável | Aceito, mas não recomendado |
---|---|---|---|
Sistema operacional | Android 10 ou superior | ||
RAM | 6GB | 8GB ou mais | 4GB |
Memória interna do aparelho | 128GB¹ | 256GB ou mais | |
Espaço livre | 40GB de espaço livre na memmória interna | ||
Apps | Termux, aplicativo de VNC da sua escolha | ||
Adicional | Devido restrições do Android, a depender da versão disponível no seu aparelho será necessário desativar o Phantom Process |
Note
¹ O sistema não inicia em aparelhos que possuem a memória interna de 64GB ou 32GB
Caution
Usar o sistema em um dispositivo com processamento mais fraco pode causar sobrecarga e danificar componentes internos devido a alta demanta de processamento.
Para que tudo funcione corretamente, é necessário a instalação do Termux, do Andronix e do AVNC. O Termux irá instalar e executar a distribuição localmente, o Andronix disponibilizará o script de instalação da distribuição e o AVNC irá visualizar e possibilitar o uso da interface gráfica do Ubuntu.
Onde baixar |
---|
Termux |
AVNC |
Warning
O Termux da Google Play Store está desatualizado e não há mais suporte oficial.
- Copie o código abaixo e depois cole o código no termux usando o atalho
ctrl + alt + v
caso esteja usando um teclado ou clique e pessione na área da tela próxima do cifrão ($
), clique empaste
para colar e após isso, tecleenter
.
Important
O instalador ainda está em fase de testes. Caso ache algum problema, relate na opção "Issues".
pkg update -y && pkg install wget curl proot tar -y && wget https://raw.githubusercontent.com/allytiago/Ubuntu-no-Android/main/install.sh -O ubuntu-install.sh && chmod +x ubuntu-install.sh && bash ubuntu-install.sh
Note
O código do passo 1 fará uma atualização dos repositórios e de configurações do Termux. Só confirme teclando enter
.
Exemplo: quando aparecer a pergunta: *** openssl.conf (Y/I/N/O/D/Z) [default=n] ?
o usuário poderá teclar y
ou n
e depois enter
ou somente teclar enter
e prosseguir. O ato de somente dar o enter
já define a configuração padrão. O mesmo será feito quando as perguntas: *** motod (Y/I/N/O/D/Z) [default=n] ?
, *** sources.list (Y/I/N/O/D/Z) [default=n] ?
, *** bash.bashrc (Y/I/N/O/D/Z) [default=n] ?
e*** openssl.conf (Y/I/N/O/D/Z) [default=n] ?
aparecerem.
Caution
Caso o Termux ainda não tenha permissão para ler o armazenamento, o app fará a solicitação que deverá confirmada para evitar possíveis problemas durante a instalação.
-
Escolha o idioma que será o padrão do sistema e depois clique em
<OK>
. -
O próximo passo é definir o padrão de idioma do seu teclado. Aparecerá diversos idiomas com uma numeração ao lado e deverá usar essa numeração para especificar o idioma do seu teclado no campo de inserção:
Country of origin for the keyboard
.
Important
Se o teclado é padrão inglês, então será a opção 32. English (US)
, ou seja, terá que digitar 32
que é o número representativo do idioma e teclar enter
. No caso do teclado inglês, deverá escolher a opção 14. English (US) - English (US, alt. int.)
caso utilize o idioma Português como padrão, mas o teclado tem outra formatação.
Caso apareca o texto [more]
, significa que a lista é maior que sua tela e será necessário teclar enter
até aparecer a opção Keyboard layout
.
Tip
Você poderá trocar o idioma do teclado nas confirguarações do sistema.
- Após a configuração do teclado, será perguntado a região/continente. Escolha o item que representa a sua região e digite o número no campo
Geographic area
e logo após, tecleenter
.
Note
Exemplo: caso esteja no continente americano, deverá procurar o item 2. America
e digitar o número 2
no campo Geographic area
.
- Depois de definir a região, será definido o fuso horário. Procure pelo item do fuso horário da sua região e digite o número que representa o item no campo
Time zone
.
Note
Exemplo: o item 22. Bahia
representa o fuso horário da Bahia, Estado brasileiro. Nesse caso, seria digitado o número 22
no campo Time zone
.
- Antes de finalizar o processo de instalação será solicitado a criação de senha para poder fazer login no servidor VNC. No campo
Digite a nova senha para o servidor VNC
, faça o que a pergunta auto explica: crie uma senha para poder fazer login no servidor.
Caution
O terminal não insere um *
ou algum outro simbolo representativo de que foi inserido algum caractere dentro do campo de criação de senha. Portanto, tome cuidado ao digitar.
Agora que o Ubuntu foi instalado dentro do Termux o próximo passo será iniciar a visualização da interface gráfica do Ubuntu.
Tip
Nesta documentação foi escolhido o AVNC como aplicativo para executar a visualização da interface gráfica.
- Abra o seu app o AVNC;
- Clique na bolinha com
+
; - Em
Nome (ex. PC do trabalho)
, dê um nome para identificar facilmente o sistema; - Em
Host
, digitelocalhost
; - Na
Porta
, o AVNC define por padrão o valor5900
, mude para1
que é a porta padrão usada no servidor vnc;
Note
Caso seja outra porta, digite o número da porta usado
- Em
Qualidade de imagem
, marque a opçãoImagem não processada
; - Em
Segurança
, escolha troque a opçãoAutomático
porVncAuth
; - Em
Nome de usuário
, pode deixar vazio; - Em
Senha
, você digita a senha criada no item 6 do passo 1; - Depois clique em salvar;
- Agora clique no card com o nome que você definiu.
Important
Caso apareça o erro Disconnected
, verifique se o servidor vnc. foi iniciado.
Se o servidor vnc for iniciado, aparecerá a seguinte mensagem no termux: Servidor VNC foi iniciado. A senha padrão é a senha da conta para root
.
Caso persista o erro de inicialização e a porta e host estão corretos, tente recriar a senha do VNC usando o comando vncpasswd
.
Para finalizar o sistema, ou seja, desligar o Ubuntu, deverá digitar o comando stopvnc
pelo terminal Termux ou pelo terminal do Ubunut e em seguinda digitar o número da porta do servidor, que por padrão é 1
. Quando o Ubuntu for desligado, o AVNC não irá exibir mais a interface do sistema até que inicie o Ubuntu novamente.
Toda vez que precisar iniciar o sistema, será necessário:
- Abrir o app Termux;
- Digitar o comando a abaixo e dar
enter
(confirmar):./start-ubuntu.sh
- Escolher a resolução desejada
- Abrir o AVNC
- Escolher o card com o nome escolhido no [passo: "iniciando a interface gráfica"](#passo-2---iniciando a-interface-gráfica);
- Pronto! O sistema foi inicializado.
Note
Caso queira encerrar o sistema, utilize o comando stopvnc
(explicado no passo: "finalizando o sistema").
Caso deseje desinstalar o sistema, copie e cole o comando abaixo no Termux:
wget https://raw.githubusercontent.com/allytiago/Ubuntu-no-Android/main/uninstall.sh -O ubuntu-uninstall.sh && chmod +x ubuntu-uninstall.sh && bash ubuntu-uninstall.sh
Important
Lembre-se de ter finalizado o ./start-ubuntu.sh
. Para saber se a distribuição Ubuntu está iniciada, procure pelo seguinte texto: root@localhost
e caso esteja presente no terminal, a distribuição foi iniciada. Caso seja somente ~ $
, então está fora da distribuição e poderá usar o comando de desinstalação.
Caso esteja com a distribuição Ubuntu iniciada, finalize-a com o comando exit
até trocar o root@localhost
por ~ $
.
Como informado nas "instalações necessárias", o Termux disponível na Play Store foi descontinuado e sem suporte, por isso, o app quando baixado pela loja não estará funcional, sem poder se conectar com os servidores do terminal. Usar o F-Droid ou o instalável disponível nos releases do termux para atualizar o app não resolverá o problema do terminal devido o tempo de diferença entre a atualização recente e a ultima atualização do Termux da Google Play Store. Para resolver o problema, deverá desinstalar o Termux e reinstalar usando alguma das opções listadas nas "instalações necessárias".
Note
O F-Droid baixa a versão do Termux mais compatível com o seu dispositivo. Já o das releases do Termux no GitHub não faz essa seleção e terá que baixar a correta para o seu dispositivo para que funcione corretamente.
Note
O instalador já corrige essa questão. Só será necessário usar caso esteja usando um instalador diferente desse do repositório ou caso deseje trocar de idioma.
Por padrão, o sistema será instalado no idioma Inglês dos Estados Unidos. Para trocar para o idioma de outra região, será necessário executar os seguintes comandos no terminal com o Ubuntu já iniciado.
Para este script, foi utilizado o ICU Locale Português do Brasil, que é o
pt_BR
e o formato de codificaçãoUTF-8
sudo apt-get update
sudo apt install locales -y
sudo apt-get install language-pack-pt language-pack-pt-base language-pack-gnome-pt language-pack-gnome-pt-base -y
Note
Troque o pt
ou pt-base
pela sigla do seu idioma.
sed -i 's/^# *\(pt_BR.UTF-8\)/\1/' /etc/locale.gen
locale-gen
Troque o
pt_BR
pelo ICU Locale da sua região e oUTF-*
pelo formato de codificação da sua região.
Esse script fará com que a distribuição Ubuntu sempre seja iniciada no idioma escolhido
echo 'export LC_ALL=pt_BR.UTF-8' >> ~/.bashrc
echo 'export LANG=pt_BR.UTF-8' >> ~/.bashrc
echo 'export LANGUAGE=pt_BR.UTF-8' >> ~/.bashrc
Troque o
pt_BR
pelo ICU Locale da sua região.Após executar os comandos, saia da distribuição Ubuntu.
Use o comando
exit
para sair doroot@localhost
.Caso o servidor vnc esteja ativo, desative-o.
Note
O instalador já corrige essa questão.
Important
O Ubuntu fez uma transição do deb para snap que não funciona no sistema que roda no Android devido as limitações root. Entenda mais aqui sobre a transição.
Pode ser que haja algum resíduo ou pode ser que haja uma versão do Firefox e deve ser removida antes de iniciar todo esse processo.
sudo snap remove firefox
sudo apt autoremove --purge firefox* -y
Use qualquer um dos dois comandos para desinstalar o o pacote do Firefox Eu particularmente uso a do
apt
, mas pode usar os dois por garantia.
Este é o PPA da Mozilla que deve ser adicionado a lista de fontes de softwares para que seu terminal possa instalar o pacote deb
sudo add-apt-repository ppa:mozillateam/ppa -y
sudo apt update
Use esse comando para atualizar esse repositório
Mesmo com o repositório instalado, pode ser que o terminal opte em instalar pelo snap. Para evitar isso, copie o seguinte código, cole no teminal e tecle enter
echo '
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
' | sudo tee /etc/apt/preferences.d/mozilla-firefox
O seguinte passo permite que o firefox faça atualizações automáticas quando instalado
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
Agora, com tudo pronto, pode usar o apt update
para atualizar os repositórios por garantia, ou já seguir direto para a instalação. O comando a seguir instala o Firefox
sudo apt install firefox -y
Caso o firefox mostre o alerta de erro e não consiga acessar nenhuma página. Será necessário alterar o nível de de segurança do sandbox para 0. Para isso, siga os seguintes passos:
- Abra o Firefox
- Digite no campo de pesquisa:
about: config
e dêenter
- Vai aparecer um alerta. Coinfirme clicando em
Aceitar o risco e continuar
ou emAccept the Risk and Continue
- Agora no campo de pesquisa:
Pesquisar preferências por nome
ouSearch preference name
, pesquise porsecurity.sandbox.content.level
- O resultado padrão será 4. Clique no lápis ✏️ ou dê duplo clique no valor e troque
4
por0
e após tecleenter
ou clique no check ☑️. - Reinicie o Firefox (Feche o navegador e abra novamente)
Note
O instalador já corrige essa questão.
A versão instalada é a beta.
Pode ser que haja algum resíduo ou alguma versão Chromium instalada no sistema e deve ser removida antes de iniciar todo esse processo. Execute o comando abaixo:
sudo snap remove chromium
sudo apt autoremove --purge chromium* -y
Este é o PPA da Chromium Team que deve ser adicionado a lista de fontes de softwares para que seu terminal possa instalar o pacote deb. Você pode escolher entre a versão beta ou dev.
Note
O repositório beta é mais estável que a dev
Repositório do Chromium beta
sudo add-apt-repository ppa:chromium-team/beta -y
Repositório do Chromium dev
sudo add-apt-repository ppa:chromium-team/dev -y
Tip
Escolha um dos dois.
Mesmo com o repositório instalado, pode ser que o terminal opte em instalar pelo snap. Para evitar isso, copie o seguinte código, cole no teminal e tecle enter
echo 'Package: *
Pin: release o=LP-PPA-chromium-team-beta
Pin-Priority: 1001
Package: chromium*
Pin: origin "LP-PPA-chromium-team-beta"
Pin-Priority: 1001
' | sudo tee /etc/apt/preferences.d/chromium
A lista de pacotes padrão não traz suporte para a versão Jammy e por este motivo, o passo 5 trará uma solucão para que o apt
possa instalar o Chromium, mas será necessário remover o buscador de lista padrão.
rm -rf /etc/apt/sources.list.d/chromium-team-ubuntu-beta-jammy.list
Como explicado no passo 4, a lista do repositório não consegue encontrar versões deb para a versão Jammy do Ubuntu. Para resolver o problema será feito um downgrade da lista para a versão Bionic.
echo 'deb https://ppa.launchpadcontent.net/chromium-team/beta/ubuntu/ bionic main
# deb-src https://ppa.launchpadcontent.net/chromium-team/beta/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/chromium-team-ubuntu-beta-bionic.list
Note
Com esse comando o apt install
irá instalar a versão bionic que está disponível para download.
O seguinte passo permite que o firefox faça atualizações automáticas quando instalado
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-chromium-team-beta:bionic";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-chromium
Agora, com tudo pronto, pode usar o apt update
para atualizar os repositórios por garantia, ou já seguir direto para a instalação. O comando abaixo instala o Chromium beta.
sudo apt update
sudo apt install chromium-browser -y
Como citado no "problema de inicialização no Chromium Web Browser, Brave Browser, Vivaldi, Vscode e Figma-Linux", o Chromium tem problema de inicialização em maquina virtual (VNC). O comando abaixo resolve o problema de inicialização
sed -i 's|Exec=chromium-browser|Exec=chromium-browser --no-sandbox|' /usr/share/applications/chromium-browser.desktop
Important
Esse comando não resolve o problema no caso de instalar apps PWAs do Chromium.
Note
O instalador já corrige essa questão para o VSCode que é instalado automaticamente no processo.
Esses programas listados possuem um problema de inicialização dentro do VNC e isso é devido a uma restrição ao sandbox
. Para resolver esse problema, é necessário a adição de uma option
ao comando de execução de cada um deles. Listarei o comando a ser colado no terminal para resolver o problema:
Para solucionar este problema, utilizo o comando
sed
para procurar pela linha com o executável e substituir por outro comando de execução
sed -i 's|Exec=chromium-browser|Exec=chromium-browser --no-sandbox|' /usr/share/applications/chromium-browser.desktop
sed -i 's|Exec=/usr/bin/brave-browser-stable|Exec=/usr/bin/brave-browser-stable --no-sandbox|' /usr/share/applications/brave-browser.desktop
sed -i 's|Exec=/usr/bin/vivaldi-stable|Exec=/usr/bin/vivaldi-stable --no-sandbox|' /usr/share/applications/vivaldi-stable.desktop
sed -i 's|Exec=/usr/share/code/code|Exec=/usr/share/code/code --no-sandbox|' /usr/share/applications/code*.desktop
sed -i 's|Exec=/opt/figma-linux/figma-linux|Exec=/opt/figma-linux/figma-linux --no-sandbox|' /usr/share/applications/figma-linux.desktop