web-dev-qa-db-ja.com

VMにシリアルコンソールをプロビジョニングする

VMにシリアルコンソールが必要な仮想アプライアンス(qcow2イメージ)があります。つまり、何もインストールする必要はありません。 VMこのqcow2ディスクから起動して、シリアルインターフェイス経由で仮想アプライアンスにアクセスする必要があります。virt-installでこれを行うことは可能ですか? --extra-args="console=ttyS0,115200"virt-installに変更する場合、--locationを指定する必要があります。virt-installを使用してシリアルを有効にした仮想マシンを起動する回避策はありますが、配布ツリーのインストールソース?

3
Martin

はい、可能ですが、シリアルコンソールを追加するには複数の手順があります。

--extra-argsは、--locationとの組み合わせでのみ使用できます。ローカルのqcow2ディスクイメージから作業しているので、--locationは実際には探しているメカニズムではありません。

代わりに--consoleを探しています:

コンソール:

--console
  Connect a text console between the guest and Host. Certain guest and 
  hypervisor combinations can automatically set up a getty in the guest, so an
  out of the box text login can be provided (target_type=xen for xen paravirt
  guests, and possibly target_type=virtio in the future).

実際には、これは次のように追加されます(最新のLinuxシステムの場合)。

--console pty,target_type=virtio 

:利用可能な構成に関するその他のオプションをここで取得できます: https://libvirt.org/formatdomain.html# elementsConsole

すでにQCOW2ベースのアプライアンスを準備していたので、これを次のようにテストできました。

virt-install --name thing --memory 512 \
    --console pty,target_type=virtio --disk appliance.qcow2 --boot hd

舞台裏で、これは「ドメイン」(ホストの構成を格納するXMLファイル)にいくつかの追加を実行しています。例えば:

<controller type='virtio-serial' index='0'>
  <alias name='virtio-serial0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>

<console type='pty' tty='/dev/pts/14'>
  <source path='/dev/pts/14'/>
  <target type='virtio' port='0'/>
  <alias name='console0'/>
</console>

<channel type='spicevmc'>
  <target type='virtio' name='com.redhat.spice.0' state='disconnected'/>
  <alias name='channel0'/>
  <address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>

これが機能しない場合は、ブートオプションinsideguestfishlink )などのツールでアプライアンスを編集するか、またはカーネルの場所、initrd、および--bootを使用してオプションを手動で指定します。 guestfishの場合、探しているものを達成するためのレシピさえあります: guestfish-recipies:VMでgrub構成を編集

ブート:

--boot 
  Optionally specify the post-install VM boot configuration. This option
  allows specifying a boot device order, permanently booting off
  kernel/initrd with option kernel arguments, and enabling a BIOS boot menu
  (requires libvirt 0.8.3 or later)

       --boot kernel=KERNEL,initrd=INITRD,kernel_args="console=/dev/ttyS0"
           Have guest permanently boot off a local kernel/initrd pair, with the 
           specified kernel options.
4
Brian Redbeard