实现centos6的kvm虚拟机console登陆控制
一、需求
1、安装kvm虚拟化软件
2、安装一台基于redhat 6.4系统的kvm虚拟机
3、实现使用console登陆控制
4、新建一个内存1G网卡桥接本机eth0 kvm虚拟机
二、实战部署
2.1 环境准备
2.2 安装kvm虚拟化软件
2.2.1. 查看系统是否支持KVM虚拟化
[root@kvm01 ~]# egrep '(vmx|svm)' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec
2.2.2 安装kvm软件包
[root@kvm01 ~]# yum install libvirt virt-install qemu-kvm qemu-kvm-tools kvm kmod-kvm -y
#启动libvirtd服务
[root@kvm01 ~]# systemctl start libvirtd.service
[root@kvm01 ~]# systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-30 17:59:21 CST; 26s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 12611 (libvirtd)
Tasks: 20 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─12611 /usr/sbin/libvirtd
└─12637 /usr/sbin/ebtables --concurrent -L
Aug 30 17:58:52 kvm01 systemd[1]: Starting Virtualization daemon...
Aug 30 17:59:21 kvm01 systemd[1]: Started Virtualization daemon.
2.2.3 查看虚拟化环境
[root@kvm01 ~]# lsmod |grep kvm
kvm_intel 170181 0
kvm 554609 1 kvm_intel
irqbypass 13503 1 kvm
[root@kvm01 ~]# virsh --version
4.5.0
[root@kvm01 ~]# virt-install --version
1.5.0
2.3 装一台基于redhat 6.4系统的kvm虚拟机
2.3.1 创建虚拟机
[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant=rhel6 --name redhat-6.4 --ram 1024 --cdrom=/data/rhel-server-6.4-x86_64-dvd.iso --disk path=/data/redhat-6.4.qcow2,size=10,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Allocating 'redhat-6.4.qcow2' | 10 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
[root@kvm01 ~]# ll /data
total 3635396
-rw------- 1 qemu qemu 10739318784 Aug 30 19:46 redhat-6.4.qcow2
-rw-r--r-- 1 qemu qemu 3720347648 Jun 18 2015 rhel-server-6.4-x86_64-dvd.iso
2.3.2 查看虚拟机状态
[root@kvm01 ~]# virsh list
Id Name State
----------------------------------------------------
1 redhat-6.4 running
2.3.3 vnc登录安装redhat 6.4 操作系统
在window上安装TightVNC,tightvnc官网:http://www.tightvnc.com。vnc是一个跨平台的远程桌面软件,安装kvm虚拟机系统的时候使用,使用默认端口5900。连接后安装。
2.4 实现使用console登录控制
2.4.1 vnc登录获取虚拟机ip
2.4.2 ssh远程登录
2.4.3 添加ttyS0的许可,允许root登陆
[root@localhost ~]# echo "ttyS0" >> /etc/securetty
[root@localhost ~]# cat /etc/securetty |grep ttyS0
ttyS0
2.4.4 编辑/etc/grub.conf中加入console=ttyS0
[root@localhost ~]# vi /etc/grub.conf
[root@localhost ~]# cat /etc/grub.conf |grep console
kernel /vmlinuz-2.6.32-358.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
[root@localhost ~]# sync
2.4.5 编辑/etc/inittab,在最后一行加入内容 S0:12345:respawn:/sbin/agetty ttyS0 115200
[root@localhost ~]# echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >>/etc/inittab
[root@localhost ~]# tail /etc/inittab
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
S0:12345:respawn:/sbin/agetty ttyS0 115200
2.4.6 重启虚拟机
[root@localhost ~]# reboot
2.4.7 检查虚拟机的状态
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
2 redhat-6.4 running
2.4.8 进行连接测试
[root@kvm01 ~]# virsh console redhat-6.4
Connected to domain redhat-6.4
Escape character is ^]
Red Hat Enterprise Linux Server release 6.4 (Santiago)
Kernel 2.6.32-358.el6.x86_64 on an x86_64
localhost login: root
Password:
Last login: Sun Aug 30 20:23:31 from 192.168.122.1
[root@localhost ~]# who
root ttyS0 2020-08-30 20:34
2.5 新建一个内存1G网卡桥接本机eth0 kvm虚拟机
2.5.1 创建桥接网络
[root@kvm01 ~]# virsh iface-bridge eth0 br0
Created bridge br0 with attached device eth0
[root@kvm01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:0c:29:99:03:8a brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:99:03:94 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.7/24 brd 172.16.1.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::9bb1:a251:b126:2fa0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:99:03:8a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.7/24 brd 10.0.0.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe99:38a/64 scope link
valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:21:fd:94 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:21:fd:94 brd ff:ff:ff:ff:ff:ff
#查看网卡配置文件
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.7"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"
2.5.2 基于桥接网络创建虚拟机
[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name web01 --memory 1024 --vcpus 1 --disk /data/test.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Domain creation completed.
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
3 web01 running
- redhat-6.4 shut off
[root@kvm01 ~]# virsh vncdisplay web01
:0
1)vnc登录查看ip
2)用查到的ip远程登录
[root@bogon ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:b0:63:f2 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.128/24 brd 10.0.0.255 scope global eth0
inet6 fe80::5054:ff:feb0:63f2/64 scope link
valid_lft forever preferred_lft forever
2.5.3 将已有的虚拟机修改成桥接网络
1)编辑配置文件
[root@kvm01 ~]# virsh edit redhat-6.4
Domain redhat-6.4 XML configuration edited.
<interface type='bridge'>
<mac address='52:54:00:06:6b:c5'/>
<source bridge='br0'/>
2)重新启动redhat-6.4
[root@kvm01 ~]# virsh start redhat-6.4
Domain redhat-6.4 started
[root@kvm01 ~]# virsh list --all
Id Name State
----------------------------------------------------
3 web01 running
5 web03 running
6 redhat-6.4 running
3)vnc登录获取ip
[root@kvm01 ~]# virsh vncdisplay redhat-6.4
:1
4)远程登录
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:06:6b:c5 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.130/24 brd 10.0.0.255 scope global eth0
inet6 fe80::5054:ff:fe06:6bc5/64 scope link
valid_lft forever preferred_lft forever
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏