Как переразбить разделы памяти Android и не получить кирпич: пошаговый мануал для чайников.

Напишу здесь, может кому пригодится.

Смысл в том, что установив Android 9.0 на планшет Nexus 7 2013 LTE (DEB) я не мог прошить GApps даже в редакции pico, где только один Play Market. При попытках это сделать вылезала ошибка 70, что значило, что в разделе памяти system недостаточно места, ибо она по умолчанию что-то около 860 Мб, а залитый мной Андроид 9 после установки оставлял там свободными пару мегабайт. Принял решение переразбить раздел system при помощи функции parted. Оговорюсь, что я в никс - подобных ОС - ламер, терминологией и командами без мануала не владею.


Этот способ приведён для справки и не приведёт к желаемому результату на всех без исключения устройствах. Так что прошу принять к сведению, но не следовать бездумно. И конечно же все риски за возможные негативные последствия вы несёте сами.


Установку драйверов и ADB для своих устройств вам придётся искать самостоятельно. Также не освещаются нюансы переноса разделов из чипа внутренней памяти на microSD карты и наоборот.


Значится порядок действий: загрузить на планшете кастомный рекавери, открыть в Windows Power Shell (или командной строке) папку с adb.exe, подключить кабелем планшет к ПК, желательно прямо к мат. плате, а не через разъём на лицевой панели, а то может не видеть ваше устройство.


Вводим команды:

.\adb root

".\" не нужно писать в простой командной строке, только в Power Shell.

.\adb shell

Далее уже в оболочке:

ls

Смотрим есть ли у нас этот модуль предустановленный (у меня не было) в результате:

~ # [6nls
ls
boot init.recovery.service.rc selinux_version
cache init.recovery.usb.rc sepolicy
charger license service_contexts
data oem sideload
default.prop proc sys
dev property_contexts system
etc recovery tmp
file_contexts res twres
fstab.flo root ueventd.flo.rc
init sbin ueventd.rc
init.rc sdcard usb-otg
init.recovery.hlthchrg.rc seapp_contexts vendor

Нету, значит нужно поставить. Качаем этот файл, закидываем его распакованным в папку к adb.exe.


Выходим из оболочки:

exit

Ставим модуль:

.\adb push PARTED /

Снова:

.\adb shell
ls

Получаем:

ls
PARTED init.recovery.service.rc sepolicy
boot init.recovery.usb.rc service_contexts
cache license sideload
charger oem sys
data proc system
default.prop property_contexts tmp
dev recovery twres
etc res ueventd.flo.rc
file_contexts root ueventd.rc
fstab.flo sbin usb-otg
init sdcard vendor
init.rc seapp_contexts
init.recovery.hlthchrg.rc selinux_version

И дадим ему права:

chmod 764 /PARTED

Всё, можно редактировать разделы памяти.


Посмотрим имеющиеся:

./PARTED /dev/block/mmcblk0

Я получил следующее:

GNU Parted 1.8.8.1.179-aef3
Using /dev/block/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.

После этого команда:

p

И получим перечень разделов памяти:

Model: MMC HBG4e (sd/mmc)
Disk /dev/block/mmcblk0: 31.3GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 67.1MB 157MB 89.6MB fat16 radio
2 201MB 204MB 3146kB modemst1
3 204MB 208MB 3146kB modemst2
4 268MB 284MB 15.4MB ext4 persist
5 336MB 336MB 799kB m9kefs1
6 336MB 337MB 799kB m9kefs2
7 403MB 403MB 799kB m9kefs3
8 403MB 407MB 3146kB fsg
9 470MB 471MB 1536kB sbl1
10 471MB 473MB 1536kB sbl2
11 473MB 475MB 2097kB sbl3
12 475MB 480MB 5243kB aboot
13 480MB 481MB 524kB rpm
14 537MB 554MB 16.8MB boot
15 604MB 605MB 524kB tz
16 605MB 605MB 1024B pad
17 605MB 606MB 1536kB sbl2b
18 606MB 608MB 2097kB sbl3b
19 608MB 613MB 5243kB abootb
20 613MB 614MB 524kB rpmb
21 614MB 614MB 524kB tzb
22 671MB 1552MB 881MB ext2 system
23 1552MB 2139MB 587MB ext4 cache
24 2147MB 2149MB 1049kB misc
25 2215MB 2225MB 10.5MB recovery
26 2282MB 2282MB 8192B DDR
27 2282MB 2282MB 8192B ssd
28 2282MB 2282MB 1024B m9kefsc
29 2349MB 2349MB 32.8kB metadata
30 2416MB 31.3GB 28.9GB ext4 userdata

Переведём отображение размеров с байтов на сектора, в одном мегабайте 2048 таких секторов:

u s

Получится:

Model: MMC HBG4e (sd/mmc)
Disk /dev/block/mmcblk0: 61079552s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 131072s 306143s 175072s fat16 radio
2 393216s 399359s 6144s modemst1
3 399360s 405503s 6144s modemst2
4 524288s 554287s 30000s ext4 persist
5 655360s 656919s 1560s m9kefs1
6 656920s 658479s 1560s m9kefs2
7 786432s 787991s 1560s m9kefs3
8 787992s 794135s 6144s fsg
9 917504s 920503s 3000s sbl1
10 920504s 923503s 3000s sbl2
11 923504s 927599s 4096s sbl3
12 927600s 937839s 10240s aboot
13 937840s 938863s 1024s rpm
14 1048576s 1081343s 32768s boot
15 1179648s 1180671s 1024s tz
16 1180672s 1180673s 2s pad
17 1180674s 1183673s 3000s sbl2b
18 1183674s 1187769s 4096s sbl3b
19 1187770s 1198009s 10240s abootb
20 1198010s 1199033s 1024s rpmb
21 1199034s 1200057s 1024s tzb
22 1310720s 3031039s 1720320s ext2 system
23 3031040s 4177919s 1146880s ext4 cache
24 4194304s 4196351s 2048s misc
25 4325376s 4345855s 20480s recovery
26 4456448s 4456463s 16s DDR
27 4456464s 4456479s 16s ssd
28 4456480s 4456481s 2s m9kefsc
29 4587520s 4587583s 64s metadata
30 4718592s 61079518s 56360927s ext4 userdata

И мы видим, что system можно расширить "вверх" до tzb, так как память там не размечена и "вниз", отщипнув часть раздела recovery.

Удаляем разделы 22 и 23 (хотите сохранить данные отсюда - делайте их дамп в рекавери):

rm 22
rm 23

Создаём новые с границами в нужных нам секторах и присваиваем им старые названия:

mkpart 22 1200058 3317759
mkpart 23 3317760 4177919
name 22 system
name 23 cache

Проверяем командой:

p

Успех, результат (показывает не в секторах, так как я отсоединял планшет перед этим по незнанию, разделы 22 и 23 ещё не отформатированы):

Model: MMC HBG4e (sd/mmc)
Disk /dev/block/mmcblk0: 31.3GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 67.1MB 157MB 89.6MB fat16 radio
2 201MB 204MB 3146kB modemst1
3 204MB 208MB 3146kB modemst2
4 268MB 284MB 15.4MB ext4 persist
5 336MB 336MB 799kB m9kefs1
6 336MB 337MB 799kB m9kefs2
7 403MB 403MB 799kB m9kefs3
8 403MB 407MB 3146kB fsg
9 470MB 471MB 1536kB sbl1
10 471MB 473MB 1536kB sbl2
11 473MB 475MB 2097kB sbl3
12 475MB 480MB 5243kB aboot
13 480MB 481MB 524kB rpm
14 537MB 554MB 16.8MB boot
15 604MB 605MB 524kB tz
16 605MB 605MB 1024B pad
17 605MB 606MB 1536kB sbl2b
18 606MB 608MB 2097kB sbl3b
19 608MB 613MB 5243kB abootb
20 613MB 614MB 524kB rpmb
21 614MB 614MB 524kB tzb
22 614MB 1699MB 1084MB system
23 1699MB 2139MB 440MB cache
24 2147MB 2149MB 1049kB misc
25 2215MB 2225MB 10.5MB recovery
26 2282MB 2282MB 8192B DDR
27 2282MB 2282MB 8192B ssd
28 2282MB 2282MB 1024B m9kefsc
29 2349MB 2349MB 32.8kB metadata
30 2416MB 31.3GB 28.9GB ext4 userdata

Далее идём в рекавери на примере TWRP: wipe-advanced wipe-repair or change file system, где по очереди форматируете system в ext2, а cache в ext4.


Таким образом я смог установить GApps pico и в системном разделе осталось около 40 мб свободными.

Источники: раз и два.

Текст мой, размещён также на форуме 4pda в соответствующей теме.


Всем спасибо за внимание! Кто дочитал, тот - молодец!

Android

752 поста7.6K подписчика

Добавить пост

Правила сообщества

Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.


В сообществе запрещены:

* заведомо деструктивные рекомендации

* бессодержательная переписка, особенно с переходом на личности собеседников

* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)

* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)


Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".


Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00