利用可能なグラフィックがないcentos7ゲスト用のシリアルコンソールがありますvirsh console vm
。ゲストには適切なconsole=ttyS0,115200n8
カーネルコマンドライン引数があります。
virsh console vm --devname vc1
私が話し、ログインプロンプトを受け取るように追加のコンソールを設定できますか?
本能的には、キャラクターデバイスをゲストの最初の6つの仮想コンソールに接続しようとしました。libvirt ドメイン形式そしてバーティオシリアルその方向に行かなければならないようですが、うまくいきません。
背景: 解決にはかなり時間がかかるネットワークの問題がありましたが、その間に、1人のチームメンバーがネットワークの問題を処理し、他のチームメンバーが中断することなくVM上で作業を続けなければならなかったため、ネットワークなしで複数のコンソールを使用しました。
私はそこにいることを知っています
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
virsh console <domain> --device <device>
VNCアクセスには6つの仮想端末を使用できます。構文を通して、合理的な方法で6つの仮想端末を持つ方がはるかにvirsh console
便利であるかどうか疑問に思います。
ソフトウェア:
# cat /etc/fedora-release # host
Fedora release 24 (Twenty Four)
# virsh --version
1.3.3.3
# qemu-system-x86_64 --version
QEMU emulator version 2.6.2 (qemu-2.6.2-8.fc24), Copyright (c) 2003-2008 Fabrice Bellard
# cat /etc/centos-release # guest
CentOS Linux release 7.3.1611 (Core)
ベストアンサー1
私はしばしば仮想マシンで複数の「コンソール」を使用します。 1つは開始を表示し、ログインプロンプトで終わる対話型コンソール用で、もう1つはこれらすべてをテキストファイルに書き込むことです(通常/var/lib/libvirt/consoles/<domain>.log
)。
もっと送ってもいいかわかりません。インタラクティブ仮想マシンの「コンソール」ですが、できる必要な数だけシリアルポートを追加し、仮想getty
マシンで実行してログインプロンプトを受け取ります。
VMのこれらのシリアルポートは、telnet
プロトコルを使用してホストのファイル、ソケット、またはTCPポートなどに接続できます。おそらく最も使いやすいのはTelnetポートです。
たとえば、ttyS1シリアルポートを介してアクセスできるシリアルポートを追加するには、telnet
次のXMLフラグメントを次の場所に保存します/tmp/serial1.xml
。
<serial type='tcp'>
<source mode='bind' host='127.0.0.1' service='4555' tls='no'/>
<protocol type='telnet'/>
<target port='1'/>
<alias name='serial1'/>
</serial>
それからvirsh attach-device --config <domain> /tmp/serial1.xml
。
これにより、次回の仮想マシンの再起動時にアクティブになるシリアルポートデバイスが仮想マシンに追加されます。 (USBではなくシリアルポートの代わりにホットプラグ可能なUSBデバイスとして追加し、VMを再起動する必要がないようにする方法があるかもしれません。私は気付くほど気にしませんでした。)
VMが再起動したら、ポートでgettyを実行します。たとえば、sysvinitを/etc/inittab
使用してtelinit q
。
システムを使用してください:
systemctl enable [email protected]
systemctl start [email protected]
KVMホストからVMのシリアルポートに接続するには、を実行しますtelnet 127.0.0.1 4555
。
必要なだけ多くのシリアルポートを作成でき、各ポートは異なるポートでリッスンします。 XMLフラグメントでTCPポート番号(service=
)、宛先ポート、およびエイリアスを変更するだけです。
別のコンピュータからアクセスする必要がある場合は、別のIPアドレスでリッスンすることができます(tls='yes'
この場合はTLS対応telnet
クライアントを使用して接続する必要があるかもしれません)。この場合、qemuを使用するための証明書を設定する必要があります。 )。
たとえば、Debian Stretch VMに2つのシリアルポートを追加しました。
まず、localhostのttyS1:4555
$ telnet localhost 4555
Trying 127.0.0.1...
Connected to localhost.mydomain.
Escape character is '^]'.
Debian GNU/Linux 9 stretch ttyS1
stretch login:
telnet> quit
Connection closed.
その後、ttyS2はlocalhost:4556にあります。
$ telnet localhost 4556
Trying 127.0.0.1...
Connected to localhost.mydomain.
Escape character is '^]'.
Debian GNU/Linux 9 stretch ttyS2
stretch login:
telnet> quit
Connection closed.