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.
--no-sandbox
;
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.
[!WARNING] O Termux da Google Play Store está desatualizado e não há mais suporte oficial.
ctrl + alt + v
caso esteja usando um teclado ou clique e pessione na área da tela próxima do cifrão ($
), clique em paste
para colar e após isso, tecle enter
.
[!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á teclary
oun
e depoisenter
ou somente teclarenter
e prosseguir. O ato de somente dar oenter
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 digitar32
que é o número representativo do idioma e teclarenter
. No caso do teclado inglês, deverá escolher a opção14. 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 teclarenter
até aparecer a opçãoKeyboard layout
.[!TIP] Você poderá trocar o idioma do teclado nas confirguarações do sistema.
Geographic area
e logo após, tecle enter
.[!NOTE] Exemplo: caso esteja no continente americano, deverá procurar o item
2. America
e digitar o número2
no campoGeographic 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úmero22
no campoTime 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
, digite localhost
;
Na Porta
, o AVNC define por padrão o valor 5900
, mude para 1
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ção Imagem não processada
;
Em Segurança
, escolha troque a opção Automático
por VncAuth
;
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 comandovncpasswd
.
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:
enter
(confirmar):
./start-ubuntu.sh
[!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 comandoexit
até trocar oroot@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
locales
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
oupt-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:
about: config
e dê enter
Aceitar o risco e continuar
ou em Accept the Risk and Continue
Pesquisar preferências por nome
ou Search preference name
, pesquise por security.sandbox.content.level
4
por 0
e após tecle enter
ou clique no check ☑️.[!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