web-dev-qa-db-ja.com

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 

デバッグの理由でAdroidデバイスにPushsqlite3するために何をする必要があるかについての手がかりはありますか?

4
Mr.

編集:より良い解決策を見つけました

ホストマシン(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は機能しません。私の知る限り、これまでに利用できる解決策はありません。

20
mk..

権限がなかった主な理由... $ suがそれを#私が信じているように変えるので、そのスクリプトにルートがありません..。

0
user7485198

Mkが指摘しているように、多くの新しい電話ではadbrootとadbremountが無効になっています。私のLGL34Cはロックアウトされており、adbはファイルシステムの保護された領域をプルする場合にのみ役立ちます。

しかし、ISそれを回避する方法があります(常に方法があります)!もちろん、suがインストールされたルート化された電話が必要です。電話にシェル端末やsshdサービスをインストールしてください。再マウント/ systemへの書き込みは、ローカルOSから問題なく機能します。

0
Scott D