/ virtualbox

Mac上使用VirtualBox虚拟CentOS

最近工作上需要写些PHP代码,我的Mac笔记本上并没有安装相关的环境,周末折腾环境安装各种软件和配置,参考的资料又比较零散,整个过程下来用了不少时间。我把过程记录下来方便以后遇到能够快速查阅,这不是一篇教程,姑且当成是备忘笔记吧。

我的Mac系统是macOS Sierra,这部分安装VirtualBox并在里面安装CentOS 7。

  1. VirtualBox 5
  2. CentOS 7 Minimal

VirtualBox(下载链接)安装很简单,下载之后点击.dmg文件按指引安装即可。除了VirtualBox以外,ParallelsDesktop、VMware Fusion8也是可以的,但都是收费软件。我选择VirtualBox是因为它轻量、开源、免费、跨平台的,功能上能满足我的需求。

安装CentOS###

下载好CentOS7 Minimal(下载链接)的ISO镜像之后,就开始系统的安装(我的VirtualBox是英文版),步骤如下:

  1. 打开VirtualBox点击左上角的 New新建,填入Name、Tyepe(Linux)、Version(Red Hat(64-bit)),Continue
  2. 设置Memory size,这里我设置为1024M就够了,Continue
  3. 设置Hard disk,默认(Create a virtual hard disk now),Create
  4. 设置Hard disk file type,默认(VDI),Continue
  5. 设置Storage on physical hard disk,默认(Dynamically allocated),Continue
  6. 设置File location and size, 默认位置,磁盘大小设为8G,Create

设置完成点击Start启动虚拟机,这时候弹框需要输入一个系统镜像,选择之前下载完成的CentOS镜像文件路径,点Start开始安装。安装过程很简单,系统安装位置选默认分区点一下,进行下一步进行安装,安装时间会比较长,过程中设置root密码,是否创建新用户由自己决定。

系统安装好之后点击重启,进入系统出现黑框要求输入登录账号和密码,系统就装好了。

设置网络###

系统安装好之后启动,一般不能直接访问网络,这是因为网卡没有启动。这里需要手动做一下配置。

[root@localhost ~]# curl www.zkt.name
curl: (6) Could not resolve host: www.zkt.name; Unknown error

输入命令ip addr可以看到有两个网卡lo、enp0s3前者的地址是127.0.0.1,后者没有ip地址,这里需要手动配置网卡enp0s3自动启动,打开vi /etc/sysconfig/network-scripts/编辑文件名为ifcfg-enp0s3内容设置ONBOOT=yes,然后重启系统reboot,IP获取正常,可以访问网络了。

设置SSH###

实际使用系统开发的时候,通常是在主机(Host)上使用ssh访问虚拟机(CentOS系统),使用ip addr可以看到网卡enp0s3的IP地址10.0.2.15,但是直接ssh这个地址是不行的。

ssh root@10.0.2.15 //网络不通,无响应

这是因为默认网络模式是NAT,该模式下虚拟机通过主机所在网络连接外网,但是主机不能直接访问虚拟机,解决办法是设置端口转发,规则如下:

<规则名>,<协议>,<主机IP>,<主机端口>,<虚拟机IP>,<虚拟机端口>
//可在虚拟机关闭的情况下在主机上使用如下命令设置(非root权限)
VBoxManage modifyvm "CentOS" --natpf1 "SSH,tcp,,2222,,22"
//为虚拟机"CentOS"设置端口转发规则,所以主机上2222端口上的tcp请求全部转发到虚拟机22(ssh的端口)端口上。

//也可以指定主机或虚拟机的IP
VBoxManage modifyvm "CentOS" --natpf1 "SSH,tcp,127.0.0.1,2222,,22"
//就只会转发127.0.0.1:2222的tcp请求到虚拟机22端口上

设置完端口转发之后,启动虚拟机,就可以在主机通过ssh访问虚拟机了。端口转发设置也可以通过VirtualBox的虚拟机设置界面设置。

设置Host-Only###

通过端口转发在NAT模式下实现主机访问虚拟机,但是每个端口都需要设置很麻烦。另一种办法就是设置一个Host-Only网络,为虚拟机增加一个Host-Only的网络适配器,实现主机与虚拟机之间的互通。

首先,需要创建一个Host-Only网络,路径VirtualBox->Preferences->Network->Host-Only Networks点击新增,会创建vboxnet0

新增Host-Only网络

关闭虚拟机,设置虚拟机Settings->Network->Adapter2->Enable Network Adapter选择Host-Only Adapter,Name选择刚创建的vboxnet0,点完成,重启虚拟机。

虚拟机中使用ip addr可以看到多了一个网卡enp0s8的IP地址192.168.56.102

//使用ssh通过该IP访问虚拟机
ssh root@192.168.56.102 //OK,成功

设置静态IP###

默认情况下虚拟机的IP是由VirtualBox的DHCP服务动态分配的,这在多台虚拟机的情况下不容易管理,最好一台机器固定一个IP,这时需要静态IP。

我们是通过Host-Only的方式来访问虚拟机,那么这里设置enp0s8网卡为静态IP,在创建vboxnet0的地方,点击修改不使用DHCP服务动态分配。

关闭dhcp

修改虚拟机enp0s8网卡的配置/etc/sysconfig/network-scripts/ifcfg-enp0s8

OTPROTO=static //静态模式
IPADDR=192.168.56.101 //地址
NETMASK=255.255.255.0
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes //开机启动

重启虚拟机,使用ip addr可以看到IP地址现在是192.168.56.101,设置成功。

堃田

堃田

不要畏惧眼前的困难,克服它们就能获得成长和机会。

Read More