解决KVM中宿主机通过console无法连接kvm中的客户机

2 篇文章 0 订阅
1 篇文章 0 订阅

一.问题描述:

KVM中宿主机通过console无法连接客户机,卡在这里不动了。

# virsh console vm01

Connected to domain vm01

Escape character is ^]

为KVM客户机添加virsh console支持  http://www.linuxidc.com/Linux/2013-02/79556.htm

二、解决办法:利用vnc或宿主机的桌面进入客户机vm01中添加参数

1、添加ttyS0的安全许可,允许root登录:

# echo "ttyS0" >> /etc/securetty

2、在/etc/grub.conf文件中为内核添加参数:

console=ttyS0

这步要注意:

console=ttyS0一定要放在kernel这行中(大约在第16行),不能单独一行,即console=ttyS0是kernel的一个参数,不是单独的,如下(往右拉进度条,在最后):

# cat -n /etc/grub.conf

  # grub.conf generated by anaconda

 #

 # Note that you do not have to rerun grub after making changes to this file

 # NOTICE:  You have a /boot partition.  This means that

 #          all kernel and initrd paths are relative to /boot/, eg.

 #          root (hd0,0)

 #          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root

 #          initrd /initrd-[generic-]version.img

 #boot=/dev/vda

  default=0

  timeout=5

  splashimage=(hd0,0)/grub/splash.xpm.gz

  hiddenmenu

  title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)

      root (hd0,0)

      kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0

      initrd /initramfs-2.6.32-431.el6.x86_64.img


3、在/etc/inittab中添加agetty:

S0:12345:respawn:/sbin/agetty ttyS0 115200

4、重启客户机:

# reboot

三、问题解决

# virsh console vm01

Connected to domain vm01

Escape character is ^]

Red Hat Enterprise Linux Server release 6.5 (Santiago)

Kernel 2.6.32-431.el6.x86_64 on an x86_64

 

vm01 login: root

Password:

Last login: Sun Oct 12 00:11:47 on tty1

[root@vm01 ~]#

附:关于终端的基本概念汇总

tty(终端设备的统称):

tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。

终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

pty(伪终端,虚拟终端):

但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)

pts/ptmx(pts/ptmx结合使用,进而实现pty):

pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。



====================================== 简洁版内容=======================================

来源自:https://blog.csdn.net/yingzinanfei/article/details/53165326

http://www.yingzinanfei.com/2016/09/22/virsh-consolelianjiekehuji/

  • 可以实现在宿主机中命令行连接到客户机的命令行
  • 需要在客户机添加支持
  • 客户机:
- 添加ttyS0的安全许可,允许root登录
#echo "ttyS0" >> /etc/securetty
- 在/etc/grub.conf文件中为内核添加参数
#sudo vim /etc/grub.conf
添加console=ttyS0到kernel属性那一行最后,约16行处
- 在/etc/inittab中添加agetty
#sudo vim /etc/inittab
在最后添加一句
S0:12345:respawn:/sbin/agetty ttyS0 115200
- 重启虚拟机
# reboot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 宿主机
# sudo virsh console vmname
Connected to domain vmname
Escape character is ^]
这里提示连接上去了,并且按Ctrl+]可以随时退出
输入:
tty
显示:
/dev/ttyS0
随即进入客户机终端,如果是初次登录先填写用户名再根据提示填写密码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 整体原理是securetty设置安全权限,允许root登录。修改grub.conf让内核把输出定向至ttyS0。然后在inittab中加一个ttyS0在系统启动时会生成一个ttyS0来接收内核的数据


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KVM(Kernel-based Virtual Machine)是一种开源的全虚拟化解决方案,它允许将Linux内核转变为一个虚拟化的hypervisor。在KVM宿主机是运行KVM虚拟机的主机系统,而客户机则是在宿主机上运行的虚拟机。 要获取宿主机信息,客户机可以采用以下几种方法: 1. 使用QEMU Guest Agent:QEMU Guest Agent是QEMU项目提供的一个用于与宿主机交互的工具。它可以通过virtio-serial接口与虚拟机进行通信。客户机通过安装和启动QEMU Guest Agent,并发送特定的查询命令,就可以获取宿主机的各种信息,如宿主机的CPU信息、内存使用情况、网络配置等。 2. 使用libvirt:libvirt是一个开源的虚拟化管理库,它提供了一套API用于管理和监控虚拟化技术(如KVM)。通过libvirt,客户机可以连接宿主机,并使用相关API获取宿主机的信息,如宿主机的虚拟化技术、硬件配置、网络设置等。 3. 使用网络通信:客户机可以通过网络通信的方式获取宿主机信息。例如,客户机可以使用SNMP(Simple Network Management Protocol)协议向宿主机发送查询请求,并获取宿主机的网络状态、系统负载等信息。 需要注意的是,获取宿主机信息可能需要一些特定的权限和配置。在实际操作客户机可能需要在宿主机上安装相关的软件或驱动,或者配置一些权限设置才能成功获取宿主机信息。 总之,通过QEMU Guest Agent、libvirt或网络通信等方式,KVM客户机可以与宿主机进行交互,并获取宿主机的各种信息,以实现更加灵活和高效的虚拟化管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值