Еще один способ установки приложения 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
- Shell для создания скриптов
Инструменты (для удобства):
- Эмулятор терминала (у меня termoneplus)
- Explorer (у меня TotalCommander)
- Apk Inspector или Apk Analyser (но можно обойтись)
У меня приложение com.buak.Link2SD_apkdone.com.apk или другое со словами Link2SD внутри.
Итак начнем, с формирования скрипта поддержки:
- Разбейте вашу SD-карту на два первичных раздела, первый отформатируйте FAT32, второй — ext4, вставьте в планшет. У меня 32 Гб и 30 Гб.
- Установите Link2SD (все равно нужен), если работает, то возрадуемся, на этом все.
- Если не работает, попробуем по другому:
У меня стоит Shell /system/bin/sh, думаю и у вас тоже. К сожалению, целый ряд причин делает работу с init.d, написание и отладку скриптов чрезвычайно неудобной, не работает awk, stdin, stdout,… .
Поэтому я отказался от этого каталога и остановился на каталоге: /data/adb/service.d
В качестве logfile-а я взял /data/local/tmp/log.txt. - С помощью 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. Если его не будет, и если у вас также как у меня "не все дома", то после перезагрузки он исчезнет. Это означает, что нам будет нужна следующая команда: - Команда создания специального файла:
mknod -m 600 /dev/block/void/public:179_66 b 179 66
Она создает специальный файл устройства нулевой длины public:179_66 в каталоге /dev/block/void/
Для того чтобы он сохранился и после перегрузки нужна следующая команда. - Это команда перезапуска демона 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):
К сожалению, мой спойлер на этом сайте не работает, поэтому разбор логфайла приложить не могу, если он нужен, запросите в комментарии, я отвечу на ваш комментарий.
Присылайте вопросы по мере их возникновения. Постараюсь ответить.
С уважением,
Радмир.
Сейчас у меня на Link2SD памяти доступно 24 Гб и используется 4.6 Гб