Linuxブート-カーネルの新しいフレームバッファーモードクリア出力への切り替えを停止します


2

私は(に基づいてUbuntu 12.04 LTS)組み込みシステムに取り組んでおり、そのカーネルをカスタマイズしています。私はといくつかの問題を抱えているupstartmountallplymouth。解決不可能なことは何もないと思いますが、実際の問題は、カーネル(またはplymouth)がブートプロセスの途中でビデオモードを変更するため、何が起こっているかを適切に診断できないことです。これにより、ログの行全体が完全に消去され、カーネルの構成ミスのデバッグが防止されます。

私のGrub2設定は大丈夫のようです:

GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="acpi=force noplymouth"

GRUB_GFXMODE=1024x768x32
GRUB_GFXPAYLOAD_LINUX=keep

以下に関連する出力を示しlspciます。

00:00.0 Host bridge: Intel Corporation Mobile 945GSE Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)

そして、ここに私のカーネル構成の関連部分があります:

CONFIG_AGP=y
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_DRM=y
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_I915=y
CONFIG_DRM_I915_KMS=y
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_VESA=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y

他のすべてのカスタム/ストックカーネルは、その構成で正常に起動しますGrub2。私が欲しいのは、ブートアップロゴからログインプロンプトまでの単一のコンソール上のメッセージの単一のフロー(1つの画面解像度を保持)です。誰かが私がこれを達成するために微調整する必要があることを知っていますか?

回答:


1

ようやく妥当なframebuffer構成に到達したようです。これらは私のカーネル内の関連する設定.configです:

CONFIG_AGP=y
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_VESA=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y

これは、diff古いframebuffer構成と新しい構成の間です。

#> diff oldcfg.txt newcfg.txt
--- oldcfg.txt  2012-10-01 17:30:01.000000000 +0200
+++ newcfg.txt  2012-10-01 17:29:43.000000000 +0200
@@ -2,20 +2,14 @@
 CONFIG_AGP_INTEL=y
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
-CONFIG_DRM=y
-CONFIG_DRM_KMS_HELPER=y
-CONFIG_DRM_I915=y
-CONFIG_DRM_I915_KMS=y
 CONFIG_VIDEO_OUTPUT_CONTROL=y
 CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_VESA=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_VGA_CONSOLE=y
 CONFIG_VGACON_SOFT_SCROLLBACK=y
 CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640

この構成は、Knoppix-likeブート出力を生成します。ログインプロンプトが表示される直前に誰が画面をクリアするのか、何が画面をクリアするのかはまだわかりませんが、今のところは満足しています。犯人を特定できる場合は、この回答を更新します。

編集:(2つ)の犯人を見つけました。

数時間のグーグル検索の後、このスレッドこの質問で解決策を見つけました。この手順は、ここUbuntu 12.04.1 LTS説明されているように機能しますが、他のディストリビューションでもそれほど違わないはずです。

最初に、追加console=tty1しますGRUB_CMDLINE_LINUX(またnoplymouth、抑制plymouthとその無用なスプラッシュスクリーンに追加することをお勧めします)。

#> sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX="console=tty1 noplymouth"

これにより、ログインプロンプトのtty1代わりに強制的にカーネルログが出力されtty7tty切り替えが回避されます。

それからちょうどに行く/etc/initと1つ以上を編集しtty1.conftty2.conftty3.conftty4.conftty5.conftty6.confまたはconsole.conf。コマンドに--noclearオプションを追加してすべて編集しましたgetty。たとえば、編集tty1.conf

#> sudo vi /etc/init/tty1.conf

あなたは交換する必要があります:

respawn
exec /sbin/getty -8 38400 tty1

で:

respawn
exec /sbin/getty -8 38400 --noclear tty1

以上で、システムはttyクリアせずに単一で起動するはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.