私Ubuntu JammyデスクトップQEMUの仮想マシン。ホストシステムもUbuntu Jammyです。コマンドは次のとおりです。
qemu-system-x86_64 \
-nodefaults \
-machine q35,accel=kvm \
-cpu host \
-smp 2 \
-m 2G \
-chardev vc,id=monitor \
-mon monitor \
-serial vc \
-bios /usr/share/qemu/OVMF.fd \
-cdrom jammy-desktop-amd64.iso
Ctrl
++を使用してAlt
シリアルコンソールに入ると、2
期待どおりにGRUBメニューを表示できます。その後、Enterキーを押してシステムを起動しました。この時点からコンソールは静かなままです。ログインプロンプトがありません。
Mac(M2)でホストとまったく同じことをしましたが、常に次のログインプロンプトが表示されているので混乱しています。
Linux / AMD64でこれが機能しないのはなぜですか?
答え1
Linuxにログインコンソールを起動する場所を知らせることがないため、これは機能しません。これはデフォルトではありません。 UbuntuがARMの起動可能なISOのために特別に行うことです。
Ubuntuは、ブートローダとLinuxコンソールを利用可能なシリアルポートにリダイレクトするためにARMイメージを事前設定したようです。これは、しばしばARMベースのシステムの唯一の出力であるためです。 (これは遠くMacBookよりもRaspberry PiなどのデバイスからARMディストリビューションを起動する方が一般的です。 )
一方、x86 デバイスには通常この問題はありません。常にファームウェアが提供するテキストコンソール出力を使用できます。これはGRUBとLinuxの両方で使用されるデフォルトのコンソールです。シリアルポートへのリダイレクト(x86 1,2ではまれになる)は、ほとんどのディストリビューションでは決してデフォルトではありません。これらの構成は通常ユーザーに委ねられます。
(また、実際には1つのデバイスのみを/ dev / consoleのターゲットとして設定できるため、シリアルにリダイレクトするとファームウェアVGAコンソールにシステム起動メッセージが表示されません(Plymouthなどのディストリビューションを使用しない限り、メッセージをコピーできます) . - ログインプロンプトが表示されるまで自動的に保持されます。
ブートローダ画面にアクセスできる場合は、カーネルコマンドラインを編集してconsole=ttyS0,115200
/ dev / consoleのリダイレクトを指定すると、ブート出力が最初のシリアルポート(COM1)に移動します。その後、Systemdは自動的にserial-getty@ttyS0
サービスを開始し、ログインプロンプトを提供します。
ブートローダ画面にアクセスできない場合は、ISOイメージを変更してブートローダ設定(GRUBまたはSyslinux / isolinuxの可能性が高い)を編集する必要があります。これにより、シリアルを介してブートローダ自体をリダイレクトするために必要なオプションを追加することもできます。
最近のシステムバージョンには、DMIデータ(Qemuにオプションがあります)を介して追加のブートオプションを渡すメカニズムがありますが、まだ見ていません。残りのブートプロセスは表示されませんが、シリアルgettyサービスを開始するのに役立ちます(このメカニズムはカーネルではなくinitによって処理されます)。
1(非常に遅い速度で設定したり、ネットワークにリダイレクトするなど)、存在しないシリアルポートにデータを出力しようとすると問題が発生する可能性があります。
2(珍しいことを除いて、x86システムでは、非ターミナルデバイスがttyS0に接続されていることが非常に一般的であり、多くの人がModemManagerがGPS受信機または他のデバイスにプローブ「AT」コマンドを送信することについて不平を言っています。また、起動するたびにすべてのマウスのシリアルポートを検索することが頻繁に使用され、Linuxユーザーはこれを嘲笑するのが好きなので、デフォルトで「ubuntu login:」を送信することは人気がないようです。