Como obter uma partição raiz maior no Touch


9

Estou tentando fazer o Touch (14.10) funcionar como um servidor Ubuntu. No entanto, a partição raiz tem apenas 2 GB e é insuficiente para os pacotes que preciso instalar. Existe alguma maneira de obter mais espaço na partição raiz?

Até agora eu tentei:

  • resize2fs em / dev / loop0 não funcionará, pois o kernel não suporta redimensionamento online e não consigo desmontar a raiz (o ro não a corta, mesmo com -f).

  • Adicionar 2 GB ao final do /userdata/ubuntu.img funciona, mas o redimensionamento de arquivos no arquivo não ajuda.


Essa é uma pergunta muito interessante para um novo usuário. Bem-vindo à comunidade.
Akiva

Respostas:


1

Eu tive um problema semelhante; finalmente, decidi mudar o meu /usrpara /home/usr( /homeé montado no sistema de arquivos 14G, o que me dá bastante espaço para pacotes adicionais).

Esta é uma maneira um tanto hackiana de fazer isso, mas parece funcionar para mim. Os exemplos de código a seguir estão sendo usados $para indicar que o comando deve ser executado como usuário normal e #para indicar a função de usuário raiz (que pode ser obtida pelo sudo ou pelo loggig como raiz).

  1. Defina a senha para o usuário root. Você precisará fazer o login como root, caso estrague tudo /usr/bin/sudo. Para fazer isso:

    $ sudo su
    # passwd
    
  2. Copie o conteúdo da /usrpreservação da propriedade e das permissões:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. O próximo passo lógico seria usar fstabpara montar /home/usrcomo /usrna inicialização, no entanto, todas as alterações que tentei fazer fstabdesapareceram após a reinicialização do Ubuntu. Então, eu criei um script simples para fazer a montagem e salvei 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 
    

    A linha de chmod é necessário, como eu notei que suid bité , por vezes, faltando depois da montagem. A lista dos arquivos que estavam suid bitconfigurados pode ser encontrada executando # find /usr -user root -perm -4000no /usrdiretório original . Observe que, se você instalar algo mais tarde no qual estiver usando, suid bitele poderá ficar danificado, a menos que você o adicione à lista.

    Você precisará criar um link simbólico /etc/rcS.dpara bind.sh:

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

    Nota: você pode escolher um número diferente de 36, dependendo do seu estado /etc/rcS.d.

    Como alternativa, você pode editar /lib/init/fstabcomo descrito aqui para ter alterações persistentes no fstab.

  4. Após a reinicialização, o sistema deve estar usando agora /home/usr, /usrassim esperamos que você tenha mais espaço para pacotes adicionais. Observe que o antigo /usrainda existe, mas é inacessível enquanto o novo diretório estiver montado.

    Caso algo dê errado, você pode retornar ao estado anterior renomeando o link simbólico /etc/rcS.de reinicializando:

     # mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh
    

ver "Xstart" na sua solução proposta me fez pensar que isso não é algo que você fez em um dispositivo Ubuntu Touch, é?
Kris Jace #


2

Aqui está a maneira mais rápida que eu descobri para fazer isso.

Aviso : Isso pode danificar seu telefone se você digitar incorretamente. Verifique se você possui backups completos antes do início e se está disposto a cometer erros caso perca todos os dados do seu telefone. Este comando de exemplo redimensiona o sistema de arquivos raiz para 6 GB, portanto, se ele já for maior do que isso, ele será truncado e o seu telefone provavelmente se tornará não inicializável (até ter uma nova imagem). Use este comando apenas se a imagem do sistema de arquivos raiz for inferior a 6 GB (o padrão do Ubuntu Touch é 2 GB).

$ sudo -s
# dd if=/dev/null of=/userdata/ubuntu.img bs=1M seek=6000 count=0
# resize2fs -f /userdata/ubuntu.img
# reboot

você pode me explicar um pouco melhor, como isso funciona?
Alko

@Alko, aqui está uma resposta mais completa que também contém informações para o Touch.
Scrooge McDuck

0

Ok, aqui está o jeito que eu fiz no meu meizu pro5. Sua milhagem pode variar.

O e você pode bloquear seu telefone.

Tome este guia como uma dica para o seu caminho a seguir. Não volte chorando.

Tenha um telefone novo feito pelo ubuntu-device-flash. No telefone, você deve ter um cartão SD grande o suficiente para armazenar os fs da partição de dados do usuário, mais 512M mais 700M para a partição personalizada e de cache.

  • coloque twrp3.0 como a imagem de recuperação.
  • use fdisk -l / dev / block / sda para ver as partições.
  • salve esse relatório. Você deve ter as últimas 4 partições como sistema, costume, cache e dados do usuário.
  • mkdir / tmp / userdata
  • mount / dev / block / sda44 (para mim eram 44) / tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz userdata
  • umount / tmp / userdata
  • dd if = / dev / block / sda43 de = / externa_sd / cache.img
  • dd if = / dev / block / sda42 de = / externa_sd / custom.img

Agora você salvou os dados. Agora, para refazer as partições, usaremos o fdisk do ubuntu, pois o fdisk do twrp não é bom o suficiente.

  • 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

Você exclui as partições 41,42,43,44 e cria:

  • um novo 41 começando no mesmo lugar, mas maior.
  • um novo 42 a partir de 41 com o mesmo tamanho do antigo 42.
  • um novo 43 começando após o 42 com o mesmo tamanho do antigo 43.
  • um novo 44 começando após o 43 e terminando no mesmo setor que o antigo 44.
  • salve a nova tabela de partição
  • umount / tmp / ubuntu

Coloque de volta os dados do usuário, personalizados e cache.

  • dd if = / externa_sd / cache.img de = / dev / block / sda43
  • dd if = / externa_sd / custom.img de = / dev / block / sda42
  • crie um novo ext4 em 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
  • quantidade / sistema
  • aumente agora a partição do sistema: resize2fs / dev / block / sda41

Agora você deve ter uma partição raiz maior no seu sistema ubuntu-touch.

Diverta-se.


0

Depois de mais algumas brincadeiras, aqui está o que você precisa saber e fazer.

O Ubuntu touch é inicializado a partir de um dispositivo Android, portanto as partições precisam ser apropriadas.

O sistema Android está identificando as partições pelo rótulo da partição .

Você tem para o meizu pro 5 estas partições: sistema (a partição raiz), cache (usado para atualizações do Ubuntu, você deve ter cerca de 1G), personalizado (sem ideia do que é usado), dados do usuário (usados ​​para / home e muitas outras pastas montadas com ligação a diferentes partes da raiz)

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): 

Como você tem muitas ligações à raiz, é necessário modificar as partições de recuperação.

Primeira armadilha , a imagem de recuperação padrão para o Ubuntu não está habilitada para adb. Eu usei o TWRP 3.0.

Segunda armadilha , o utilitário TWRP fdisk não é bom o suficiente, é a variante do busybox e não possui os comandos de modificação. Portanto, basta fazer uma cópia (com dd da imagem do sistema em um arquivo para montar como um dispositivo de loop) da partição do sistema no cartão SD, montá-la, criar com mknod / dev / sda nesta montagem e chroot / sbin / fdisk

Agora você pode jogar com partições. Apenas tome cuidado para não mexer em nada além das quatro partições de destino. Não se esqueça de colocar os nomes nos rótulos da partição.

Todas as quatro partições são ext4 criam os sistemas de arquivos e você deve montá-las no menu TWRP. Se você acabou de aumentar a partição do sistema, poderá fugir com o redimensionamento do fs.

Você pode refazer as partições e apenas atualizar o sistema Ubuntu com o ubuntu-device-flash.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.