TTYコンソールを有効にする方法は?

TTYコンソールを有効にする方法は?

私はいくつかの修正を加えて、デフォルトのChrome OSカーネル(4.4.x)を使用してChromebook(Eve)でLinux(Debian 10)を実行しています。期待どおりにフレームバッファを切り替えるCtrl++を介してTTYコンソールにAltアクセスできないことを除いて、すべてが(ほとんど)うまく動作します。Fnつまり Ctrl+ F1DMに切り替え、Crtl+F2デスクトップに切り替える)、TTYエミュレーションディスプレイ用のフレームバッファがないようです(画面はCtrl+で停止F3しますがCrtl、+を介してデスクトップを復元できますF2)。起動時にログが表示されないことを考慮すると、これはカーネル構成の問題であると推測されます。カーネル構成では、TTY、コンソール、フレームバッファ関連のドライバオプションが有効になっており、デバイスtty/dev。コンソールは機能しますが(他は機能しないようです)、Chrome OSカーネル内で作成されていません。

EveとDebianのデフォルト設定を比較したところ、同じ設定項目(そのうち532個)に対して異なるオプションが選択されていることを確認し、次の違いを見つけました。

CONFIG_ITEM                         Debian      Eve
CONFIG_AGP_AMD64                    y           is not set
CONFIG_AGP_SIS                      y           is not set
CONFIG_AGP_VIA                      y           is not set
CONFIG_VGA_SWITCHEROO               y           is not set
CONFIG_DRM_FBDEV_EMULATION          y           is not set
CONFIG_DRM_LOAD_EDID_FIRMWARE       y           is not set
CONFIG_DRM_DP_CEC                   y           is not set
CONFIG_DRM_VGEM                     is not set  y
CONFIG_DRM_UDL                      is not set  y
CONFIG_DRM_CIRRUS_QEMU              is not set  m
CONFIG_FIRMWARE_EDID                y           is not set
CONFIG_FB_BOOT_VESA_SUPPORT         y           is not set
CONFIG_FB_CFB_FILLRECT              y           is not set
CONFIG_FB_CFB_COPYAREA              y           is not set
CONFIG_FB_CFB_IMAGEBLIT             y           is not set
CONFIG_FB_SYS_FILLRECT              y           is not set
CONFIG_FB_SYS_COPYAREA              y           is not set
CONFIG_FB_SYS_IMAGEBLIT             y           is not set
CONFIG_FB_SYS_FOPS                  y           is not set
CONFIG_FB_TILEBLITTING              y           is not set
CONFIG_FB_VESA                      y           is not set
CONFIG_FB_EFI                       y           is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION y           is not set

ただし、DebianからEveのデフォルト設定にコピーされたこれらの設定を使用してカーネルをコンパイルした後は、何も変更されませんでした。他に質問がありますか?助けてくれてありがとう。

答え1

~によるとChromebook開発者向けドキュメント、前日はインテルx86_64 Kabylake-Yハードウェア。したがって、おそらくi915カーネルモード設定を使用するディスプレイドライバを使用しているようです。

Chromebookがどのようなファームウェアを使用しているのかわかりません。 Corebootを使用している場合は、i915ドライバが制御するまでディスプレイハードウェアが完全に初期化されていないままになる可能性があります。 UEFI を使用している場合は、CONFIG_FB_EFI初期ブートメッセージが必要な場合があります。

カーネル構成オプションのヘルプテキストCONFIG_DRM_FBDEV_EMULATION(ハイライト項目):

CONFIG_DRM_FBDEV_EMULATION:

従来のfbdevサポートが必要な場合は、このオプションを選択してください。このサポートは、モード設定ドライバに加えて、Linuxコンソールのサポートも提供します。

疑わしい場合は「Y」と言ってください。

また、対応するCONFIG_FRAMEBUFFER_CONSOLEオプションも確認してください。

ドライバが正常な場合は、++[email protected]自動起動も必要です。これは通常存在する場合は自動的に行われます(つまり、カーネル仮想コンソールサブシステムが正常に有効になっています。実際にはオプションなので、x86 PCハードウェアに精通している人を驚かせる可能性があります)、他のシステムはデバイスに代わるものではありません。CtrlAltF3systemd/dev/tty0/dev/tty[1-6]

あなたの問題は、テキストコンソールがないため、CONFIG_DRM_FBDEV_EMULATIONプロセスが 。/dev/tty0gettysystemd

Chromebookには明らかにPCスタイルのBIOSがないため、VGAテキストコンソールもないため、CONFIG_VGA_CONSOLE何もしません。

答え2

フレームバッファデバイスモジュールがロードされているにもかかわらず、/dev/fb0が存在しないことを確認して見つけfbconました。

  1. i915組み込みモジュールではなくロード可能モジュールとしてビルドし、fbdevレガシーサポートが有効になっていることを確認してください。 (ロード可能なモジュールで構築するのはおそらく不要です。ブラックリストに追加または削除できることを確認するために行いましたが、i915ポイントは従来のfbdevサポートを選択することです)。
  2. フレームバッファコンソール(fbcon)を有効にしてモジュールとしてビルドします。
  3. ttyも有効になっていることを確認してください。
  4. 競合するフレームバッファモジュールに関連するすべてのループを編集/src/kernel/drivers/gpu/drm/i915/i915_drv.cおよび削除またはコメントアウトしますif(「衝突」を検索すると、4.4.250-R89カーネルソースに3つのループがあります)。そうしないと、間違いが発生する可能性があります。明らかにi915、ChromeOSドライバはフレームバッファコンソールを持つことを望まない。
  5. カーネルとモジュールを構築します。 Linuxにインストールしてください。
  6. 起動時にロードするには、fbconに追加します(デフォルトではロードされません)。/etc/initramfs-tools/modulesまたは、TTYエミュレーションを使用する必要がある場合は、手動でロードすることもできます。
  7. initramfs と grub を更新します。再起動。カーネルブートメッセージを確認し、Ctrl+を使用してFnTTYnにアクセスできる必要があります。

関連情報