tl; dr: Estou procurando uma maneira "canônica" ou "recomendada" de instalar pacotes (cli) .deb no Ubuntu touch
Uso o Ubuntu no meu desktop e servidor há um ano e estou muito satisfeito. Agora comprei o primeiro telefone Ubuntu, o BQ Aquaris e4.5 Ubuntu Edition. No entanto, descobri que não consigo instalar .deb
pacotes normais ou instalar coisas usando apt-get
. Como posso "fazer root" no meu telefone para instalar .deb
pacotes "normais" ?
Eu mesmo tentei. Eu sei que a primeira coisa é tornar seu sistema de arquivos gravável. Executei as etapas a seguir, mas fiquei preso por causa de um erro do dpkg.
# Desktop:
sudo add-apt-repository ppa:phablet-team/tools
sudo apt-get update
sudo apt-get install phablet-tools
# Phone:
Security & Privacy: Lock phone: Lock when idle: Never
About this phone: Developer Mode: Developer Mode ON
# connect phone to PC via USB
# Desktop:
adb devices
# no device detected so I've manually added file
touch /home/username/.android/adb_usb.ini
# with content: 0x2a47
sudo adb kill-server
sudo adb start-server
adb devices # now my phone is on the list
# Phone:
sudo test -w filename && echo "Writable" || echo "Not Writable"
# verified it is writable
sudo add-apt-repository ppa:phablet-team/ppa
sudo apt-get update && sudo apt-get upgrade
E este é o lugar onde o erro começa a me bloquear:
dpkg: error processing archive /var/cache/apt/archives/powerd_0.16+15.04.20150430-0ubuntu1_armhf.deb (--unpack):
unable to make backup link of `./usr/share/powerd/device_configs/config-default.xml' before installing new version: Invalid cross-device link
Então eu tentei
sudo apt-get install -f
Mas ficou preso no "Bluetooth main config". Eu reiniciei o telefone, mas ele não queria mais ligar. Eu tentei a Recover
opção de inicialização. Isso funcionou. Eu tentei install -f
novamente, e desta vez funcionou. Mas depois de fazer upgrade
eu ainda tinha o mesmo erro.
fonte
Respostas:
Crie um chroot dentro do diretório inicial:
Em seguida, use o chroot e instale as ferramentas da CLI que você precisar usar dentro desse chroot:
Para executar certas coisas, pode ser necessário vincular a montagem de alguns diretórios. Você precisará tomar cuidado especial ao fazer isso, se desejar excluir o chroot do seu telefone ou executar outras ações destrutivas.
Esta não é uma lista exaustiva, mas você pode montar outros diretórios conforme necessário, de maneira semelhante. Você não precisa criar o chroot em seu diretório pessoal se tiver um dispositivo de armazenamento externo para criá-lo, como um cartão SD. No entanto, nem todos os telefones possuem slots para cartão SD. Se você deseja criar o chroot em um cartão SD, basta substituir o diretório inicial nos comandos acima, pelo caminho para um diretório na mídia de armazenamento alternativa em que deseja criar o chroot.
fonte
/
mais mexer quando quero mexer no meu telefone ... #sudo mount -o bind /run /home/phablet/vivid-chroot/run
para obter a rede dentro do chroot askubuntu.com/questions/469209/…Aviso: este é apenas um truque para se livrar do problema de link entre dispositivos no apt-get upgrade com pacote powerd. Esta não é uma solução certificada "UBUNTU"
Pré-requisito: ter feito do R / W a instalação do ubuntu com:
Copie o arquivo powerd * .deb baixado do telefone para um PC a partir do caminho:
/ var / cache / apt / arquivos /
No PC, descompacte o arquivo .deb, remova o arquivo /usr/share/powerd/device_configs/config-default.xml (dos meus testes, o resultado não é fundamental):
Tudo deve ser feito como root para manter as permissões originais dos arquivos e diretórios do pacote. Reembale, copie de volta no telefone e instale com:
Você ainda receberá o erro:
"/usr/share/powerd/device_configs/config-default.xml": dispositivo ou recurso ocupado
Mas no final o pacote é atualizado.
Agora se você:
sudo apt-get upgrade
o erro desapareceu.Meu telefone BQ Aquaris parece funcionar bem e estável.
fonte
powerd
? requer hackear a cada atualização?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 segundojessie
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
pordebootstrap
. Caso contrário, siga esta seção.Para baixar todos os arquivos necessários para o novo sistema operacional, execute o seguinte comando:
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 emitindoecho $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:
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.
fonte
Tornar gravável o sistema de arquivos raiz no telefone
Para remontar o sistema de arquivos raiz como gravável, execute o seguinte comando no seu telefone (baixe o aplicativo de terminal se você ainda não o tiver):
Observe que após reiniciar o telefone, ele
/
é somente leitura novamente . Se você quiser que isso seja permanente, mude/etc/fstab
. No entanto, o toque do Ubuntu no BQ ainda não está nos principais repositórios de braço do Ubuntu. Instalar coisas comotree
oulibreoffice
não funcionará ainda. Eles podem estar na versão mais recente do desenvolvimento.Executando a última versão devel do Ubuntu
(possui mais vantagens no repositório, como ferramentas de linha de comando e outras)
Como executar o último lançamento de desenvolvimento do Ubuntu touch no telefone bq?
Consertando coisas quando você quebra tudo
Quando você quebra tudo completamente, você pode apenas atualizar o seu dispositivo .
fonte