Jak uzyskać większą partycję root na Touch

9

Próbuję sprawić, aby Touch (14.10) działał jako serwer Ubuntu. Jednak partycja root ma tylko 2 GB i jest niewystarczająca dla pakietów, które muszę zainstalować. Czy jest jakiś sposób, aby uzyskać więcej miejsca na partycji root?

Do tej pory próbowałem:

  • resize2fs na / dev / loop0 nie będzie działać, ponieważ jądro nie obsługuje zmiany rozmiaru online i nie mogę odmontować root'a (ro nie wycina go, nawet z -f).

  • Dodanie 2 GB na końcu pliku /userdata/ubuntu.img działa, ale resize2fs w pliku nie pomaga.

użytkownik319608
źródło
To bardzo interesujące pytanie dla nowego użytkownika. Witaj w społeczności.
Akiva

Odpowiedzi:

1

Miałem podobny problem, ostatecznie zdecydowałem się przenieść /usrdo /home/usr( /homejest montowany z systemu plików 14G, co daje mi dużo miejsca na dodatkowe pakiety).

Jest to trochę hackerski sposób, aby to zrobić, ale wydaje mi się, że działa. Poniższe przykłady kodu służą $do wskazania, że ​​polecenie powinno być uruchamiane jako zwykły użytkownik oraz #do wskazania roli użytkownika root (którą można uzyskać poprzez sudo lub loggig jako root).

  1. Ustaw hasło dla użytkownika root, będziesz musiał zalogować się jako root na wypadek, gdybyś coś zepsuł /usr/bin/sudo. Aby to zrobić:

    $ sudo su
    # passwd
    
  2. Skopiuj zawartość /usrzachowania własności i uprawnień:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. Następnym logicznym krokiem byłoby użycie fstabdo montowania /home/usrjak /usrpodczas rozruchu, jednak wszystkie zmiany, które próbowałem wprowadzić do fstabznikały po ponownym uruchomieniu Ubuntu. Stworzyłem więc prosty skrypt do wykonania montażu i zapisałem go jako /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 
    

    Potrzebna jest chmod linia, jak zauważyłem, że suid bitjest czasami brakuje po montażu. Listę plików, które miały suid bitustawiony zestaw, można znaleźć, uruchamiając # find /usr -user root -perm -4000oryginalny /usrkatalog. Pamiętaj, że jeśli później zainstalujesz coś, z czego korzysta suid bit, może się zepsuć, chyba że dodasz go do listy.

    Musisz utworzyć symboliczny link /etc/rcS.ddla bind.sh:

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

    Uwaga: możesz wybrać inną liczbę niż 36 w zależności od stanu twojego /etc/rcS.d.

    Alternatywnie możesz edytować /lib/init/fstabzgodnie z opisem tutaj, aby mieć trwałe zmiany w fstab.

  4. Po ponownym uruchomieniu systemu powinno być teraz przy użyciu /home/usrjak /usrwięc mam nadzieję, że nie powinno być więcej miejsca na dodatkowe pakiety. Zauważ, że stare /usrnadal istnieje, ale jest niedostępne, dopóki nowy katalog jest podłączony.

    Jeśli coś pójdzie nie tak, możesz wrócić do poprzedniego stanu, zmieniając nazwę dowiązania symbolicznego /etc/rcS.di uruchamiając ponownie:

     # mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh
    
Belickim
źródło
wyświetlenie „Xstart” w proponowanym rozwiązaniu sprawiło, że pomyślałem, że nie zrobiliście tego na urządzeniu Ubuntu Touch, prawda?
Kris Jace
4

To rozwiązanie działało dla mnie:

https://github.com/plasma-mobile/plasma-phone-dev-setup/blob/master/usr/bin/resize-root-partition

Zasadniczo jest to bardzo prosty skrypt instalacyjny KDE Plasma Mobile. Wystarczy go uruchomić, zdrzemnąć się, a powinieneś mieć partycję root o pojemności 6 GB.

mrowienie
źródło
Oto permalink ponieważ link do oryginalnego źródła jest uszkodzony: github.com/KDE/plasma-phone-dev-setup/commit/...
Aᴄʜᴇʀᴏɴғᴀɪʟ
2

Oto najszybszy sposób, w jaki udało mi się to zrobić.

Ostrzeżenie : Niepoprawne wpisanie może spowodować uszkodzenie telefonu. Przed rozpoczęciem upewnij się, że masz pełne kopie zapasowe, i że możesz popełnić błędy w przypadku utraty wszystkich danych w telefonie. To przykładowe polecenie zmienia rozmiar głównego systemu plików na 6 GB, więc jeśli jest już większy, zostanie obcięty, a telefon prawdopodobnie przestanie się uruchamiać (dopóki nie zostanie ponownie zobrazowany). Użyj tego polecenia tylko wtedy, gdy obraz głównego systemu plików ma mniej niż 6 GB (domyślnie Ubuntu Touch to 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
źródło
czy możesz mi wyjaśnić trochę lepiej, jak to działa?
Alko
@ Alko, tutaj jest pełniejsza odpowiedź zawierająca również informacje dotyczące Touch.
Scrooge McDuck
0

Ok, oto jak to zrobiłem na moim meizu pro5. Twój przebieg może się różnić.

O i może cegła telefon.

Weź ten przewodnik jako wskazówkę, którą chcesz podążać. Nie wracaj płacząc.

Mieć nowy telefon wykonany przez ubuntu-device-flash. W telefonie powinieneś mieć kartę SD na tyle dużą, aby pomieścić fs z partycji danych użytkownika oraz 512 M plus 700 M dla partycji niestandardowej i pamięci podręcznej.

  • umieść twrp3.0 jako obraz odzyskiwania.
  • użyj fdisk -l / dev / block / sda, aby zobaczyć partycje.
  • zapisz ten raport. Powinieneś mieć ostatnie 4 partycje jako systemowe, niestandardowe, pamięć podręczną i dane użytkownika.
  • mkdir / tmp / userdata
  • mount / dev / block / sda44 (dla mnie było to 44) / tmp / userdata
  • cd / tmp
  • tar -czf /external_sd/userdata.tar.gz dane użytkownika
  • umount / tmp / userdata
  • dd if = / dev / block / sda43 of = / externa_sd / cache.img
  • dd if = / dev / block / sda42 of = / externa_sd / custom.img

Zapisałeś dane, teraz, aby powtórzyć partycje, użyjemy fdisk z Ubuntu, ponieważ fdisk z twrp nie jest wystarczająco dobry.

  • 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

Usuwasz 41,42,43,44 partycje i tworzysz:

  • nowy 41, zaczynając od tego samego miejsca, ale większy.
  • nowy 42 zaczynający się po 41 o tym samym rozmiarze co stary 42.
  • nowy 43 zaczynający się po 42 o tym samym rozmiarze co stary 43.
  • nowy 44, rozpoczynający się po 43 i kończący na tym samym sektorze, co stary 44.
  • zapisz nową tablicę partycji
  • umount / tmp / ubuntu

Odłóż dane użytkownika, niestandardowe i pamięć podręczną.

  • dd if = / externa_sd / cache.img of = / dev / block / sda43
  • dd if = / externa_sd / custom.img of = / dev / block / sda42
  • utwórz nowy ext4 na 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
  • powiększ teraz partycję systemową: resize2fs / dev / block / sda41

Państwo powinno teraz mieć większy partycja w systemie ubuntu-touch.

Baw się dobrze.

E. Timotei
źródło
0

Po dalszej grze tutaj jest to, co musisz wiedzieć i robić.

Ubuntu touch uruchamia się z urządzenia z Androidem, więc partycje muszą być odpowiednie.

System Android identyfikuje partycje na podstawie etykiety partycji .

Masz dla meizu pro 5 te partycje: system (partycja root), pamięć podręczna (używana do aktualizacji przez Ubuntu, powinieneś mieć na niej około 1G), niestandardowe (nie wiem, do czego służy), dane użytkownika (używane dla / home i wiele innych folderów, które są montowane z powiązaniem do różnych części katalogu głównego)

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

Ponieważ masz wiele powiązań z katalogiem głównym, musisz zmodyfikować partycje z odzyskiwania.

Po pierwsze pułap , domyślny obraz odzyskiwania dla Ubuntu nie jest włączony adb. Użyłem TWRP 3.0.

Druga pułapka , narzędzie fdisk TWRP nie jest wystarczająco dobre, jest to wariant busyboksa i nie ma poleceń modyfikacji. Więc po prostu zrób kopię (z dd z obrazu systemu do pliku, abyś mógł zamontować jako urządzenie pętlowe) partycji systemowej na karcie SD, zamontuj ją, utwórz za pomocą mknod / dev / sda w tym mount i chroot / sbin / fdisk

Teraz możesz grać z partycjami. Uważaj tylko, aby nie zepsuć niczego oprócz czterech docelowych partycji. Nie zapomnij umieścić nazw na etykietach partycji.

Wszystkie cztery partycje mają systemy plików ext4 i wtedy powinieneś być w stanie zamontować je z menu TWRP. Jeśli właśnie powiększysz partycję systemową, powinieneś być w stanie uciec od zmiany rozmiaru fs.

Możesz powtórzyć partycje, a następnie po prostu przeflashować system Ubuntu za pomocą ubuntu-device-flash.

E. Timotei
źródło