1. 程式人生 > >解決KVM中宿主機通過console無法連線kvm中的客戶機

解決KVM中宿主機通過console無法連線kvm中的客戶機

一.問題描述:

KVM中宿主機通過console無法連線客戶機,卡在這裡不動了。

# virsh console vm01

Connected to domain vm01

Escape character is ^]

二、解決辦法:利用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

[[email protected] ~]#

附:關於終端的基本概念彙總

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

  • 可以實現在宿主機中命令列連線到客戶機的命令列
  • 需要在客戶機新增支援
  • 客戶機:
- 新增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來接收核心的資料