web-dev-qa-db-ja.com

KVM Ubuntuの場合:コンソール接続に何も表示されない

次のコマンドを使用して、KVM仮想マシンを作成しました:

Sudo ubuntu-vm-builder kvm oneiric \
                  --domain xpstage \
                  --dest xpstage \
                  --Arch i386 \
                  --hostname xpstage \
                  --mem 1024 \
                  --user myuser --pass mypassword \
                  --bridge virbr0 \
                  --ip 192.168.1.50 --dns 8.8.8.8 \
                  --components main,universe,restricted \
                  --addpkg acpid --addpkg vim --addpkg openssh-server --addpkg avahi-daemon \
                  --libvirt qemu:///system ;

VMを起動できますが、ネットワーク(ssh)やコンソールを使用してVMに接続できません。

コンソールアクセスを有効にするために、コンソールセクションをVM定義ファイルに追加しました:

<domain type='kvm' id='10'>
  <name>xpstage</name>
  <uuid>1fbe45ca-655f-9de2-b552-6ed44b2fe4c2</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type Arch='x86_64' machine='pc-0.14'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/darugar/VMs/xpstage/tmpB1Hu5k.qcow2'/>
      <target dev='hda' bus='ide'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:d1:6d:b8'/>
      <source bridge='virbr0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/3'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/3'>
      <source path='/dev/pts/3'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='apparmor'>
    <label>libvirt-1fbe45ca-655f-9de2-b552-6ed44b2fe4c2</label>
    <imagelabel>libvirt-1fbe45ca-655f-9de2-b552-6ed44b2fe4c2</imagelabel>
  </seclabel>
</domain>

ただし、コンソールを介して接続しようとすると、何も表示されません。

$ virsh console xpstage
Connected to domain xpstage
Escape character is ^]

$ virsh ttyconsole xpstage
/dev/pts/3

「virshconsole」コマンドが接続しているように見えますが、「エスケープ文字は^]」以外は何も表示されません。

私はVNCやグラフィカルアクセスを探していないことに注意してください。シンプルなコンソールベースのアクセスが必要です。

この作品を作る方法についてのアイデアをいただければ幸いです。

5
Parand

接続する前に、ゲストマシンでシリアルコンソールを有効にする必要があります。正しい方法はここで説明されています: https://help.ubuntu.com/community/SerialConsoleHowto

最近のUbuntuバージョンはUpstartタスクとサービスを使用しているため、Upstartタスクを/etc/init/ttyS0.confとして追加する必要があります。これには次のものが含まれます。

# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc or RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L 115200 ttyS0 vt102

この方法で開始します。

$ Sudo start ttyS0

その後、ホストからシリアルコンソールに接続できるようになります。接続したら、Enterキーを押すことを忘れないでください。

4
daff

ホストからコンソールに何かを送信する必要があると思います。

したがって、console=ttyS0,38400n8のようなカーネルパラメータと

T0:2345:respawn:/sbin/getty -L ttyS0 38400 vt100

/etc/inittabで。

あるいは、VGAを削除するだけで、UbuntuはデフォルトでttyS0を使用するようになります(ただし、ここでは大げさに推測しています)。

0
Fox

Sshアクセスとvirshコンソールアクセスの2つの問題について説明します。明らかにコンソールが出発点なので、sshとネットワークをデバッグできます。 virsh consoleを機能させる方法は次のとおりです。

  1. ゲストをシャットダウンし、そのルートドライブをループデバイスにマウントします。

    $ Sudo kpartx -a guest.img
    $ Sudo kpartx -av guest.img 
    add map loop0p1 (253:1): 0 41940992 linear /dev/loop0 2048
    $ Sudo mount -t ext4 /dev/loop0p1 /mnt
    
  2. このファイルを作成します-例として、google "ttyS0(ゲストOSバージョン)"。

    /etc/init/ttyS0.conf: (this is the path for ubuntu 14.04)
    # ttyS0 - getty
    #
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    
    start on stopped rc RUNLEVEL=[2345]
    stop on runlevel [!2345]
    
    respawn
    exec /sbin/getty -L 115200 ttyS0 xterm
    
  3. /mnt/etc/securettyを編集し、ttyS0をリストに追加します。

  4. /mntkpartx -d guest.imgをアンマウントし、ゲストを起動します。

  5. これで、virsh console guestが機能し、ログインが成功します(securettyを編集しないと、ログインは常に失敗します)。

CentOS/RHELには、これを行う方法を説明するファイル/etc/init/serial.confがあります。

補遺コンソールのないゲストシステムがありました:virsh console guestを実行すると、「接続されました...」というメッセージが表示されましたが、画面に何も出力されませんでした。これはSSHを実行していました。シェルインしてttyS0.confファイルを作成した後、Sudo start ttyS0を実行すると、コンソールが機能し始めました。

0
nortally