ソースからコンパイルされたISOイメージを使用してVMware内でLinuxカーネルを実行しようとしています。
現在initramfsを起動しようとしていますが、何らかの理由で競合が発生します。私の問題はTTYのサイズのためですが、その理由がわかりません。
.configファイルでCONFIG_DUMMY_CONSOLE_ROWSを25から60に変更しましたが、何も変更されませんでした。
また何ができますか?
ベストアンサー1
VMwareで初期起動の問題を解決するときは、シリアルポートをコンソールとして使用するようにカーネルを設定すると便利です。これにはカーネルブートオプションが必要です。あなたの場合、これを指定する唯一の方法はカーネルCONFIG_CMDLINE
設定オプションを介してまたは 。FDARGS="..."
FDINITRD=
make isoimage
あなたの場合、console=ttyS0,115200 console=tty0
仮想COM1シリアルポートのすべての出力をファイルに保存するオプションを追加し、VMwareを設定する必要があるかもしれません。これにより、Linuxカーネルブートメッセージの完全なリストをファイルに入れる必要があります。
(このconsole=tty0
セクションでは、コンソール出力もVMwareコンソールウィンドウに送信されます。これを無効にすると、コンソール出力はシリアルポートに送信されます。ただ、VGA仮想ディスプレイをまったく使用しません。 )
これらのシリアルポートを正常に使用するには、カーネル設定オプションCONFIG_SERIAL_8250=y
とCONFIG_SERIAL_8250_CONSOLE=y
。
私の考えは、CONFIG_DUMMY_CONSOLE_ROWS
仮想CONFIG_DUMMY_CONSOLE_COLUMNS
「仮想」コンソールデバイスにのみ影響し、実際のコンソールデバイスドライバが引き継がれるまでのみ機能します。実際のコンソールドライバは、コンソールで使用される表示モードに応じて行/列を設定します。
これ最初にコメントするdrivers/video/console/dummycon.c
これを確認するようです:
// SPDX-License-Identifier: GPL-2.0-only
/*
* linux/drivers/video/dummycon.c -- A dummy console driver
*
* To be used if there's no other console driver (e.g. for plain VGA text)
* available, usually until fbcon takes console over.
*/
さらに、drivers/video/console/vgacon.c
(つまり、実際のVGAコンソールテキストモードドライバ)はCONFIG_DUMMY_CONSOLE_ROWS
まったく使用されていません。
vgacon.c
上記のように設定されたクラシックVGAテキストコンソールを使用している場合は、Artem S Tashkinovの説明で提案されているように、カーネルブートオプションCONFIG_VGA_CONSOLE=y
(vga=ask
結果出力を見て適切な(S)VGAテキストモード番号を選択した場合)のvga=<mode number>
質問が適切です。
最新のLinuxディストリビューションはCONFIG_FRAMEBUFFER_CONSOLE=y
通常、initramfsから適切なフレームバッファデバイスドライバをロードします。これは、従来のVGAよりも高い解像度モードを持つためです。ただし、初期起動の問題を解決するためですので、モニター(VMware表示ウィンドウ)に出力できるようにカーネルに入れる必要があります。従来のBIOSスタイルを使用して仮想マシンを起動する場合(おそらくmake isoimage
それを行う方法)、問題のドライバはですCONFIG_FB_VESA=y
。 UEFIスタイルを使用して起動するのはCONFIG_FB_EFI=y
良い考えです。
CONFIG_FB_VESA
従来の理由から、起動vga=
オプションは初期コンソールディスプレイの解像度を設定するためにも使用されますが、これらのモードはvga=ask
;バラよりDocumentation/fb/vesafb.rst はここにあります。または、選択できるモードのリストと詳細については、カーネルソースツリーを参照してください。
UEFI(またはデフォルトで別のフレームバッファコンソールドライバCONFIG_FB_VESA
)を使用している場合は、ブートパラメータを使用して目的の表示モードを指定する必要がありますvideo=
。Documentation/fb/modedb.rst
カーネルソースツリーから詳細を確認してください。
簡単に言えば、ビデオモード選択パラメータCONFIG_FB_EFI
(実際にはVESA以外のフレームバッファコンソールに似ています)は次のとおりです。
video=efifb:1280x1024@60
これにより、ビデオモードに適したテキスト解像度が自動的に選択されます。