adblock check

Еще один способ установки приложения Link2SD на Lenovo Tab 3 8 Plus

В предыдущей статье «Проблема перемещения приложений на SD карту» я поделился трудностями, стоящими перед пользователями желающими решить проблему нехватки внутренней памяти на телефонах, и в общем-то для меня и моего планшета задача казалось неразрешимой, но прошло время и я нашел решение для моего планшета Леново Таб 3 8 Плюс (модель TB-8703X), которое я хочу привести в рамках этой статьи.

Идея установки довольна проста: найти на планшете какой-нибудь каталог, в который можно записать рукотворный скрипт по поддержке приложения Link2SD, причем он должен запускаться в конце загрузки и перед запуском самой системы. В нем надо организовать всевозможную поддержку данного приложения.

Вроде бы все просто.

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

Итак мы имеем:

Планшет Lenovo Tab 3 8 Plus (модель TB-8703x)

OS Android Marshmallow v.6.0.1

Процессор qualcomm snapdragon 625

Размер внутренней памяти 16 GB

Дополнительно я купил SD-карту фирмы Samsung — 64.0 GB, class 10.

Вспомогательные требования:

  • Планшет должен быть рутирован
  • Установлен ADB — ошибка каталог для размещения скрипта /data/adb/service.d — создает magisk
  • Shell для создания скриптов

Инструменты (для удобства):

  • Эмулятор терминала (у меня termoneplus)
  • Explorer (у меня TotalCommander)
  • Apk Inspector или Apk Analyser (но можно обойтись)

У меня приложение com.buak.Link2SD_apkdone.com.apk или другое со словами Link2SD внутри.

Итак начнем, с формирования скрипта поддержки:

  1. Разбейте вашу SD-карту на два первичных раздела, первый отформатируйте FAT32, второй — ext4, вставьте в планшет. У меня 32 Гб и 30 Гб.
  2. Установите Link2SD (все равно нужен), если работает, то возрадуемся, на этом все.
  3. Если не работает, попробуем по другому:
    У меня стоит Shell /system/bin/sh, думаю и у вас тоже. К сожалению, целый ряд причин делает работу с init.d, написание и отладку скриптов чрезвычайно неудобной, не работает awk, stdin, stdout,… .
    Поэтому я отказался от этого каталога и остановился на каталоге: /data/adb/service.d
    В качестве logfile-а я взял /data/local/tmp/log.txt.
  4. С помощью ApkInspector или ApkAnalyser определите каталог данных приложения Link2SD
    (Это будет Data Dir или Data Path) , если у вас их нет, просто откройте в Total Commander каталог
    /data/user/0/com.buak.Link2SD (после '0' название вашего продукта), откройте подкаталог /files, возьмите на просмотр/редактирование файл init-link2sd.sh , у вас будет что-то наподобие:
    mount -t ext4 -o,noatime /dev/block/mmcblk1p2 /data/sedext2 1>>$Log 2>>$Log
    mount -t ext4 -o,noatime /dev/block/vold/public:179_66 /data/sedext2 1>>$Log 2>>$Log
    Внимание
    : названия устройств сохраняйте буквально.
    Для правильной работы приложения Link2SD, обе команды должны быть выполнены, если ваша SD-карта подготовлена правильно, то по меньшей мере первый диск /dev/block/mmcblk1p2 должен быть в списке устройств и быть в списке смонтированных устройств (команда mount без аргументов), то есть должна существовать точка монтирования-каталог /data/sdext2. Вторая команда монтирует этот же раздел к специальному файлу /dev/block/vold/public:179_66, он должен быть нулевой длины и находиться в каталоге /dev/block/vold/ с названием public:179_66. Если его не будет, и если у вас также как у меня "не все дома", то после перезагрузки он исчезнет. Это означает, что нам будет нужна следующая команда:
  5. Команда создания специального файла:
    mknod -m 600 /dev/block/void/public:179_66 b 179 66
    Она создает специальный файл устройства нулевой длины public:179_66 в каталоге /dev/block/void/
    Для того чтобы он сохранился и после перегрузки нужна следующая команда.
  6. Это команда перезапуска демона vold:
    setprop ctl.restart vold
    Пояснение: В каталоге /etc/ в файле vold.fstab написано:
    dev_mount sdcard /storage/sdcard1 auto /devices.msm_sdcc.2/mmc_host
    Эта команда связывает специальный файл с драйвером SD карты.

Таким образом мы составили скрипт link2sd-support.sh:



#!/system/bin/sh
set +e
echo "$(date) проверка специального файла устройства" > "/data/local/tmp/log.txt"
file=/dev/block/vold/public:179_66
test -b "$file"
res="$?"
echo «test -b file ended with $res» >>"/data/local/tmp/log.txt"
if [ $res -ne 0 ]
then
mknod -m 600 /dev/block/vold/public:179_66 b 179 66
echo «mknod ended eq $?» >>"/data/local/tmp/log.txt"
fi
echo "$(date) vold restart" >>"/data/local/tmp/log.txt"
setprop ctl.restart vold
echo «vold restarted» >> "/data/local/tmp/log."
sleep 2
echo "$(date)mounting..." >> "/data/local/tmp/log.txt"
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p2 /data/sdext2
echo «mount mmcblk1p2 ended with $?» >> "/data/local/tmp/log."
sleep 10
mount -t ext4 -o rw,noatime /dev/block/vold/public:179_66 /data/sdext2
echo «mount public ended with $?» >> "/data/local/tmp/log.txt"
mount >> "/data/local/tmp/log.txt"
echo «mount finished» >> "/data/local/tmp/log.txt"
chmod 773 /data/dalvik-cache


Внимание: После того как вы поместили скрипт link2sd-support.sh в каталог /data/adb/service.d не забудьте предоставить право на выполнение -rwxr-xr-x и владения (root). После перезагрузки Link2SD должен заработать, в противном случае смотрите лог и исправляйте ошибки.
Внимание: В случае успеха при просмотре total commander-ом, в приложении SD-maid вы должны увидеть новый диск "SD-карта 20.5G / 23.9G ... /data/sdext2", обратите на название диска SD-карта - слово карта на русском!? Кто-то из русскоговорящих есть и там!
Результат: У меня пользовательских приложений 31, после перемещения я получил выигрыш внутренней памяти 3.4 Гб

Содержимое и разбор лог файла (/data/local/tmp/log.text):


Содержимое лог файла (/data/local/tmp/log.text):
echo "$(date) проверка специального файла устройства" > "/data/local/tmp/log.txt"

Sun Sep 27 17:26:06 ALMT 1970 проверка специального файла устройства
как видите в момент выдачи этого эха дата еще не рабоате — дата начала эпохи
file=/dev/block/vold/public:179,66
test -b "$file"
res="$?"
echo «test -b file ended with $res» >>"/data/local/tmp/log.txt"

test -b file ended with 1 результат проверки наличия спец.файла равен 1, значит файла нет, выполянем команду создания спец.файла
if [ $res -ne 0 ]
then
mknod -m 600 /dev/block/vold/public:179_66 b 179 66
echo «mknod ended eq $?» >>"/data/local/tmp/log.txt"
fi

mknod ended eq 0
Это сообщение подтверждает успешное выполнение операции создания спецюфайла

echo "$(date) vold restart" >>"/data/local/tmp/log.txt"

Fri Jan 20 20:20:32 ALMT 2023 vold restart
как видите дата пришла в порядок
setprop ctl.restart vold
echo «vold restarted» >> "/data/local/tmp/log.
vold restarted

перезапуск vold сделан
echo "$(date)mounting..." >> "/data/local/tmp/log.txt"
Fri Jan 20 20:20:34 ALMT 2023mounting...
монтирование началось...
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p2 /data/sdext2
echo «mount mmcblk1p2 ended with $?» >> "/data/local/tmp/log.
mount mmcblk1p2 ended with 0

первая команда монтирования завершилась успешно
sleep 10
mount -t ext4 -o rw,noatime /dev/block/vold/public:179_66 /data/sdext2
echo «mount public ended with $?» >> "/data/local/tmp/log.txt"
mount public ended with 255
вторая команда монтирования не выполнилась
/* особенность выполнения 2-х команд mount с одной точкой монтирования вторая команда дает сообщение «device or resource busy»
небольшая задержка (2-10 msec) ничего не меняет, большая задержка (1000 msec) скорее всего выполнение скрипта прекращается, что в самом деле происходит не знаю.
Однако есть особенность, если /dev/block/mmcblk1p2 есть всегда, то достаточно отмонтировать его вручную один раз, он будет в наличии и после перезагрузки и может его не надо больше монтировать, /dev/block/vold/public:179_66 при перезагрузке каждый раз удаляется, поэтому монтировать его, на всякий случай, нужно раньше другого. Хотя диск SD-карта уже есть и отображен на /data/sdext2, так что ошибка монтирования в скрипте не отражается на его наличии. Похоже демон vold вносит их в список устройств (device list) и они монтируются автоматически. Это мое предположение, те не менее Link2SD работает. Я перенес 30 моих приложений и сэкономил 3.4 Гб.
*/
mount >> "/data/local/tmp/log.txt"

rootfs on / type rootfs (ro,seclabel,size=1353428k,nr_inodes=338357)
tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,size=1459096k,nr_inodes=364774,mode=755)
devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,seclabel,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,seclabel,relatime)
none on /acct type cgroup (rw,relatime,cpuacct)
none on /sys/fs/cgroup type tmpfs (rw,seclabel,relatime,size=1459096k,nr_inodes=364774,mode=750,gid=1000)
tmpfs on /mnt type tmpfs (rw,seclabel,relatime,size=1459096k,nr_inodes=364774,mode=755,gid=1000)
none on /dev/cpuctl type cgroup (rw,relatime,cpu)
/dev/block/bootdevice/by-name/system on /system type ext4 (ro,seclabel,relatime,discard,data=ordered)
/dev/block/bootdevice/by-name/cache on /cache type ext4 (rw,seclabel,nosuid,nodev,relatime,data=ordered)
/dev/block/bootdevice/by-name/persist on /persist type ext4 (rw,seclabel,nosuid,nodev,relatime,data=ordered)
/dev/block/bootdevice/by-name/dsp on /dsp type ext4 (ro,seclabel,nosuid,nodev,relatime,data=ordered)
/dev/block/bootdevice/by-name/modem on /firmware type vfat (ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=437,iocharset=iso8859-1,shortname=lower,errors=remount-ro)
tmpfs on /storage type tmpfs (rw,seclabel,relatime,size=1459096k,nr_inodes=364774,mode=755,gid=1000)
tmpfs on /sbin type tmpfs (rw,seclabel,relatime,size=1459096k,nr_inodes=364774,mode=755)
none on /config type configfs (rw,relatime)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
/dev/block/dm-0 on /data type ext4 (rw,seclabel,nosuid,nodev,relatime,discard,noauto_da_alloc,data=ordered)
/sbin/.magisk/block/system on /sbin/.magisk/mirror/system type ext4 (ro,seclabel,relatime,discard,data=ordered)
/sbin/.magisk/block/data on /sbin/.magisk/mirror/data type ext4 (rw,seclabel,relatime,discard,noauto_da_alloc,data=ordered)
/sbin/.magisk/block/data on /sbin/.magisk/modules type ext4 (rw,seclabel,relatime,discard,noauto_da_alloc,data=ordered)
/sbin/.magisk/block/data on /system/app/PhaseBeam/PhaseBeam.apk type ext4 (rw,seclabel,relatime,discard,noauto_da_alloc,data=ordered)
/dev/block/mmcblk1p2 on /data/sdext2 type ext4 (rw,seclabel,noatime,data=ordered)
/dev/fuse on /mnt/runtime/default/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /storage/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /mnt/runtime/read/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /mnt/runtime/write/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
echo «mount finished» >> "/data/local/tmp/log.txt"
mount finished
chmod 773 /data/dalvik-cache


Присылайте вопросы по мере их возникновения. Постараюсь ответить.


С уважением,
Радмир.
Сейчас у меня на Link2SD памяти доступно 24 Гб и используется 4.6 Гб

Еще один способ установки приложения Link2SD на Lenovo Tab 3 8 Plus

Radmir1948 Radmir1948
Пользователь
7 комментариев по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
Meninwhite 1 год
Я дико извиняюсь, но к чему этот геморрой? У меня такой же планшет, я накатил Линейку с 10 андроидом и стоит карта на 32 Гб. В принципе, хватает и проблем с памятью нет.
Radmir1948 1 год
Автор
Извинения принимаются,
Мой планшет не дает возможности сделать разблокировку загрузчика, в итоге я искал другое решение.
С уважением,
Радмир.