Как получить больший корневой раздел на Touch

9

Я пытаюсь заставить Touch (14.10) работать как сервер Ubuntu. Однако корневой раздел занимает всего 2 ГБ и его недостаточно для пакетов, которые мне нужно установить. Есть ли способ получить больше места на корневом разделе?

До сих пор я пробовал:

  • resize2fs в / dev / loop0 не будет работать, так как ядро ​​не поддерживает онлайн изменение размера, и я не могу размонтировать root (ro не обрезает его, даже с -f).

  • Добавление 2 ГБ в конец /userdata/ubuntu.img работает, но resize2fs для файла не помогает.

user319608
источник
Это очень интересный вопрос для нового пользователя. Добро пожаловать в сообщество.
Акива

Ответы:

1

У меня была похожая проблема, в итоге я решил переместить ее /usrв /home/usr( /homeмонтируется из файловой системы 14G, что дает мне много места для дополнительных пакетов).

Это немного хакерский способ сделать это, но мне кажется, что это работает. Следующие примеры кода используются $для указания того, что команда должна выполняться от имени обычного пользователя, и #для указания роли пользователя root (которая может быть получена с помощью sudo или loggig от имени пользователя root).

  1. Установите пароль для пользователя root, вам понадобится возможность войти в систему как root, если вы что-то испортили своим /usr/bin/sudo. Для этого:

    $ sudo su
    # passwd
    
  2. Скопируйте содержимое с /usrсохранением прав собственности и разрешений:

    $ cd /usr
    $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
    
  3. Следующим логическим шагом было бы использовать fstabмонтирование /home/usrкак /usrпри загрузке, однако все изменения, которые я пытался внести в, fstabисчезали после перезагрузки Ubuntu. Поэтому я создал простой скрипт для монтирования и сохранил его как /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 
    

    CHMOD линия нужна, как я заметил , что suid bitэто иногда не хватает после монтажа. Список файлов, для которых был suid bitустановлен этот параметр, можно найти, запустив # find /usr -user root -perm -4000исходный /usrкаталог. Обратите внимание, что если вы позже установите что-либо, которое использует, suid bitоно может сломаться, если вы не добавите его в список.

    Вам нужно будет создать символическую ссылку /etc/rcS.dдля bind.sh:

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

    Примечание: вы можете выбрать номер, отличный от 36, в зависимости от вашего состояния /etc/rcS.d.

    В качестве альтернативы вы можете отредактировать, /lib/init/fstabкак описано здесь, чтобы иметь постоянные изменения в fstab.

  4. После перезагрузки системы должна быть в настоящее время используют в /home/usrкачестве /usrтак что надеюсь , вы должны иметь больше места для дополнительных пакетов. Обратите внимание, что старый /usrвсе еще существует, но недоступен, пока новый каталог смонтирован.

    В случае, если что-то пойдет не так, вы можете вернуться в предыдущее состояние, переименовав символическую ссылку /etc/rcS.dи перезагрузившись:

     # mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh
    
belickim
источник
Увидев «Xstart» в предложенном вами решении, я подумал, что это не то, что вы делали на устройстве Ubuntu Touch, не так ли?
Крис Джейс
4

Это решение сработало для меня:

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

По сути, это супер-простой скрипт установки KDE Plasma Mobile. Просто запустите его, вздремните, и вы получите корневой раздел размером 6 ГБ.

tusing
источник
Вот постоянная ссылка , так как ссылка на ресурс первоначального сломана: github.com/KDE/plasma-phone-dev-setup/commit/...
Aᴄʜᴇʀᴏɴғᴀɪʟ
2

Вот самый быстрый способ, которым я решил это сделать.

Предупреждение : это может сломать ваш телефон, если набрать неправильно. Перед началом убедитесь, что у вас есть полные резервные копии, и вы готовы совершать ошибки в случае потери всех данных на вашем телефоне. В этом примере команда изменяет размер корневой файловой системы до 6 ГБ, поэтому, если она уже больше этой, она будет усечена, и ваш телефон, вероятно, станет не загружаемым (до повторного создания образа). Используйте эту команду, только если образ корневой файловой системы меньше 6 ГБ (по умолчанию Ubuntu Touch - 2 ГБ).

$ sudo -s
# dd if=/dev/null of=/userdata/ubuntu.img bs=1M seek=6000 count=0
# resize2fs -f /userdata/ubuntu.img
# reboot
Даниэль ван Вугт
источник
Можете ли вы объяснить мне немного лучше, как это работает?
Алко
@Alko, здесь также более полный ответ, содержащий информацию для Touch.
Скрудж МакДак
0

Хорошо, вот способ, которым я сделал это на моем meizu pro5. Ваш пробег может меняться.

О, и вы можете кирпич свой телефон.

Возьмите это руководство в качестве подсказки для вашего пути следования. Не возвращайся плакать.

Имейте свежий телефон, сделанный ubuntu-device-flash. В телефоне у вас должна быть SD-карта, достаточно большая, чтобы вместить fs из раздела userdata плюс 512M плюс 700M для пользовательского раздела и раздела кеша.

  • поставь twrp3.0 в качестве образа восстановления.
  • используйте fdisk -l / dev / block / sda, чтобы увидеть разделы.
  • сохраните этот отчет. Вы должны иметь последние 4 раздела как системные, пользовательские, кеш и пользовательские данные.
  • mkdir / tmp / userdata
  • mount / dev / block / sda44 (для меня это было 44) / tmp / userdata
  • CD / TMP
  • tar -czf /external_sd/userdata.tar.gz userdata
  • umount / tmp / userdata
  • дд если = / dev / block / sda43 из = / externa_sd / cache.img
  • дд если = / dev / block / sda42 из = / externa_sd / custom.img

Теперь вы сохранили данные, теперь, чтобы восстановить разделы, мы будем использовать fdisk из ubuntu, так как fdisk из twrp недостаточно хорош.

  • 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

Вы удаляете 41,42,43,44 разделов и создаете:

  • новый 41, начиная с того же места, но больше.
  • новый 42, начинающийся после 41 с тем же самым размером как старый 42.
  • новый 43, начинающийся после 42 с тем же самым размером как старый 43.
  • новый 44, начинающийся после 43 и заканчивающийся в том же секторе, что и старый 44.
  • сохранить новую таблицу разделов
  • umount / tmp / ubuntu

Положите обратно пользовательские данные, кастомы и кеш.

  • дд если = / externa_sd / cache.img из = / dev / block / sda43
  • дд если = / externa_sd / custom.img из = / dev / block / sda42
  • создайте новый ext4 на 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
  • размонтирование / система
  • увеличьте системный раздел: resize2fs / dev / block / sda41

Теперь у вас должен быть больший корневой раздел в вашей системе Ubuntu-Touch.

Радоваться, веселиться.

Е. Тимотей
источник
0

После некоторой игры, вот что вам нужно знать и делать.

Ubuntu Touch загружается с устройства Android, поэтому разделы должны быть апропиаты.

Система Android идентифицирует разделы по метке раздела .

У вас есть для meizu pro 5 следующие разделы: система (корневой раздел), кэш (используется для обновлений Ubuntu, на нем должно быть около 1 ГБ), пользовательский (не знаю, для чего используется), пользовательские данные (используется для / home и много других папок, которые монтируются с привязкой к разным частям рута)

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

Поскольку у вас много привязок к корню, вы должны изменить разделы восстановления формы.

Первая ловушка , образ восстановления по умолчанию для Ubuntu не включен adb. Я использовал TWRP 3.0.

Второй недостаток - утилита TWRP fdisk недостаточно хороша, это вариант busybox и в ней нет команд модификации. Так что просто сделайте копию (с помощью dd из системного образа в файл, чтобы вы могли смонтировать его как устройство петли) системного раздела на SD-карте, смонтируйте его, создайте с помощью mknod / dev / sda в этом монтировании и chroot / sbin / FDISK

Теперь вы можете играть с разделами. Только будьте осторожны, чтобы не испортить ничего, кроме четырех целевых разделов. Не забудьте поставить имена на ярлыках раздела.

Все четыре раздела ext4 делают файловые системы, и тогда вы сможете смонтировать их из меню TWRP. Если вы только что увеличили системный раздел, вы сможете уйти с изменением размера fs.

Вы можете переделать разделы, а затем просто перепрошить систему Ubuntu с помощью ubuntu-device-flash.

Е. Тимотей
источник