Come ottenere una partizione root più grande su Touch


9

Sto cercando di far funzionare Touch (14.10) come server Ubuntu. Tuttavia, la partizione di root ha solo 2 GB ed è insufficiente per i pacchetti che devo installare. C'è un modo per ottenere più spazio sulla partizione di root?

Finora ho provato:

  • resize2fs su / dev / loop0 non funzionerà poiché il kernel non supporta il ridimensionamento online e non riesco a smontare root (ro non lo taglia, anche con -f).

  • L'aggiunta di 2 GB alla fine di /userdata/ubuntu.img funziona, ma resize2fs sul file non aiuta.


Questa è una domanda molto interessante per un nuovo utente. Benvenuto nella community.
Akiva,

Risposte:


1

Ho avuto un problema simile, in ultima analisi, ho deciso di spostare la mia /usra /home/usr( /homeè montato dal file system 14G, che mi dà un sacco di spazio per i pacchetti aggiuntivi).

Questo è un po 'un modo hacker per farlo, ma sembra funzionare per me. Gli esempi di codice seguenti stanno usando $per indicare che il comando deve essere eseguito come utente normale e #per indicare il ruolo dell'utente root (che può essere acquisito da sudo o loggig come root).

  1. Imposta la password per l'utente root, dovrai accedere come root nel caso in cui rovini qualcosa con il tuo /usr/bin/sudo. Fare così:

    $ sudo su
    # passwd
    
  2. Copia i contenuti della /usrconservazione della proprietà e delle autorizzazioni:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. Il prossimo passo logico sarebbe usare fstabper montare /home/usrcome /usrall'avvio, tuttavia tutte le modifiche che ho provato a fare fstabstavano scomparendo dopo il riavvio di Ubuntu. Quindi ho creato un semplice script per eseguire il montaggio e salvato come /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 
    

    È necessaria la linea chmod, come ho notato che suid bitè a volte manca dopo il montaggio. L'elenco dei file su cui è stato suid bitimpostato è disponibile eseguendo # find /usr -user root -perm -4000nella /usrdirectory originale . Si noti che se in seguito si installa qualcosa che lo sta utilizzando suid bitpotrebbe non funzionare a meno che non venga aggiunto all'elenco.

    Dovrai creare un link simbolico /etc/rcS.dper bind.sh:

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

    Nota: potresti scegliere un numero diverso da 36 a seconda dello stato del tuo /etc/rcS.d.

    In alternativa puoi modificare /lib/init/fstabcome descritto qui per avere cambiamenti persistenti in fstab.

  4. Dopo aver riavviato il sistema ora dovrebbe essere in uso /home/usr, /usrquindi si spera che tu abbia più spazio per pacchetti aggiuntivi. Si noti che vecchio /usresiste ancora ma è irraggiungibile fintanto che la nuova directory è montata.

    Se qualcosa va storto, puoi tornare allo stato precedente rinominando il collegamento simbolico /etc/rcS.de riavviando:

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

vedere "Xstart" nella soluzione proposta mi ha fatto pensare che questo non è qualcosa che hai fatto su un dispositivo Ubuntu Touch, vero?
Kris Jace,


2

Ecco il modo più veloce che ho capito per farlo.

Avviso : questo potrebbe rompere il telefono se digitato in modo errato. Assicurati di disporre di backup completi prima di iniziare e di voler commettere errori nel caso in cui perdessi tutti i dati sul tuo telefono. Questo comando di esempio ridimensiona il filesystem di root a 6 GB, quindi se è già più grande di quello verrà troncato e il tuo telefono probabilmente diventerà non avviabile (fino a quando non viene ripreso l'immagine). Utilizzare questo comando solo se l'immagine del filesystem di root è inferiore a 6 GB (l'impostazione predefinita di 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

puoi spiegarmi un po 'meglio, come funziona?
Alko,

@Alko, ecco una risposta più completa contenente anche informazioni per Touch.
Paperone McDuck

0

Ok, ecco come l'ho fatto sul mio meizu pro5. Il tuo chilometraggio può variare.

O e si può mattone il telefono.

Prendi questa guida come suggerimento per il tuo percorso da seguire. Non tornare a piangere.

Avere un nuovo telefono realizzato da Ubuntu-Device-Flash. Nel telefono dovresti avere una scheda SD abbastanza grande da contenere le fs dalla partizione userdata più 512M più 700M per la partizione personalizzata e cache.

  • inserisci twrp3.0 come immagine di ripristino.
  • usa fdisk -l / dev / block / sda per vedere le partizioni.
  • salva quel rapporto. Dovresti avere le ultime 4 partizioni come sistema, personalizzato, cache e dati utente.
  • mkdir / tmp / userdata
  • mount / dev / block / sda44 (per me era 44) / tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz userdata
  • umount / tmp / userdata
  • dd if = / dev / block / sda43 di = / externa_sd / cache.img
  • dd if = / dev / block / sda42 di = / externa_sd / custom.img

Ora hai salvato i dati, ora per ripetere le partizioni useremo il fdisk da Ubuntu poiché il fdisk da twrp non è abbastanza buono.

  • 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

Eliminare le 41,42,43,44 partizioni e creare:

  • un nuovo 41 a partire dallo stesso posto ma più grande.
  • un nuovo 42 che inizia dopo il 41 con le stesse dimensioni del vecchio 42.
  • un nuovo 43 che inizia dopo 42 con le stesse dimensioni del vecchio 43.
  • un nuovo 44 che inizia dopo il 43 e termina nello stesso settore del vecchio 44.
  • salva la nuova tabella delle partizioni
  • umount / tmp / ubuntu

Ripristina i dati utente, personalizzati e cache.

  • dd if = / externa_sd / cache.img di = / dev / block / sda43
  • dd if = / externa_sd / custom.img di = / dev / block / sda42
  • crea un nuovo ext4 su 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
  • umount / system
  • aumentare ora la partizione di sistema: resize2fs / dev / block / sda41

Si dovrebbe ora avere una partizione root più grande nel sistema di ubuntu-touch.

Divertiti.


0

Dopo qualche altro gioco, ecco cosa devi sapere e fare.

Ubuntu touch si sta avviando da un dispositivo Android, quindi le porzioni devono essere apropiate.

Il sistema Android sta identificando le partizioni dall'etichetta della partizione .

Hai per meizu pro 5 questa partizioni: sistema (la partizione di root), cache (usata per gli upgrate da Ubuntu, dovresti avere circa 1G su di essa), personalizzata (non ho idea di cosa venga usata), userdata (usata per / home e molte altre cartelle che sono montate con associazione a diverse parti della radice)

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

Poiché hai molti vincoli alla radice, devi modificare il recupero del modulo delle partizioni.

Innanzitutto , l'immagine di ripristino predefinita per Ubuntu non è abilitata adb. Ho usato TWRP 3.0.

In secondo luogo , l'utilità fdisk di TWRP non è abbastanza buona, è la variante busybox e non ha i comandi di modifica. Quindi basta fare una copia (con dd dall'immagine di sistema in un file in modo da poterlo montare come dispositivo loop) della partizione di sistema sulla scheda SD, montarla, creare con mknod / dev / sda in questa montatura e chroot / sbin / fdisk

Ora puoi giocare con le partizioni. Fai solo attenzione a non rovinare nulla tranne le quattro partizioni di destinazione. Non dimenticare di mettere i nomi sulle etichette della partizione.

Tutte e quattro le partizioni sono ext4 che creano i filesystem e quindi dovresti essere in grado di montarli dal menu TWRP. Se hai appena fatto crescere la partizione di sistema, dovresti riuscire a scappare con il ridimensionamento di fs.

È possibile ripetere le partizioni e quindi semplicemente eseguire il reflash del sistema Ubuntu con ubuntu-device-flash.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.