玩转虚拟机

本文以VirtualBox为例,介绍虚拟机软件安装、虚拟机安装、虚拟机相关的设置,并安装 CentOS、Windows10 虚拟机。

虚拟机软件安装

免费的虚拟机软件推荐两个,一个是Oracle VM VirtualBox ,另一个是VMware Workstation Player 本文使用的是VirtualBox,只因为它的设置项多一点。

VirtualBox 是一个用于 x86 硬件的通用全虚拟器,面向服务器、桌面和嵌入式应用。相对 VMware 来说 VirtualBox 是轻量级的虚拟软件, 最关键的是 VirtualBox 是开源免费的。

安装 VirtualBox 过程非常的简单,只需要下一步下一步就可以,并且安装好之后界面是支持中文的。以下是 VirtualBox 安装好之后的主界面。

界面

在全局设置中我们可以对常规、热键、更新、语言、显示、网络、扩展、代理相关进行自定义设置。这里我推荐默认虚拟电脑位置设置到除 C 盘之外的其他盘,防止安装完虚拟机后 C 盘空间爆满,导致系统卡顿。

全局设定

Windows10开启虚拟化设置

在任务管理器中查看电脑是否开启虚拟化。

任务管理器

需要在 BIOS 中设置电脑的虚拟化。进入 BIOS 的方式每种品牌的电脑各不相同,以下这张表可以作为参考。

Windows虚拟机安装

下载系统镜像

首先,我们需要下载一个 Windows10 的 ISO 文件。这里推荐两种下载正版 Windows10 ISO 文件的方式,微软官方ITELLYOU

新建虚拟机

打开 VirtualBox,点击新建。

新建

选择我们需要创建虚拟机的系统。需要和 ISO 文件对应。

虚拟电脑名称和系统类型

内存大小自己看着办,我推荐大家默认就可以了。

内存大小

这一步默认即可。

虚拟硬盘

这一步默认即可。

虚拟硬盘文件类型 动态分配就好了,系统会对硬盘空间进行合理分配。

存储在物理硬盘上

这一步默认即可,如果自己电脑的硬盘空间小可以自定义设置,建议不要小于 30G。

文件位置和大小

创建好之后我们点击存储->SATA 端口 1: [光驱]没有盘片。文件就是选择我们下载好的 Windows10 ISO 文件。

最后我们点击启动就好了,之后的步骤就和普通装电脑系统一样进行即可。

启动虚拟机

设置1920x1080分辨率

我的电脑屏幕分辨率是 1920x1080,但是 VirtualBox 默认的分辨率是小于这个尺寸,导致每次开启虚拟机之后虚拟机的桌面只有我电脑屏幕中间的一部分,两边留黑。VirtualBox 默认分辨率是不可以选择的,需要我们手动安装一下增强功能。

首先我们看一下是否有以下的存储介质。

打开虚拟机,在顶上的菜单栏中选择设备->安装增强功能

然后在我的电脑中会多一个CD驱动器

打开之后我们会看到一些文件夹和文件,根据自己的操作系统版本来选择安装哪个,比如我安装的 Windows 10 企业版 ltsc 64 位操作系统,所以我安装的文件是VBoxWindowsAdditions.exe,如果你是 32 位操作系统,你就安装-x86 结尾的文件。

安装好之后重启虚拟机就可以选择虚拟机的分辨率了。选择视图->虚拟显示器1

img

CentOS虚拟机安装

以CentOS7为例,可以从CentOS官网下载 CentOS7 的 ISO 镜像。

新建虚拟机

设置设置虚拟机电脑名称,系统类型会自动为我们选择,如果不能选择 64 位则需要在 BIOS 里面开启虚拟化设置。

虚拟机电脑名称和系统类型

设置虚拟机的配置

2核4G,启动顺序勾选硬盘光驱,并将硬盘放在第一位,勾选启用EFI

网卡1默认为网络地址转换(NAT),将网卡2设置为仅主机(Host-Only)网络

删除控制器:IDE,点击控制器:SATA添加虚拟光驱,选择下载好的CentOS7 ISO文件(安装好之后可以将CentOS7虚拟光驱删除)。

安装CentOS7

选择好虚拟盘后,点击启动,之后就会进入到 CentOS7 系统的安装界面,只需要 5 分钟就可装好。

以下是安装过程的第一步,我们使用小键盘的上下键选择Install CentOS 7,点击Enter即可。

Install CentOS 7

相关设置

选择语言为中文

语言设置

设置日期和时间为上海时间

设置网络

设置为静态IP

设置主机名称(可选)

设置 root 密码

root密码

常见问题

如果宿主机ping不同虚拟机的局域网IP(本例中虚拟机的局域网IP为192.168.56.101)

检查/etc/sysconfig/network-scripts/ifcfg-enp0s3/etc/sysconfig/network-scripts/ifcfg-enp0s8里面ONBOOT是否为yes

修改ONBOOT为yes(激活网卡)后重启网络service network restart

手动设置虚拟机为静态 IP 并访问外网

本文是使用VirtualBox安装的CentOS7 x86_64 Minimal版本的虚拟机

安装好 CentOS 系统的虚拟机。默认是网络的连接方式为 NAT,该模式可以访问外网。

Nat

如果需要将虚拟机在局域网内的 IP 设置为固定 IP,需要添加网卡 2 为 Host-only 模式

Host-Only

至此我们添加了两个网卡,一个是 Nat,第二个是 Host-Only。

CentOS7网卡的配置文件在这个目录下面:/etc/sysconfig/network-scripts/,网络配置文件的格式为: ifcfg-xxx ,默认的网络配置文件是:ifcfg-enp0s3

编辑 ifcfg-enp0s3 这个文件,将其中的 ONBOOT=no 改为 ONBOOT=yes,如果在安装 CentOS 的时候就设置了网络,则可以忽略这一步。

最终ifcfg-enp0s3文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="6020592b-9f11-4cb6-aeac-8bcc3dba3690"
DEVICE="enp0s3"
# ONBOOT设置为yes
ONBOOT="yes"

保存文件并重启网络服务,重启网络的命令是 service network restart

ping www.baidu.com 可以 ping 通,说明与外网已经连通

但是此时我们的 IP 任然是动态的 IP,我们需要在添加一个网卡,也就是网卡 2,在文章的一开始已经让大家添加了网卡 2

复制ifcfg-enp0s3命名为ifcfg-enp0s8 命令为cp ifcfg-enp0s3 ifcfg-enp0s8

我们需要编辑ifcfg-enp0s8,最后重启网络即可

ifcfg-enp0s8文件需要变动的地方如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# BOOTPROTO改为static,意为静态模式
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
# NAME改为enp0s8,和文件名称后缀ifcfg-xxx保持一致
NAME="enp0s8"
# UUID 也需要修改,UUID可以重新生成一个,直接在命令行输入 uuidgen,回车就会出现结果,把结果复制过来。
UUID="87a8c150-3d1a-4111-97aa-816692dcf504"
# NAME改为enp0s8,和文件名称后缀ifcfg-xxx保持一致
DEVICE="enp0s8"
ONBOOT="yes"
# IPADDR需要在指定的IP范围内,NETMASK也和指定的服务器网络掩码一致,可以在VirtualBox主机网络配置管理器DHCP服务器中查看
IPADDR=192.168.56.102
NETMASK=255.255.255.0

VirtualBox 主机网络配置管理器 DHCP 服务器配置如下:

主机网络管理器

DHCP 服务器配置

如上步骤设置好后,我们就可以启动虚拟机后,使用局域网 IP 用 XShell 连接而且可以访问外网了。