kvm虚拟机添加串口

修改xml文件如下:

原始xml文件内容只有一个serial口和一个console口
<serial type='pty'>
   <log file='/var/lib/nova/instances/443cc326-2082-4bdb-b0c8-71985f2e66f4/console.log' append='off'/>
   <target type='isa-serial' port='0'>
     <model name='isa-serial'/>
   </target>
 </serial>
 <console type='pty'> 
   <log file='/var/lib/nova/instances/443cc326-2082-4bdb-b0c8-71985f2e66f4/console.log' append='off'/>
   <target type='serial' port='0'/>
 </console>
  ########################################
 添加新的serial或者console口,直接复制进行添加即可(要修改port),如下:
     <serial type='pty'>
      <log file='/var/lib/nova/instances/443cc326-2082-4bdb-b0c8-71985f2e66f4/console.log' append='off'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <serial type='pty'>
      <log file='/var/lib/nova/instances/443cc326-2082-4bdb-b0c8-71985f2e66f4/console.log' append='off'/>
      <target type='isa-serial' port='1'>  ############
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <log file='/var/lib/nova/instances/443cc326-2082-4bdb-b0c8-71985f2e66f4/console.log' append='off'/>
      <target type='serial' port='0'/>
    </console>
        <console type='pty'>
      <log file='/var/lib/nova/instances/443cc326-2082-4bdb-b0c8-71985f2e66f4/console.log' append='off'/>
      <target type='virtio' port='1'/> #########
    </console>

说明:
可以有多个pty类型的serial,每一个serial对应的pty设备都被重定向到/dev/下的一个设备。
可以有多个pyt类型的console,每一个console对应的pty设备都被重定向到/dev/下的一个设备。
只有第一个console可以是serial类型,或者说只能有一个console是serial类型的。其他console可以是virtio的。
如果console类型是serial类型的,则qemu不再创建console设备,因为与第一个serial设备表示同一个设备。
即serial0既表示一个serial又表示一个console
#############################################
在虚拟机内部
给虚拟机添加了virtio类型的console设备后,在虚拟机内部对应设备文件/dev/hvc*
给虚拟机添加了serial类型的serial设备后,在虚拟机内部对应设备文件/dev/ttyS*
在主机上进入虚拟机的控制台

# virsh console cvm --devname serial0

也可以连接其他的console:# console cvm --devname console1
说明:
devname 是console设备的名称。
要进入虚拟机的控制台只能通过console设备,不能通过serial设备(可以通过serial0,因为serial0也是一个console设备)
要通过virtio类型的console进入虚拟机的console,不需要对虚拟机做任何修改
要通过serial类型的console进入虚拟机的console,需要 在虚拟机的cmdline中添加console=ttyS0
串口在主机上的重定向
虚拟机的串口在主机端可以实现重定向功能,用来方便的与虚拟机进行串口通信,例如:
重定向到Pseudo TTY,即/dev/pts/*

    <serial type='pty'>
      <target type='isa-serial' port='1'>
        <model name='isa-serial'/>
      </target>
    </serial>

这样就可以通过对PseudoTTY的读写来与虚拟机的串口进行通信了。
另外还可以重定向到file、virtual console、null、Host device proxy、Named pipe、TCP client/server、UDP network console、UNIX domain socket client/server、Spice channel、Nmdm device。
以重定向到PseudoTTY的方式演示串口通讯:
给虚拟机添加一个pty类型的串口(第一个pty串口默认给console使用,这里用第二个串口)

    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <serial type='pty'>
      <target type='isa-serial' port='1'>
        <model name='isa-serial'/>
      </target>
    </serial>
如下图所示

##########################################
另外kvm虚拟机也可以透传pipe类型的串口,如下:

  <devices>
  <serial type="pipe">
    <source path="/tmp/mypipe"/>
    <target port="1"/>
  </serial>
</devices>

主机端:
在这里插入图片描述
虚拟机内部:
在这里插入图片描述
可以看到两端可以直接交互通讯。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值