1

我正在尝试更改一些 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 文件的值一旦改变就会被重置。任何人都可以对这个问题有更多的了解吗?如何更改值?

非常感谢!

4

1 回答 1

1

这是骇客,您已被警告!:)

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

很可能在内核中,像这样的东西被覆盖,可能是系统服务或内部脚本。质量烫发修复将在内核的 /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

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

如果你想要一些你可以在不刷新新的 Boot.img 文件的情况下玩的东西:

使用以下命令将 system/bin 中的脚本声明为 init.platform.rc 中的服务(不要担心大多数每个 .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或核心中。

于 2012-11-14T06:06:19.893 回答