XサーバーとLinuxフレームバッファブートコンソールで実行されているDebianでルート化されたNexus5(msm 8974チップセット)デバイスを使用しようとしています。デフォルトのAndroidハンマーヘッドカーネル(CONFIG_FB_MSM_MDSS=y
とCONFIG_FB_MSM=y
を使用)を再コンパイルし、フレームバッファーコンソールのオプションを有効にしました(プライマリディスプレイに割り当て、フォントでコンパイルして使用します)。このカーネルでは、fastboot boot -c "console=tty0,115200 fbcon=font:VGA8x8" kernel-fbcon.img
を使用してAndroid正常に起動できますが、起動中はフレームバッファーコンソールはなく、Googleロゴとそれに続く起動アニメーションのみが表示されます。
Androidフレームワーク(stop
)を停止し、ADB経由でルートシェルを使用してフレームバッファー(/dev/graphics/fb0
)でさまざまなことを試してテストしました。
# cat /dev/urandom > /dev/graphics/fb0 # does not affect the screen
cat: write error: No space left on device
画面がオンのときにcon2fbmap 1 0
を使用しても効果はなく、コンソールtty0にあるテキストの表示や表示は変更されません。また、コマンドFRAMEBUFFER=/dev/graphics/fb0 Xorg vt1
を使用してディスプレイ上でXorgを実行しようとしました。これは、エラーなしで通常どおり実行および終了しますが、最後に画面に表示されたもののごく短いフラッシュを除いて、画面には何も表示されませんXは終了します(シェルではctrl + c)。 Xorgは、デフォルトのfbdevドライバーを使用するように構成されています。
これらの問題は、MSMフレームバッファーデバイスの非標準実装が原因であると思われます(Nexusの場合、これはkernel_source/drivers/video/msm/mdss/mdss_fb.cにあります)。多くの新しいAndroidデバイスには、フレームバッファーデバイスが期待どおりに機能しないというこの問題があります。
フレームバッファードライバーを変更したり、デバイスの起動時にフレームバッファーにブートコンソールが表示されるようにカーネルを構成したりできるかどうかを知りたいのですが。
助けてくれる人に感謝します。
編集:この問題はNexus 5に非常に固有のようです。GoogleNexusシリーズの他のデバイスは、フレームバッファグラフィックスとブートコンソールに問題がないようです。
Nexus4でも同じ問題が発生しました。これはそれを解決しました:
cat /sys/class/graphics/fb0/modes > /sys/class/graphics/fb0/mode
Dtsファイルでそのようなエントリを確認してください:qcom,cont-splash-enabled
:
--- a/Arch/arm/boot/dts/msm8226-sec-matissewifi-r03.dtsi
+++ b/Arch/arm/boot/dts/msm8226-sec-matissewifi-r03.dtsi
@@ -752,5 +752,5 @@
};
&dsi2lvds_wxga_vid_r01 {
- qcom,cont-splash-enabled;
+
};