デバッグ用のAndroid起動メッセージ?


23

Android(Galaxy Nexus、Nexus S、Motorola Xoomなど)に「ブートアップ」ログを生成する何らかの機能が搭載されているかどうかを把握しようとしています。(Linuxブートアップ画面のようなもの)クラッシュする前に自分の電話がブート段階にどれだけ到達するかを知るのに非常に役立ちます(最初の段階のブートローダー、メインブートローダー、カーネルのロードなど)。電話でこのログファイルを吐き出したり、「詳細な」起動モードを有効にしたり(電話を接続しているLinuxコンピューターの端末に実際のメッセージを出力したりする)方法を知っていますか?

私の携帯電話は、現在の変更されたビルドで「ブートループ」で立ち往生しているので、可能であればデバッグしたいと思います。

あるいは、便利なリソースや電話を簡単に「ハッキング」してこれを行う方法を説明するチュートリアルを知っている人はいますか?または、私の質問が尋ねられたかもしれないが、より曖昧な形でのフォーラムの?

これは最近のイライラする問題でしたので、どんな助けでも大歓迎です!


私はそれが非常に早い段階でlogcatへの書き込みを開始することを知っていますが、それは再起動するとクリアされます。「ブートアニメーション」が表示されるとすぐに(または多分少し早く)書き込みを開始する必要があります。
ライアンコンラッド

2
「adb」なしでどのようにlogcatにアクセスしますか?Adbは、電話が安定した状態にある場合にのみ機能します。これは、logcatが存在する理由(電話が正常に起動するかどうかを気にする人はツールを必要としない)に反する点です。
9exceptionThrower9

adbは、開始される最初のサービスの1つです。ブートアニメーションが表示される場合、adbは既に実行されています。adbは、リカバリモードの場合でも使用できます。
ライアンコンラッド

さて、あなたが話しているブートアニメーションが表示されるかどうかはわかりません。バッテリーの「充電」記号の後、電話はクラッシュする前に「Google」が白でスプラッシュ画面にハングアップします。その後、「Android」スプラッシュスクリーン、または起動アニメーションはありません。私はないと思うので、ADBは...まだ作品
9exceptionThrower9

回答:


14

これを行うには、いくつかの方法があります。

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • スマートフォンの電源を切った状態でUSBケーブルを差し込みます。次にadb logcat、Windows cmdまたはLinuxターミナルからコマンドを発行します。デバイスがオンラインになるのを待ってハングし、スマートフォンの電源が入ります。その後、logcatがスクロールを開始します。

クラッシュする前に自分の電話がブートステージにどれだけ到達するか把握することに興味を示したので、これらの方法が役立ちます。問題は、カーネルのログ(上記の最初の2つの方法)をすばやく取得する必要があることです。

私がやることは、これは私のArch Linuxボックスで、2つのターミナルウィンドウです。1つは、もう1つadb logcatはログを取得するためにlogcatがスクロールを開始します!

編集:

注意してください、とを使用するadbと違いがありfastbootます!

fastboot動作が異なり、指定されたパーティションにイメージをフラッシュするためにのみ使用され、ブートローダープロセスとより密接に関係しています。つまり、ブートローダーメカニズムを理解できます。また、以下も必要です。

  • Windowsでは、それを実行する「管理者」権限
  • Linuxでは、「root」権限

それが必要な理由は、ハードウェアの特定の入出力をバイパスし、したがってadbプロトコルで「話す」のではなく、むしろ、ブートローダーと直接「話す」ためです。通常のユーザーとしてはできないこと。の使用法のヘルプを次に示しますfastboot

$ sudo fastboot
usage: fastboot [ <option> ] <command>

commands:
  update <filename>                        reflash device from update.zip
  flashall                                 flash boot + recovery + system
  flash <partition> [ <filename> ]         write a file to a flash partition
  erase <partition>                        erase a flash partition
  getvar <variable>                        display a bootloader variable
  boot <kernel> [ <ramdisk> ]              download and boot kernel
  flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it
  devices                                  list all connected devices
  continue                                 continue with autoboot
  reboot                                   reboot device normally
  reboot-bootloader                        reboot device into bootloader
  help                                     show this help message

options:
  -w                                       erase userdata and cache
  -s <serial number>                       specify device serial number
  -p <product>                             specify product name
  -c <cmdline>                             override kernel commandline
  -i <vendor id>                           specify a custom USB vendor id
  -b <base_addr>                           specify a custom kernel base address
  -n <page size>                           specify the nand page size. default: 2048

よく知られている用途はfastboot、たとえばリカバリイメージをフラッシュするためのフラッシュですsudo fastboot flash recovery recovery.img。別の方法は、生のイメージを直接フラッシュすることsudo fastboot flash system system.imgです。これを使用したカーネル開発の場合fastboot boot new_kernel、これは一時的に新しいカーネルをダウンロードし、ブートローダーのブートに触れることなくそれを使用してブートします。

また、フラッシュする必要がある未加工画像のサイズには制限があります。未加工画像と言うとき、.img拡張子を持つファイルを指します。画像は128MBを超えてはなりません。(ics4bladeの開発時にこれを見つけました。ビルドが完了した後、system.imgは162Mbでしたが、フラッシュしようとしましたが、fastbootは拒否されました!それ!

注意を練習し、パーティションが正しいことを確認し、必要に応じて再度ダブルチェックとダブルチェックを行い、必要に応じてコンピューターから離れ、休憩を取り、再び戻って、もう一度ダブルチェックします。間違ったパーティションに間違ったファイルをフラッシュ...よく肩をすくめ


3
これは素晴らしいアイデアですが、1つの問題.... adbはadbデーモンがデバイスを検出できる場合にのみ機能します。電話機が正常に起動しない場合、adbは機能しません。そのため、logcatが最も必要な場合の「ブートループ」は機能しません。また、試してみると現時点では機能しません。電話機が正常に起動したかどうかを気にしないコマンド単位でアクセスできるのは、「fastboot」だけです。この場合の代替案は何ですか?
9exceptionThrower9

@ 9exceptionThrower9は私の回答を編集してfastbootの概念を含め、コメントに回答しましたが、fastbootは機能しません:)
t0mm13b

私が考えることができる唯一の選択肢は、fastbootでcacheand dataパーティションを消去することです-あなたが先に進んだとしても、私は面倒なことについては責任を負いません!そして、CWMを介してROMを再度フラッシュしてみてください。さらに良いことに、忘れるのfastbootとの両方拭くためにCWMを使用してキャッシュデータをブートループがborkedキャッシュまたはデータによるものであるように、それは音...
t0mm13b

興味のあることとして、ブートループに到達するためにあなたは正確に何をしましたか-それは重要な質問であり、あなたがとったステップを知りたいですか?
t0mm13b

Galaxy NexusのAndroidカーネル(maguro)、特に "socket.h"ファイルを変更して、チームの研究プロジェクトFINS(ネットワーク研究者のユーザー空間にインターネットプロトコルを引き出す)でINET登録をオーバーライドしました。このファイル(数行のみ)を変更した後、カーネルを正常に再コンパイルし、このカーネルをAndroid maguroビルドツリーに挿入し、Androidシステムイメージを再構築してから、新しいリカバリ、ブート、システム、およびuserdata.imgファイルをフラッシュしました電話...
9exceptionThrower9

0

LiveBootを使用できます。Google Playストアにあります。それはちょうどあなたが求めていることを行います。


ブートループを取得したらどうなりますか?USBケーブルでそれを行う方法はありますか?
beppe9000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.