tl; dr: estoy buscando una forma "canónica" o "recomendada" de instalar paquetes (cli) .deb en Ubuntu touch
He estado usando Ubuntu en mi escritorio y servidor durante un año y estoy muy satisfecho. Ahora compré el primer teléfono Ubuntu, el BQ Aquaris e4.5 Ubuntu Edition. Sin embargo, descubrí que no puedo instalar .deb
paquetes normales o instalar cosas usando apt-get
. ¿Cómo puedo "rootear" mi teléfono para poder instalar .deb
paquetes "normales" ?
Lo intenté yo mismo. Sé que lo primero es hacer que su sistema de archivos sea editable. Hice los siguientes pasos, pero luego me quedé atascado debido a un error 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
Y este es el lugar donde el error comienza a bloquearme:
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
Así que lo intenté
sudo apt-get install -f
Pero se atascó en la "configuración principal de Bluetooth". Reinicié el teléfono, pero ya no quería encenderlo. Probé la Recover
opción de arranque. Eso funciono. Lo intenté de install -f
nuevo, y esta vez funcionó. Pero después de hacerlo upgrade
, todavía tuve el mismo error.
fuente
Respuestas:
Cree un chroot dentro del directorio de inicio:
Luego, use el chroot e instale cualquier herramienta CLI que necesite usar, dentro de ese chroot:
Para realizar ciertas cosas, puede que sea necesario vincular el montaje de algunos directorios. Deberá tener especial cuidado al hacerlo, si desea eliminar el chroot de su teléfono o realizar otras acciones destructivas.
Esta no es una lista exhaustiva, pero puede enlazar montar otros directorios según sea necesario de manera similar. No necesita crear el chroot en su directorio de inicio si tiene un dispositivo de almacenamiento externo para crearlo, como una tarjeta SD. Sin embargo, no todos los teléfonos tienen ranuras para tarjetas SD. Si desea crear el chroot en una tarjeta SD, simplemente reemplace el directorio de inicio en los comandos anteriores, con la ruta a un directorio en su medio de almacenamiento alternativo donde desea crear el chroot.
fuente
/
más cuando quiero jugar con mi teléfono ...sudo mount -o bind /run /home/phablet/vivid-chroot/run
para obtener la red dentro de chroot askubuntu.com/questions/469209/…Advertencia: esto es solo un truco para deshacerse del problema de enlace entre dispositivos en la actualización de apt-get con el paquete powerd. esta no es una solución certificada "UBUNTU"
Requisito previo: haber realizado R / W la instalación de ubuntu con:
Copie el archivo powerd * .deb descargado del teléfono a una PC desde la ruta:
/ var / cache / apt / archives /
En la PC, desempaquete el archivo .deb, elimine el archivo /usr/share/powerd/device_configs/config-default.xml (de mis pruebas no resulta fundamental):
Todo debe hacerse como root para mantener los permisos originales de los archivos y directorios del paquete. Vuelva a embalar, vuelva a copiar en el teléfono, luego instálelo con:
Aún recibirá el error:
"/usr/share/powerd/device_configs/config-default.xml": dispositivo o recurso ocupado
Pero al final el paquete se actualiza.
Ahora si lo haces:
sudo apt-get upgrade
el error desapareció.Mi teléfono BQ Aquaris parece funcionar bien y estable.
fuente
powerd
? ¿Requiere hackearlo en cada actualización?Como ya se ha señalado, debe instalar un chroot con capacidad ARM en su dispositivo e instalar todos los paquetes necesarios en ese chroot. Sin embargo, hacerlo en su directorio personal desperdicia mucho espacio valioso. En cambio, se puede hacer en su tarjeta SD usando una computadora que se ejecuta en un sistema operativo Linux apropiado (probado en Linux Mint 17 y Ubuntu Trusty). Como no encontré ninguna información sobre esto en ningún otro lugar, la puse aquí como respuesta a una vieja pregunta.
Las siguientes instrucciones suponen que desea instalar un debian jessie chroot en el directorio jessie.
Crear y completar el archivo de imagen en una computadora de escritorio
Crear un archivo de imagen vacío
Para crear una imagen de 1GB llamada IMAGE.img en el directorio de trabajo actual, haga lo siguiente:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Tenga en cuenta que la B en GB se omite. "if" significa "archivo de entrada", "de" para "archivo de salida" y "bs" para "tamaño de bloque".
Existen comandos más eficientes, pero que yo sepa, solo funcionan en ciertos tipos de sistemas de archivos. Este también funciona en una tarjeta SD o tempfs. Tenga en cuenta el uso de / dev / zero y no / dev / random o / dev / urandom, ya que eso tomaría mucho más tiempo y demoraría mucho más la transferencia de la imagen entre dispositivos más adelante.
Crear un sistema de archivos en la imagen
Sin el sistema de archivos, el teléfono no podría almacenar ningún dato en la imagen. Sin un sistema de archivos, aún no puede montar la imagen en un directorio, solo en un dispositivo de bloque.
Este comando bash generará el siguiente dispositivo de bucle vacío en la variable
LOOP
:$LOOP=$(sudo losetup -f)
A continuación, asigne la imagen a un dispositivo de bloque:
sudo losetup $LOOP IMAGE.img
A continuación, cree el sistema de archivos ext4 en él:
sudo mkfs -t ext4 $LOOP
A continuación, separe la imagen del dispositivo de bucle:
sudo losetup -d $LOOP
Si obtiene errores de comando no encontrado, simplemente instale los programas que faltan.
Monte el archivo de imagen en la computadora para acceder a él
Ahora, cree un directorio temporal en el directorio de trabajo:
mkdir jessie
y monte el archivo de imagen IMAGE.img en él:
sudo mount -o loop IMAGE.img $(pwd)/jessie
El comando
pwd
se asegurará de darle a mount una ruta absoluta a su directorio de trabajo actual.Rellenar la imagen con el nuevo sistema operativo con qemu-debootstrap
El siguiente paso será usar qemu-debootstrap para descargar los archivos necesarios. Esto es fácil si qemu-debootstrap está disponible, como es el caso en Ubuntu y sistemas operativos derivados. Si obtiene errores de comando no encontrado al ejecutar
qemu-debootstrap --help
, intente instalar el paquete apropiado, que se puede hacer en Ubuntu a través de:sudo apt-get install qemu-user-static
Para descargar todos los archivos necesarios y preparar el nuevo sistema operativo, ejecute el siguiente comando:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Tenga en cuenta que el primero
jessie
representa la versión del sistema operativo, mientras que el segundojessie
representa el directorio donde se instalarán los archivos. Ahora puede desmontar la imagen ya que el resto del trabajo debe realizarse en el teléfono. Hazlo a través de:sudo umount $(pwd)/jessie
Si no puede instalar qemu-debootstrap, consulte la siguiente sección.
Rellenar la imagen con el nuevo sistema operativo sin qemu-debootstrap
Omita esta sección si tiene qemu-debootstrap disponible. Sin embargo, aún necesitará una cinta antirrebote nativa para su arquitectura. Si esto resulta ser armhf, solo use la línea de comando anterior pero reemplace
qemu-debootstrap
pordebootstrap
. Si no, sigue esta sección.Para descargar todos los archivos necesarios para el nuevo sistema operativo, ejecute el siguiente comando:
Ahora puede desmontar la imagen ya que el resto del trabajo debe realizarse en el teléfono. Hazlo a través de:
sudo umount $(pwd)/jessie
Transfiere la imagen al teléfono
Ahora mejor cree un archivo tar a partir de esto que luego copie en su teléfono. No importa si el archivo se coloca en la tarjeta SD o en el almacenamiento interno. Cree el archivo en el escritorio usando:
tar -cvzf jessie.tar.gz IMAGE.img
Ahora, en su teléfono, active el soporte ssh para copiar la imagen. También puede hacerlo usando un cable USB. Dado que el servidor ssh se reinicia en cada reinicio, inicie el servicio ssh en el teléfono a través de:
sudo service ssh start
A continuación, copie la imagen a través de:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
donde la variable
COPYDIR
contiene el directorio donde se almacenará la imagen. Este comando asume que su nombre de usuario en el teléfono es phablet y el nombre de host del teléfono es ubuntu-phablet. Puede averiguarlo emitiendoecho $USER
yecho $HOSTNAME
por teléfono, respectivamente.Ahora solo tiene que extraer el archivo donde quiera que resida la imagen. Suponga que el directorio donde desea que se ubique la imagen está almacenado en la variable
IMAGEDIR
. Extraiga la imagen allí mediante el comando bash:( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Ahora puede eliminar el archivo:
rm $COPYDIR/jessie.tar.gz
Finalizando y usando la imagen en el teléfono
Si no activó el servidor ssh en el teléfono, hágalo ahora a través de:
sudo service ssh start
A continuación, monte su imagen en un directorio de su elección (en este caso "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Ahora, ingrese su chroot por primera vez a través de:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Si tenía qemu-debootstrap disponible en su computadora, ya está. Use los 2 comandos anteriores para conectarse a su chroot. Si no, aún debe ejecutar el siguiente comando una vez que esté dentro de su chroot, para configurar correctamente el sistema operativo:
/debootstrap/debootstrap --second-stage
Resumen de cómo acceder al chroot
Si seguiste los pasos anteriores, deberías poder acceder a tu chroot usando este simple script en el teléfono:
Primero debe ingresar a su propio teléfono desde el teléfono debido a las restricciones de aparición de la aplicación de terminal. La aplicación de terminal solo puede ejecutar archivos binarios en ciertas ubicaciones y ni su directorio de inicio ni la tarjeta SD están entre ellos. El servicio ssh, sin embargo, no tiene tales restricciones.
fuente
Hacer que el sistema de archivos raíz del teléfono se pueda escribir
Para volver a montar el sistema de archivos raíz como grabable, ejecute el siguiente comando en su teléfono (descargue la aplicación de terminal si aún no lo ha hecho):
Tenga en cuenta que después de reiniciar su teléfono,
/
vuelve a ser de solo lectura . Si quieres que esto sea permanente, cambia/etc/fstab
. Sin embargo, Ubuntu touch en el BQ aún no está en el repositorio principal del brazo de Ubuntu. Instalar cosas comotree
olibreoffice
no funcionará todavía. Pueden estar en la última versión de desarrollo.Ejecutando la última versión de desarrollo de Ubuntu
(tiene más beneficios en el repositorio, como herramientas de línea de comandos y tal)
¿Cómo ejecutar la última versión de desarrollo táctil de Ubuntu en el teléfono bq?
Arreglando cosas cuando rompes todo
Cuando rompes las cosas por completo, puedes volver a actualizar tu dispositivo .
fuente