CM12.1の起動時にスクリプトを実行する方法


9

これに関連して私が見つけることができるほとんどの質問は、2011年前後のものであり、おそらく物事が変わったのはそれほど驚くことではないでしょう。私はたくさんのことを試しましたが、結果はまったくありませんでした。

いくつかのスクリプトが含まれています/system/etc/init.d(これ/etc/init.dはデバイスにも表示されます)。特に、00bannerウェルカムメッセージを記録することになっているスクリプトがあります。ウェルカムメッセージがlogcatに表示されることはありません。

私は自分のスクリプトをここに配置しましたが、最終的にはこれだけになりました。

#!/system/bin/sh
log -t mytest Testing

何もない。端末から手動で実行しない限り、logcatには表示されません。その後、動作します。

ここには、90userinitファイル/data/local/userinit.shが存在する場合に呼び出すファイルもあります。上記と同じ内容で作成しました。繰り返しますが、logcatには何も表示されません。これは驚くべきことではありませ00bannerん。実行しないと、これも実行されないからです。

「init.rc」という名前の何かを検索しましたが、デバイスのどこにもそのようなものはありません。

私のスクリプトはすべて755の権限を持っています。

他に何を試すことができますか?(私のためにスクリプトを実行するアプリ以外)


どのスクリプトを実行しますか、そしてその理由は何ですか?
unforgettableidSupportsMonica

悲しいことに、私が行った少量の掘削は、「カスタムROMでは機能しません」という結果になりました。どうやらCMには独自のやり方がある。あなたがそれを台無しにしたいのかわかりません。しかし、どうやら独自のboot.imgファイルを作成し、それにカスタムスクリプトを追加することができます。多分それは屋のために働くでしょう。
jer3my

@ jer3my私はそれを実際の答えとして受け入れて、あなたが私に説得力がある/信頼できると思うリンクがあれば、賞金を割り当てて完全に満足しています。
RomanSt 2015

私はすぐに答えを投稿します。また、あなたに役立つかもしれない何か他のものを見つけました。
jer3my 2015

init.rcは、boot.imgに含まれていないinitramfsの一部です。unmkbootimgなどのツールを使用して抽出し、編集してから、mkbootimgを使用して再構築します。cmプロジェクトで使用できる2つのツールは、どのOSかを教えてくれます。私はあなたのためにそれらをコンパイルします:D
lord-ralf-adolf

回答:


5

バージョン4.0以降のroot化されたandroidにinit.dサポートを追加する簡単な方法があります。Googleは、起動時にスーパーユーザーとして実行されるスクリプトを作成しました。スクリプトは、起動時にinstall-recovery.shストックリカバリを再フラッシュするために使用され、彼らはそれが良いと思いました。カスタムリカバリを防ぐためのセキュリティですが、ユーザーが偽のinit.d機能を悪用する可能性のある新しいホールが開かれました。 依存関係:このメソッドを機能させるには、次のものが必要です

  1. 次のrun-partsようなパスにシンボリックリンクしてインストールされたビジーボックス/system/xbin
  2. 明らかに、次の/systemようにマウントできる根付いた電話が必要ですrw
  3. カーネルのバージョンは関係ありません。

方法I:(最も簡単な方法!)

  1. このAPKをダウンロードします(無料で使用できます。ミラーリングしないでください。XDAの@Ryuinfernoに感謝します)。
  2. 通常のアプリと同じようにAPKをインストールします。
  3. アプリを起動します。
  4. アクティベートをクリックしてください!setinit.dがすべてサポートされるようになったので、テストボタンをクリックするか、電話を再起動して、init.dスクリプトが終了したかどうかを確認します。
  5. init.dサポートに影響を与えないアプリケーションをアンインストールできます

方法II:(難易度:中)

  1. このzipをダウンロードして解凍し、SDカードにinit.shを配置します(この例では/sdcard、デバイスから他のデバイスに変更できます。

  2. ターミナルを開くかadb shell、コンピュータから使用してスクリプトを実行します。
    su
    cp /sdcard/init.sh /data/tmp/init.sh
    chmod 777 /data/tmp/init.sh
    /data/tmp/init.sh

スクリプトが実行され、2回再起動するように求められます。つまり、正式にinit.dをサポートしています:D

参照: [MOD] [APK + SCRIPT + ZIP]カスタムカーネルを必要としない電話でInit.dを有効にする!!!


zipファイルはXDAでホストされているため、ユーザーが従った、または何らかの方法で知ったチュートリアルが必要です。リンクを教えていただけますか?その中の別のものを検索する必要があります。:)
ファイアロード

1
@Firelordはいスクリプトは鉱山が、それは他の目的のために使用されたされていない、私は単一のポストビュー>ここからそれを取ったforum.xda-developers.com/...、完全なそれはおよそxposedのチュートリアルとネクサス6 >> forum.xda -developers.com/nexus-6/general/...
藩主・ラルフ・アドルフ

@Firelordが回答に含まれている新しい参照リンクを見つけます:)
lord-ralf-adolf 2015

ありがとう、もっと簡単なものがない限り、私はおそらくあなたに賞金を差し上げます。しかし、正直に言って、ブート時に実行するシェルスクリプトを追加することは、CMのようなものでこれまでに実行できる最も簡単なことのようだと思いました。明らかにそうではありません。私がやりたいことを実行するboot_completedアプリをコーディングするよりも複雑なので、代わりにそれを実行します。
RomanSt

@romkyns古いcmはデフォルトでinit.dをサポートしていますが、会社になったため、方法が変更されましたが、init.dの問題は厳密なselinuxポリシーを使用した新しいlollipopバージョンにあります/ boot_completedもそれを行う方法であり、それはより簡単になるだろうと言った
lord-ralf-adolf 2015

2

編集:私は終わりの投稿を見ました、これは一方向で、アプリなしでできるだけ早く追加しようとしますが(家ではなく、モバイルを使用して公開)、他のものが機能しない場合はこれを使用できます。

Taskerというアプリを使ってみてください。

3.29ドルの費用がかかり、ルートアクセスが必要ですが、シェルスクリプトを実行できます。また、体験版もあるので、購入前にお試しいただけます。

最初にタスクを作成します。[タスク]タブに移動し、+記号をタップして、タスク名を入力します。もう一度+記号を入力してshell、フィルターを入力します。あなたはオプションを見つけRun Shell、それを選択し、必要に応じてそれを設定します。

その後、最初のタブ-プロファイルに戻り、+記号をタップして新規作成します。タイプとして「イベント」を選択し、「システム」に移動して「デバイスの起動」を選択します。戻ると、タスクを選択するよう求められます。先ほど作成したタスクを選択すると、準備が整います。


1

これにはzipをフラッシュする必要がありますが、スクリプトを/ system / etc / startupに置くと、電話で自動的に起動します。

http://forum.xda-developers.com/showthread.php?t=2664645

質問の下の私のコメントからも。履歴を調べてみましたが、CMが起動時に独自の方法でスクリプトを実行していると人々が主張しているリンクが見つかりませんでした。

編集。もう少し掘り下げた後、CMは言うまでもなく、それはスクリプトに対して独自の機能を果たします。そのカーネル。すべてのカーネルがAndroidのinit.dをサポートしているわけではありません。使用しているデバイスを投稿した場合。ブート時にカスタムスクリプトをサポートするカーネルを探すことができます。


0

CM12.1のターミナルでスクリプトファイルを実行しても同じ問題があります。解決策は、スクリプトを/dataフォルダーにコピーして実行することです。つまり、CM 12は特定の場所からのみ実行可能なスクリプトを許可していると思います。


0

簡単な方法(動作):

  1. スクリプトでブート後のコマンドを準備します。たとえば、/ system / xbin / post-boot(exec permを設定)

  2. /system/etc/init.qcom.post_boot.shの最後に上記のカスタムスクリプトパスを追加します

例えば:

echo / system / xbin / post-boot >> /system/etc/init.qcom.post_boot.sh

できた!

(qcom post_boot(Qualcommデバイス)が見つからない場合は、post_bootスクリプトを探します)


-1

起動時にスクリプトを実行するための次の手順。(必須のadb)

  1. adbルート
  2. adb remount
  3. adb pull /init.rc
  4. init.rcを編集して、sh test.shのような実行スクリプトの行を追加します。
  5. adb push init.rc /
  6. adbシェル
  7. chmod 755 init.rc
  8. adbの再起動

それは私のために働きます。これがお役に立てば幸いです。


1
このメソッドはまったく機能しません。init.rcのような初期rootfsの内容は、起動ごとにデバイスのフラッシュから復元されるramdiskの一部です。デバイスのフラッシュメモリの適切なパーティションでRAMディスクを直接変更する必要があります
ゼロで除算された

/system/etc/init.qcom.wifi.shに追加できるより
DreamCoder

1
このメソッドは機能しません。init.dはプッシュできません!これはinitramfsの一部であり、再度フラッシュするのではなく、boot.imgで編集する必要があります。init.qcom.wifi.shの場合、デバイス固有であり、そこから一般的なルールを作成することはできません
lord-ralf-adolf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.