一、创建虚拟机
1、准备 CentOS 镜像
下载镜像,这里选择官方 CentOS7 镜像。
并在磁盘管理中压缩一个独立卷,用于虚拟机安装。
2、开启 HyperV
Windows10 开启 HyperV 步骤:Win+Q 唤出【控制面板】-【程序和功能】-【启用或关闭 Windows 功能】-勾选【Hyper-V】-【重启电脑】
3、配置网络
Win+Q 唤出【Hyper-V 管理器】-【虚拟交换机管理器】-【新建虚拟网络交换机】
这里有三个选项,外部、内部和专用网络,可以分别理解为:
- Bridge 模式(虚拟机与宿主机位于同一网络中,比如宿主机 IP 172.16.120.45,虚拟机 IP 172.16.120.50,宿主机网络中的所有计算机都可以访问它)
- NAT 模式(就像使用无线路由器的家庭网络一样,虚拟机将被分配到一个单独的子网,比如宿主机 IP 192.168.6.1,虚拟机 IP 192.168.6.3,这样虚拟机就可以像宿主机一样访问外部网络,但外部无法直接访问虚拟机)
- Host-only 模式(虚拟机将被分配一个 IP,但只有宿主机才能访问它)。
默认选择 Default Switch,即宿主机的网络交换机,也可以选择【外部】-【创建虚拟交换机】-重命名并选择外部网络(默认 Windows 网卡)-勾选【允许管理操作系统共享此网络适配器】
4、新建虚拟机
【Hyper-V 管理器】-【新建虚拟机】-【指定名称和位置】(建议独立盘符)-【指定代数】(第二代)-【分配内存】勾选使用动态内存-【配置网络】选择上一部重命名的网络交换机-【选择虚拟机硬盘】-【安装选项】选择准备好的镜像
5、创建虚拟机(非必需)
不是用 Hyper-V 也可以快速创建虚拟机,Win+Q 唤出【Hyper-V 快速创建】-【本地安装源】-【更改安装源】选择 CentOS7 镜像-【创建虚拟机】
6、启动虚拟机
关闭安全启动,连接虚拟机,安装操作系统。
如果碰到问题可以搜索下 HyperV 日志,根据提示去排查,PowerShell 查询 HyperV 日志方式:
Get-EventLog system -source *Hyper-V* -after "01/01/2024" | Out-GridView
二、远程配置
如果不希望每次连接虚拟机再访问,需要配置远程连接,这里使用 NAT 模式实现虚拟机与宿主机的互信。
1、动态 IP
虚拟机共用宿主机的网卡,相当于虚拟机是宿主机网段中的一台主机,可以互相访问。最简单的方式就是选择虚拟机网络交换机使用默认的 Default Switch,虚拟机 IP 会随着宿主机网络的变化而变化。
(1)修改网卡接口
ifcfg(Interface configuration)是可以控制单个网卡的软件接口,系统启动会调用这些接口并以此配置网络设备。一般以 ifcfg-{网卡名称} 命名,比如 ifcfg-eth0。它的 ifcfg 就在 /etc/sysconfig/network-scripts/ifcfg-eht0,连接虚拟机修改 DHCP 在启动时生效:
BOOTPROTO=dhcp
ONBOOT=yes
(2)重启网络
service network restart
终端提示 OK 表示重启成功:
Restarting network (via systemctl): [ OK ]
(3)验证连通性
ping 下宿主机 IP,如果宿主机可联网也可以再 ping 下 www.bing.com。都能 ping 通说明虚拟机已经可以使用宿主机访问外部网络了。
2、双网卡与静态 IP
如果宿主机的网络环境发生变化,比如网线、Wifi 切换等,使用 DHCP 动态分配的 IP 也会发生变化,宿主机与虚拟机就不能稳定连接,这时候就要考虑为虚拟机设置双网卡并使用静态 IP。
(1)创建网络交换机
在【虚拟交换机管理器】-【新建虚拟网络交换机】中创建一个名为 CentOS-NAT 的内部网络,并在虚拟机中【添加硬件】-【网络适配器】关联这个内部网络。
虚拟机实现双网卡,一个默认的名为 Default Switch 的虚拟交换机,用于外网访问,和一个刚创建的名为 CentOS-NAT 的虚拟交换机,用于宿主机与虚拟机的稳定 ssh。
最后,在【控制面板】-【网络和 Internet】-【网络连接】中修改 vEthernet(CentOS-NAT)中的 ip 和子网掩码,比如 192.168.0.1 和 255.255.255.0。
(2)修改网卡接口
连接虚拟机,拷贝文件 ifcfg-eht0 (/etc/sysconfig/network-scripts/ifcfg-eht0/),创建新的网卡接口用于与宿主机访问。
接口修改为使用静态 IP STATIC,IP 地址与宿主机在同一网段,比如 192.168.0.2,并修改网卡名称,UUID 不能与 eth0 相同也可以直接删除,具体如下:
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.0.2
NETMASK=255.255.255.0
重启网络:
service network restart
终端提示 OK 表示重启成功:
Restarting network (via systemctl): [ OK ]
查看网卡配置:
ifconfig
至少有三个网卡接口(部分省略):
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
(3)验证连通性
虚拟机 ping 宿主机 IP 192.168.0.1,ping www.bing.com,验证虚拟机双网卡正常工作。
宿主机 ping 虚拟机 IP 192.168.0.2,并 ssh 连接,验证宿主机可访问虚拟机。
宿主机切换 Wifi 或网线,再断掉 Wifi 或网线,验证 ssh 连接稳定。
三、常见问题
1、No Operating System Was Loaded
进入虚拟机无法安装镜像,选择第二代虚拟机创创建后,从设置中关闭安全启动,再次连接虚拟机即可正常安装。
2、创建虚拟机后宿主机 Wifi 连接无网络
新建虚拟机后重启宿主机。
3、无法启用 HyperV 监控程序
Windows 没有开启虚拟化支持,重启进入 BIOS 启用,根据硬件不同选择,比如 Intel Virtual Technology。
四、参考资料
1、微软 HyperV 对 CentOS 的支持
learn.microsoft.com/en-us/windo…
2、HyperV 安装 CentOS 虚拟机教程
3、CentOS 镜像
isoredirect.centos.org/centos/