Android монтирует файловую систему с разрешением на запись

Android-устройство, которое я использую, не удерживает sqlite3 на нем, поэтому я подумал push его на устройство после pull его передачи с AVD.

У меня не было проблем с извлечением его из AVD, хотя я не могу передать его на устройство, так как мне нужно включить разрешение на запись. Я пытался следовать sqlite3: не найден

Я попробовал следующее

$ adb -d shell
$ mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=111 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/usb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /app-cache tmpfs rw,relatime,size=7168k 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p9 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p7 /cache ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered
/dev/block/mmcblk0p1 /efs ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered 0
nil /sys/kernel/debug debugfs rw,relatime 0 0
/dev/block/mmcblk0p10 /data ext4 rw,nosuid,nodev,noatime,barrier=1,data=ordered,
/dev/block/mmcblk0p4 /mnt/.lfs j4fs rw,relatime 0 0
/dev/block/vold/179:11 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,noatime,n
epage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro,discard 0

Я перешел по этой ссылке и попытался смонтировать файловая система следующим образом, но я получил ошибку разрешения.

$ mount -o rw,remount -t yaffs2 /dev/block/mmcblk0p9 /system
mount: Operation not permitted 

Любая подсказка, что необходимо сделать, чтобы push sqlite3 в устройство Android по причинам отладки?


person Mr.    schedule 24.04.2012    source источник


Ответы (3)


Изменить: нашел лучшее решение

На хост-компьютере (Linux или Windows PC) выполните следующие команды.

>> adb root
>> adb remount

remount по умолчанию перемонтирует раздел /system с помощью rw, если у вас есть разрешения.

Упомянутые ниже Примечания 1 и 2 по-прежнему применимы.


Старый способ

Чтобы перемонтировать смонтированную систему, вам необходимо иметь привилегии root. Сделайте su. Вы войдете в корневой режим. Затем выполните приведенную ниже команду. Это сработает, я делал это много раз.

Итак, вот шаги:

 adb shell 
 su
 mount -o rw,remount /system

Примечание 1. Чтобы выполнить команды su или adb root, ваше устройство должно быть рутировано и на нем должен быть установлен исполняемый файл su. Если команда su выполнена успешно, приглашение терминала изменится с $ на #.

Примечание 2. В последних мобильных устройствах безопасность была усилена, и даже после рутирования телефона adb remount не работало. Насколько я знаю, решения для него пока нет.

person mk..    schedule 24.04.2012
comment
Во-первых, спасибо за ваш ответ. Я знаю, что мне нужно использовать режим суперпользователя (su), но мне придется рутировать мое устройство. Есть ли способ обойти это? Я просто хочу скопировать двоичный файл sqlite3 для отладки. - person Mr.; 24.04.2012
comment
Если вы хотите использовать библиотеку sqlite с каким-то конкретным приложением, вы можете включить ее в папку jni, собрать ее с помощью Android NDK, а затем использовать внутри приложения. Да, это возможно. Вы можете сослаться на решение, которое я разместил здесь stackoverflow.com/questions/10169336/ Но при этом только ваше приложение может использовать sqlite. - person mk..; 24.04.2012
comment
Вы пробовали это с рутированным Android-устройством под управлением LineageOS? У меня постоянно возникают проблемы с перемонтированием файловой системы в режиме RW. Хотя у меня есть root-права. Любые идеи? - person warfreak92; 15.09.2017
comment
LineageOS - не знаю, что это значит. Но сбой может быть из-за дополнительной безопасности, принятой OEM-производителями, или может быть из-за нарушения selinux. Вы можете заглянуть в журнал ядра, чтобы узнать, кто отказывает вам в перемонтировании. - person mk..; 15.09.2017

Как указывает mk, на многих новых телефонах отключены adb root и adb remount. Мой LGL34C заблокирован, и adb в значительной степени полезен только для извлечения защищенных областей файловой системы.

Но есть способ обойти это (ВСЕГДА есть способ)! Конечно, вам все еще нужен рутированный телефон с установленным su. Установите терминал оболочки и/или службу sshd на телефон. Перемонтирование и запись в /system отлично работают из локальной ОС.

person Scott D    schedule 22.12.2014

основная причина, по которой у вас не было разрешений ... нет root для этого скрипта, поэтому $ su превращает это в #, я верю ....

person user7485198    schedule 29.01.2017