Cómo obtener una partición raíz más grande en Touch

9

Estoy tratando de hacer que Touch (14.10) funcione como un servidor Ubuntu. Sin embargo, la partición raíz es de solo 2 GB y es insuficiente para los paquetes que necesito instalar. ¿Hay alguna forma de obtener más espacio en la partición raíz?

Hasta ahora he intentado:

  • resize2fs en / dev / loop0 no funcionará ya que el núcleo no admite el cambio de tamaño en línea y no puedo desmontar root (ro no lo corta, incluso con -f).

  • Agregar 2 GB al final de /userdata/ubuntu.img funciona, pero resize2fs en el archivo no ayuda.

usuario319608
fuente
Esta es una pregunta muy interesante para un nuevo usuario. Bienvenido a la comunidad.
Akiva

Respuestas:

1

Tenía un problema similar, en última instancia, decidí mover /usra /home/usr( /homese monta a partir del sistema de archivos 14G, que me da un montón de espacio para paquetes adicionales).

Esta es una forma un poco complicada de hacer esto, pero parece funcionar para mí. Los siguientes ejemplos de código se utilizan $para indicar que el comando debe ejecutarse como usuario normal y #para indicar el rol de usuario root (que puede ser obtenido por sudo o loggig como root).

  1. Establezca la contraseña para el usuario root, necesitará la capacidad de iniciar sesión como root en caso de que arruine algo con su /usr/bin/sudo. Para hacerlo:

    $ sudo su
    # passwd
    
  2. Copie el contenido de /usrpreservar la propiedad y los permisos:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. El siguiente paso lógico sería usar fstabpara montar /home/usrcomo /usren el arranque, sin embargo, todos los cambios que intenté hacer fstabdesaparecieron después de reiniciar Ubuntu. Así que creé un script simple para hacer el montaje y lo guardé como /etc/init.d/bind.sh:

    #!/bin/sh
    if [ "X$1" = "Xstart" ]; then
      echo "Binding /home/usr to /usr..."
      chmod 4755 /home/usr/bin/passwd /home/usr/bin/chsh /home/usr/bin/pkexec /home/usr/bin/sudo /home/usr/bin/newgrp /home/usr/bin/gpasswd /home/usr/bin/chfn /home/usr/lib/pt_chown /home/usr/lib/eject/dmcrypt-get-device /home/usr/lib/openssh/ssh-keysign /home/usr/lib/dbus-1.0/dbus-daemon-launch-helper /home/usr/lib/policykit-1/polkit-agent-helper-1 /home/usr/lib/arm-linux-gnueabihf/oxide-qt/chrome-sandbox /home/usr/lib/arm-linux-gnueabihf/lxc/lxc-user-nic
      mount -o bind,suid /home/usr /usr
      echo "...done"
    fi 
    

    Se necesita la línea de chmod, como me di cuenta de que suid bites a veces faltan después del montaje. La lista de los archivos que tenían el suid bitconjunto activado se puede encontrar ejecutándose # find /usr -user root -perm -4000en el /usrdirectorio original . Tenga en cuenta que si instala algo más adelante que está utilizando suid bit, puede romperse a menos que lo agregue a la lista.

    Deberá crear un enlace simbólico /etc/rcS.dpara bind.sh:

     # ln -s /etc/init.d/bind.sh /etc/rcS.d/S36bind.sh
    

    Nota: es posible que desee elegir un número diferente de 36 dependiendo del estado de su /etc/rcS.d.

    Alternativamente, puede editar /lib/init/fstabcomo se describe aquí para tener cambios persistentes en fstab.

  4. Después de reiniciar, el sistema debería estar usando ahora /home/usr, /usrasí que con suerte debería tener más espacio para paquetes adicionales. Tenga en cuenta que el antiguo /usrtodavía existe pero es inalcanzable siempre que se monte el nuevo directorio.

    En caso de que algo salga mal, puede volver al estado anterior cambiando el nombre del enlace simbólico /etc/rcS.dy reiniciando:

     # mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh
    
belickim
fuente
ver "Xstart" en tu solución propuesta me hizo pensar que esto no es algo que hiciste en un dispositivo Ubuntu Touch, ¿verdad?
Kris Jace
2

Aquí está la forma más rápida que he descubierto para hacerlo.

Advertencia : Esto puede romper su teléfono si se escribe incorrectamente. Asegúrese de tener copias de seguridad completas antes de comenzar y esté dispuesto a cometer errores en caso de que pierda todos los datos en su teléfono. Este comando de ejemplo cambia el tamaño del sistema de archivos raíz a 6 GB, por lo que si ya es más grande, se truncará y es probable que su teléfono no se pueda iniciar (hasta que se vuelva a crear una imagen). Solo use este comando si la imagen del sistema de archivos raíz tiene menos de 6 GB (el valor predeterminado de Ubuntu Touch es 2 GB).

$ sudo -s
# dd if=/dev/null of=/userdata/ubuntu.img bs=1M seek=6000 count=0
# resize2fs -f /userdata/ubuntu.img
# reboot
Daniel van Vugt
fuente
¿Puedes explicarme un poco mejor cómo funciona esto?
Alko
@Alko, aquí también hay una respuesta más completa que contiene información para Touch.
Scrooge McDuck
0

Ok, esta es la forma en que lo hice en mi meizu pro5. Su kilometraje puede variar.

O y que puede ladrillo su teléfono.

Tome esta guía como una pista para seguir su camino. No vuelvas llorando.

Tener un nuevo teléfono hecho por ubuntu-device-flash. En el teléfono, debe tener una tarjeta SD lo suficientemente grande como para contener los archivos fs de la partición de datos de usuario más 512M más 700M para la partición personalizada y de caché.

  • Ponga twrp3.0 como imagen de recuperación.
  • use fdisk -l / dev / block / sda para ver las particiones.
  • guarda ese informe. Debe tener las últimas 4 particiones como sistema, personalizado, caché y datos de usuario.
  • mkdir / tmp / userdata
  • mount / dev / block / sda44 (para mí fue 44) / tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz userdata
  • umount / tmp / userdata
  • dd if = / dev / block / sda43 of = / externa_sd / cache.img
  • dd if = / dev / block / sda42 of = / externa_sd / custom.img

Ahora ha guardado los datos, ahora para rehacer las particiones usaremos el fdisk de ubuntu ya que el fdisk de twrp no es lo suficientemente bueno.

  • mkdir / tmp / ubuntu
  • mount -o loop /system/var/lib/lxc-andoid/system.img / tmp / ubuntu
  • mknod -m 666 b 8 0 / tmp / ubuntu / dev / sda
  • chroot / tmp / ubuntu / sbin / fdisk / dev / sda

Elimina las 41,42,43,44 particiones y crea:

  • un nuevo 41 a partir del mismo lugar pero más grande.
  • un nuevo 42 que comienza después de 41 con el mismo tamaño que el anterior 42.
  • un nuevo 43 que comienza después de 42 con el mismo tamaño que el antiguo 43.
  • un nuevo 44 que comienza después del 43 y termina en el mismo sector que el antiguo 44.
  • guardar la nueva tabla de particiones
  • umount / tmp / ubuntu

Vuelva a colocar los datos de usuario, personalizados y caché.

  • dd if = / externa_sd / cache.img of = / dev / block / sda43
  • dd if = / externa_sd / custom.img of = / dev / block / sda42
  • cree un nuevo ext4 en 44: mke2fs / dev / block / sda44
  • mount / dev / block / sda44 / tmp / userdata
  • cd / tmp
  • tar -xzf /external_sd/userdata.tar.gz
  • umount / tmp / userdata
  • umount / tmp / ubuntu
  • montaje / sistema
  • aumentar ahora la partición del sistema: resize2fs / dev / block / sda41

Usted debe ahora tener una partición root más grande en su sistema Ubuntu toque.

Que te diviertas.

E. Timotei
fuente
0

Después de jugar un poco más, esto es lo que necesitas saber y hacer.

Ubuntu touch se inicia desde un dispositivo Android, por lo que las particiones deben ser adecuadas.

El sistema Android está identificando las particiones por la etiqueta de partición .

Tiene para meizu pro 5 estas particiones: sistema (la partición raíz), caché (utilizado para las actualizaciones de Ubuntu, debe tener aproximadamente 1G), personalizado (no tengo idea de para qué se usa), userdata (usado para / home y muchas otras carpetas que están montadas con enlaces a diferentes partes de la raíz)

phablet@ubuntu-phablet:~$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.25.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.


Command (m for help): x

Expert command (m for help): p
Disk /dev/sda: 58.2 GiB, 62537072640 bytes, 15267840 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 16384 bytes
I/O size (minimum/optimal): 16384 bytes / 8192 bytes
Disklabel type: gpt
Disk identifier: 00042021-0408-4601-9DCC-xxxxxxxxxxx
First LBA: 6
Last LBA: 15267834
Alternative LBA: 15267839
Partitions entries LBA: 2
Allocated partition entries: 128

Device       Start      End Sectors Type-UUID                            UUID                                 Name      Attrs
/dev/sda1     1024     1279     256 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx D117F98E-6F2C-D04B-A5B2-xxxxxxxxxxxx private   
/dev/sda2     1280     1343      64 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 25718777-D0AD-7443-9E60-xxxxxxxxxxxx proinfo   
/dev/sda3     1344     1407      64 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 8A4BB8B4-E304-AE48-8536-xxxxxxxxxxxx misc      
/dev/sda21    2048     3071    1024 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 08992135-13C6-084B-9322-xxxxxxxxxxxx param     
/dev/sda22    3072     5119    2048 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 333A128E-D3E3-B94D-92F4-xxxxxxxxxxxx efs       
/dev/sda23    5120     5631     512 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx F20AA902-1C5D-294A-9177-xxxxxxxxxxxx pnv       
/dev/sda24    5632     6655    1024 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx DB88503D-34A5-3E41-836D-xxxxxxxxxxxx ldfw      
/dev/sda25    6656     7679    1024 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 012B3303-34AC-284D-99B4-xxxxxxxxxxxx dtb       
/dev/sda26    7680    13823    6144 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx FAEC2ECF-8544-E241-B19D-xxxxxxxxxxxx bootimg   
/dev/sda27   13824    22015    8192 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx F13A0978-B1B5-1A4E-8821-xxxxxxxxxxxx recovery  
/dev/sda28   22016    30207    8192 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx B710EB04-45B9-E94A-8D0B-xxxxxxxxxxxx bootlogo  
/dev/sda29   30208    35327    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx AD5EC4B6-2D9F-8544-9417-xxxxxxxxxxxx rstinfo   
/dev/sda30   35328    40447    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx CCEB0B18-39CB-D547-9DB7-xxxxxxxxxxxx mnv       
/dev/sda31   40448    45567    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx D4981A2B-0478-544E-9607-xxxxxxxxxxxx reserved1 
/dev/sda32   45568    50687    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 6D6C9A36-E919-264D-A9EE-xxxxxxxxxxxx reserved2 
/dev/sda33   50688    55807    5120 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 60B98C0E-BEAD-B043-9CC6-xxxxxxxxxxxx reserved3 
/dev/sda41   65536  7929855 7864320 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx F2ECCD60-9303-46B1-B193-xxxxxxxxxxxx system    
/dev/sda42 7929856  8060927  131072 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx DD8D25F3-92F2-4B24-9558-xxxxxxxxxxxx custom    
/dev/sda43 8060928  8323071  262144 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx 01573816-7EBF-4860-8AB7-xxxxxxxxxxxx cache     
/dev/sda44 8323072 15267834 6944763 EBD0A0A2-B9E5-4433-87C0-xxxxxxxxxxxx E15F5427-031C-4BB0-89D5-xxxxxxxxxxxx userdata  


Expert command (m for help): 

Debido a que tiene muchos enlaces a la raíz, debe modificar las particiones desde la recuperación.

Primer error , la imagen de recuperación predeterminada para Ubuntu no está habilitada para adb. Usé TWRP 3.0.

Segundo error, la utilidad TWRP fdisk no es lo suficientemente buena, es la variante busybox y no tiene los comandos de modificación. Así que solo haga una copia (con dd de la imagen del sistema a un archivo para poder montarla como un dispositivo de bucle) de la partición del sistema en la tarjeta SD, móntela, cree con mknod / dev / sda en esta montura y chroot / sbin / fdisk

Ahora puedes jugar con particiones. Solo tenga cuidado de no ensuciar nada más que las cuatro particiones de destino. No olvide poner los nombres en las etiquetas de la partición.

Las cuatro particiones son ext4 hacen los sistemas de archivos y luego debería poder montarlos desde el menú TWRP. Si acaba de aumentar la partición del sistema, debería poder escaparse cambiando el tamaño de fs.

Puede rehacer las particiones y luego volver a actualizar el sistema Ubuntu con ubuntu-device-flash.

E. Timotei
fuente