【问题标题】:Changing some system file values in Android failing在 Android 中更改某些系统文件值失败
【发布时间】:2012-11-14 01:44:09
【问题描述】:

我正在尝试更改一些 sys 值,但我似乎没有取得多大成功。

就我而言,我正在尝试更改文件夹中文件的值

"/sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0"

例如当前值为 09 的文件 bInterfaceClass

我的尝试: (在 shell 中,以 root 身份)

chmod 777 bInterfaceClass
echo 07 >> bInterfaceClass

我没有收到错误,但是在查找值时

cat bInterfaceClass

现在还是09

现在在 Root Explorer 中查找这个文件,我可以看到文件的最后修改日期已经改变,所以我的猜测是:这样的 sys 文件的值一旦改变就会被重置。任何人都可以对这个问题有更多的了解吗?如何更改值?

非常感谢!

【问题讨论】:

  • 这是一个很好的问题,但它与编程无关。在ServerFaultandroid.stackexchange.com 上提问会更好。
  • 好的,试试@androidstackexchange.com,但也希望有人能在这里帮助我
  • echo 07 > bInterfaceClass 可能,>> 会将数据附加到该文件,> 正在覆盖
  • 我已经成功将 echo >> 与其他系统文件一起使用,但是,你永远不知道......所以我也尝试过 >,但无济于事

标签: android file usb system root


【解决方案1】:

这是黑客行为,您已被警告! :)

此处的说明通常在 Internet 上找不到,但可以很好地用于测试接口和功能,而无需显着更改系统代码。这些可用于解决任何在没有警告或原因的情况下被覆盖的内容。使用这些,您有时可以根据使用 dmesg pslogcat 在测试解决方案时看到究竟是什么导致了这么多问题。

这很可能在内核中被重写,可能是系统服务或内部脚本。质量烫发修复将在内核的 /drivers 文件夹中。我只能假设这是在 Beagle 或 Panda Board 上,也许是 Moto 设备。如果是 Beagle 或 Panda,这会更容易(耶 Linaro,AOSP 支持,大社区!)。

如果这不需要保持 USB 处于打开状态,而只需显示所需的数字,您可以尝试以下操作:

打开您的 boot.img 并打开他的 Root Disk/Ramdisk,最后打开您的 init..rc 文件之一。您可以使用此工具:https://github.com/dsixda/Android-Kitchen - 需要 Linux 和一些软件包,很棒的工具!

如果幸运的话,它将作为init.rc 文件的一部分(您可以在系统中签入)或/system/etc 文件夹中作为类主脚本或核心脚本之一出现。

如果您在以下位置查找它,您可以声明您想要的值:

在初始化时

init.platform.rc的部分,看看在哪里

/sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0

被初始化,

然后在.rc文件中

chmod 777 /sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0/bInterfaceClass
write /sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0/bInterfaceClass 07

然后,如果这样做并初始化它本身并不成立,打开正常的 init.rc 并添加

on nonencrypted 
write /sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0/bInterfaceClass 07

还有

on property:vold.decrypt=trigger_shutdown_framework
write /sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0/bInterfaceClass 07

因为这两个属性或函数将在初始化结束时覆盖您以再次设置该属性(作为 on init 的一部分,您之前已经给了它 777 特权)

如果您想要一些无需刷新新的 Boot.img 文件即可玩的东西:

在 init.platform.rc 中将 system/bin 中的脚本声明为服务(不必担心大多数每个 .rc 文件都是链接并相互包含的),使用:

service usbchanger /system/bin/sh /system/bin/usbchanger.sh
      class late_start
      user root   
      disabled

然后在正常的init.rc中

on nonencrypted 
     start usbchanger

on property:vold.decrypt=trigger_shutdown_framework
     start usbchanger

然后您的脚本将成为一个持续运行的服务(您可以对二进制文件执行相同的操作)。在进行调试和测试新功能/修复时,这完全是一个理想的特性,因为您可以在系统打开时更改值和运行命令,并且不需要您在每次更改后重新刷新。但是,对于生产,您不应该这样做。它的错误代码通常在真正的情况下执行此操作,它应该在kernel 或核心中。

【讨论】:

  • 感谢您的回复!我决定看看“不闪烁新的 boot.img”方法会给我什么结果,但是当读取 bInterfaceClass 值时,它仍然是 09。即使我可以看到我正在运行 Usbchanger 服务。 shellscript 包含:“chmod 777 /sys/devices/platform/omap/musb-omap2430/musb-hdrc/usb1/1-0:1.0/bInterfaceClass echo 07 >> /sys/devices/platform/omap/musb-omap2430/ musb-hdrc/usb1/1-0:1.0/bInterfaceClass" 我不认为我错过了什么,所以我将深入我的 linux 操作系统,看看我能做些什么。由于一些内核更改可能会解决这个问题,我接受这个答案!
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 2016-11-30
  • 2015-01-02
  • 2017-05-23
  • 2012-07-03
  • 2014-06-01
  • 2015-04-02
  • 1970-01-01
相关资源
最近更新 更多