QEMUオプション-display curses
と-nographic -device sga
(シリアルグラフィックアダプタ)は、グラフィック環境の外部でQEMUを実行するのに非常に便利です。
(考えてみてください:リモートSSH接続、構造システムなど)
ただし、どちらのモードもフレームバッファテキストモードでは使用できません。一部のLinuxディストリビューション(Fedora 25など)の新しいデフォルトでは、起動中のある時点でフレームバッファテキストモードが有効になり、-display curses
QEMUが「1024x768グラフィックモード」のみを表示するように見えます。 SGAの場合、何も印刷されません。
だから私の質問は:カーネル(そして残りのブート部分)が古い初期テキストモードを使用するようにどのように強制できますか?
付録
nomodeset
カーネルパラメータを追加することとカーネルパラメータを削除することrhgb
には違いはありません。
最も便利なのは、ゲストの変更を必要としないため、カーネルが最も基本的なテキストモードのみを検出できるようにするいくつかのQEMU構成です。
私の環境では、シリアルコンソール設定(console=ttyS0
ゲストにカーネルパラメータを追加するなど)が機能しますが、Gnome端末でいくつかのエスケープシーケンスの問題が観察されました。また、これはすでにフレームバッファ(Fedora 25サーバーISOなど)を使用しているブートローダには役立ちません。クライアントの変更が必要です。
Fedora ゲストの例
Fedora 25をゲストとして使用すると、initrdの実行中にフレームバッファに切り替えられます(シリアルコンソールから)
[ 1.485115] Console: switching to colour frame buffer device 128x48
[ 1.493184] bochs-drm 0000:00:02.0: fb0: bochsdrmfb frame buffer device
[ 1.502492] [drm] Initialized bochs-drm 1.0.0 20130925 for 0000:00:02.0 on minor 0
nofb
これらのメッセージはvga=normal
および(ゲスト)カーネルパラメータとともに表示されます。
答え1
2017年以来、qemuはx86-64用のテキスト専用グラフィックカードエミュレーションを提供しなくなり、ゲストはテキストモードのままになります。
現在のディストリビューション(Fedora 25など)に付属しているカーネルモジュールは、デフォルトでbochs_drm
フレームバッファを有効にします(例:1024×768グラフィックモード)。これとは対照的に、たとえばDebian 8(安定)はこのモジュールを提供していないため、ブート全体で古いテキストモードになります。
したがって、-display curses
端末でqemuを実行するときは、シリアルコンソールをセーフティデバイスとして有効にすることが合理的です(例:次のように)。
console=tty0 console=ttyS0
または
console=tty0 console=ttyS0,115200
GRUB_CMDLINE_LINUX
(顧客のカーネルパラメータ、デフォルトの速度は9600です。どちらの設定もFedora/etc/sysconfig/grub
に割り当て、実行、または設定をgrub2-mkconfig -o /etc/grub2.cfg
維持することによってqemuで動作しますgrub2-mkconfig -o /etc/grub2-efi.cfg
。)
他の方法が機能しない場合は、Alt + 3を介してqemu内からシリアルコンソールに切り替えることができます。
2番目のアクションは、モジュールパラメータを介してフレームバッファを無効にすることですbochs_drm
。つまり、ゲストカーネルコマンドラインで設定してフレームバッファを無効にすることです。
bochs_drm.fbdev=off
ブラックリストの代替
または、モジュールをブラックリストに追加することもできます。bochs_drm
たとえば、次のように構成を作成できます。/etc/modprobe.d
bochs.conf
blacklist bochs_drm
initramfsもbochs_drmモジュールをロードできないため、この構成がinitramfsに含まれていることを確認する必要があります。 Fedora などのディストリビューションでは、次のことを実現します。
# dracut -f
UEFIブート
UEFIファームウェア(たとえば-bios /usr/share/edk2/ovmf/OVMF_CODE.fd
)でqemuを起動するときにbochs fbdevを無効にするだけでは不十分です。その後、bochsフレームバッファに切り替えようとすると、Fedoraの起動が中断されます。 bochs_drmをブラックリストに載せると、この問題は解決されますが、それだけでは不十分です。 640 x 480のグラフィックモードを取得するだけで、カーネルはこれをテキストモードにリセットしません。したがって、UEFIゲストの場合はシリアルコンソールパスを使用する必要があります。
シリアルコンソール
シリアルコンソールを一緒に使用すると、-display curses
呪いがvt110 / vt220端末エミュレーションを妨げるため、最適ではないユーザーエクスペリエンスが生成されます。したがって、緊急事態にのみ対処することができます。
より良い解決策は、ディスプレイを完全にオフにしてシリアル/モニターを組み合わせたQemuモードを使用することです。
-display none -serial mon:stdio -echr 2
(Ctrl+はb hヘルプを表示し、Ctrl+はb cモード間を切り替えます)
Fedora 27では、Grub2はデフォルトでシリアルコンソールサポートとして設定されています。したがって、シリアル端末を介しても制御できます。
ログイン後に呼び出されると、端末のジオメトリresize
が更新され、結果の端末がローカル端末と同様に機能します。
マルチユーザーターゲット
ゲストイメージにグラフィカルログインマネージャインストーラがある場合は意味があります。無効:
# systemctl set-default multi-user.target
それ以外の場合は、起動するたびに最初の仮想コンソールに切り替える必要があります(たとえば、呪いディスプレイを使用するときはAlt + 2またはAlt + 3)。