一个终端命令,用于根Android以读/写方式重新安装/系统

一个终端命令,用于根Android以读/写方式重新安装/系统,android,system,root,mount,Android,System,Root,Mount,我正在编写一个android应用程序,它需要在运行时将文件复制到“/system”分区。我有运行“su”的命令,可以成功地请求超级用户权限并以root用户身份运行命令。但我不知道如何使这个应用程序在多个设备上通用,因为mount命令可能会因实际安装/系统的位置而异。下面是最常使用的命令: mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 但我知道mtdblock3在某些设备上可能会有所不同(就这一点而言,我想yaffs2也是如

我正在编写一个android应用程序,它需要在运行时将文件复制到“/system”分区。我有运行“su”的命令,可以成功地请求超级用户权限并以root用户身份运行命令。但我不知道如何使这个应用程序在多个设备上通用,因为mount命令可能会因实际安装/系统的位置而异。下面是最常使用的命令:

mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
但我知道mtdblock3在某些设备上可能会有所不同(就这一点而言,我想yaffs2也是如此)。所以,我的问题是:是否有一个通用命令可以在所有手机上运行?或者有没有办法在运行时找出正确的参数?

您可以在不带参数的情况下运行mount命令,以便在构建mount命令之前获取分区信息。下面是一个mount命令的示例,该命令没有从我的HTC Hero输出参数

$ mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock3 /system yaffs2 rw 0 0
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=
1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,s
hortname=mixed,utf8,errors=remount-ro 0 0
我使用以下命令:

mount -o rw,remount /system

执行重新装载时,不需要同时传递两个参数。您只需通过装载点(此处/系统)。和/系统在Android设备中是通用的。

我也有同样的问题。因此,真正的答案是:在
/proc
下安装系统。 这是我的命令:

装载-o rw,重新装载/proc/system

它可以工作,事实上,这是我克服只读系统问题的唯一方法。

而不是

安装-o rw,重新安装/系统/

使用

安装-o rw,重新安装/系统

注意命令末尾的“/”。 你问为什么这很重要/system/是/system下的目录,/system是卷名。

试试看

装载-o重新装载,rw/系统

如果没有打印错误消息,则它可以工作

或者,您应该执行以下操作

首先,确定fs类型

坐骑

发出此命令以找到它

然后

挂载-o rw,重新挂载-t yaffs2/dev/block/mtdblock3/system


请注意,fs(yaffs2)和设备(/dev/block/mtdblock3)取决于您的系统。

您也可以尝试使用adb remount命令以读写方式重新安装/system

adb remount

这就是我的第一代Droid X的Android版本2.3.4的工作原理。我怀疑这将是普遍的。步骤:

  • 根系统并安装su

  • 安装总线箱

  • 安装终端程序

  • 首先安装系统rw,然后安装su

    busybox mount -o rw,remount system
    
  • 重新安装ro

    busybox mount -o ro,remount system
    

  • 请注意,“系统”上没有斜杠。

    如果您的手机已根目录,但没有busybox,则只储存toybox,这里有一行代码作为根目录运行:

    mount-o rw,remount$(mount | sed'//system/!d'| cut-d”“-f1)/system

    toybox不支持“-o重新安装,rw”选项

    如果您有busybox,您可以使用它:


    busybox挂载-o重新挂载,rw/system

    好的,太好了,谢谢。但是有一个问题——从这个输出中,我可以找到包含/system的行,并解析挂载点和分区类型。是否有任何命令仅为/system输出该信息(以避免所有解析)?无需担心--我已对其进行了所有解析,没有任何问题,但还有另一个问题:我可以在我的应用程序中运行其他根命令,但“mount-o remount,rw-t yaffs2/dev/block/mtdblock3/system”命令无效。我没有收到任何错误,它看起来运行成功,但/system保持为只读。有什么想法或建议吗?我想你不能在有常规应用权限的情况下运行“mount-oremount,rw-tyaffs2/dev/block/mtdblock3/system”命令。你应该使用root权限运行它才能生效。我在“su”下运行它,这意味着它拥有超级用户应用程序的root权限;我建议您阅读本线程,了解如何使用["权限)好的。如果我错了,我很抱歉,但您是说Android设备可能没有/system目录?我是说,通过使用remount选项发出mount命令,无需指定要将其装载到的分区,因为它将使用当前装载到该di的相同分区目录(以及它的所有参数)。这不会一直起作用。remount命令在ADB中起作用(大部分时间),但它在很多设备的终端上都不起作用。这取决于Android操作系统版本和加载的ROM。通过ADB或直接通过终端执行命令有什么不同?当然它调用相同的可执行文件?!感谢提供的信息,我不知道mount命令的功能会因设备的不同而不同ndroid version.ADB有自己的remount命令。我不是指在ADB外壳窗口中运行它,而是指实际的“ADB remount”命令。无论哪种方式,您的解决方案都无效,因为它不会在所有ROM和设备上运行,并且正确的解决方案已经发布和接受。doesn不起作用,抛出
    用法:mount[-r][-w][-o选项][-t型]设备目录
    .Samsung Sidekick 4G。您需要是root才能运行此命令。在执行此命令之前,请在shell中运行
    su
    。完成后,出于安全原因,我建议再次以只读方式重新安装它。
    mount-o remount rw/system
    这对我不起作用。我尝试过:
    mount-o remount,rw/system
    mount-o-rw,remount/system
    mount-o-remount,rw/dev/block/mmcblk0p23/system
    ,具有两种可能性
    remount,rw
    rw,remount
    。我一直得到
    只读文件系统
    。看起来像是因为
    rw
    在安卓5.1.1中不起作用而重新安装。最后我启动到
    TeamWin TWRP
    恢复,从那里装载
    /system
    ,并使用集成文件管理器执行我的文件操作。当然,您应该事先安装TWRP。完成后,出于安全原因,不要忘记以只读方式重新装载它。
    装载-o重新装载,ro