解決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來接收核心的資料