1

いくつかの sys 値を変更しようとしていますが、あまり成功していないようです。

私の場合、フォルダー内のファイルの値を変更しようとしています

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

たとえば、現在値が 09 のファイル bInterfaceClass

私の試み:(シェルで、ルートとして)

chmod 777 bInterfaceClass
echo 07 >> bInterfaceClass

エラーは表示されませんでしたが、値を調べると

cat bInterfaceClass

まだ09です

ルート エクスプローラーでこのファイルを調べると、ファイルの最終変更日が変更されていることがわかります。そのため、何かが変更されるとすぐにそのような sys ファイルの値をリセットすると推測します。誰かがこの問題にもう少し光を当てることができますか? 値を変更するにはどうすればよいですか?

どうもありがとう!

4

1 に答える 1

1

これはハッカリーです、あなたは警告されました!:)

ここでの手順は、インターネットでは一般的に見られませんが、システムコードを大幅に変更することなく、インターフェイスと機能をテストするのに最適です。これらは、警告や原因なしに上書きされているものすべてに対処するために使用できます。dmesg psこれらを使用すると、ソリューションのテスト中に、使用に基づいて、logcat何が非常に多くの問題を引き起こしているのかを正確に確認できる場合があります。

カーネルでは、このようなものが上書きされる可能性があります。おそらく、システムサービスまたはスクリプトが内部にあります。高品質のperm修正は、カーネルの/driversフォルダーにあります。私はこれがビーグルまたはパンダボード、多分モトデバイス上にあると推測することができるだけです。BeagleまたはPandaの場合、これは簡単になります(yay Linaro、AOSPサポート、大きなコミュニティ!)。

これがUSBを開いたままにする必要はないが、必要な数だけが存在する場合は、以下で試すことができます。

boot.imgを開き、ルートディスク/ RAMディスクを開き、最後にinit..rcファイルの1つを開きます。このツールを使用できます:https ://github.com/dsixda/Android-Kitchen-Linux といくつかのパッケージが必要です。すばらしいツールです。

運が良ければ、これはinit.rcファイルの一部(システム内で確認できます)/system/etcとして、またはクラスのメインスクリプトまたはコアスクリプトの1つとしてフォルダーに表示されます。

次の場所で必要な値を探す場合は、必要な値を宣言できます。

initで

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

これらの2つのプロパティまたは関数は、initの最後でそのプロパティを再度設定するためにカバーします(on initの一部として以前に777の特権をすでに与えています)

新しい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 に答える