1. 项目缘起:为什么要在Mac上折腾虚拟机与CentOS?
作为一名长期在MacBook Pro上工作的开发者,我经常遇到一个尴尬的局面:手头的项目需要部署到Linux服务器上,而本地环境是macOS。虽然macOS基于Unix,与Linux有诸多相似之处,但在系统服务管理、软件包安装(尤其是通过yum/dnf)、内核参数调优以及某些特定中间件的部署上,两者仍有显著差异。直接在Mac上模拟生产环境,往往会遇到各种“水土不服”的问题。
这时候,一个本地的Linux虚拟机就成了刚需。它就像在你的Mac里开辟了一个独立的、纯净的Linux沙盒,你可以随意安装、配置、测试,甚至搞崩了系统也能瞬间回滚,完全不影响宿主机。在众多虚拟机软件中,VMware Fusion因其与macOS系统深度集成、性能出色、网络配置灵活而成为我的首选。而CentOS,作为曾经红帽企业版Linux(RHEL)的免费、开源克隆版,以其极高的稳定性、长期的支持周期和庞大的企业级软件生态,成为了服务器领域的常青树。尽管CentOS Stream改变了其定位,但CentOS 7/8在现有系统中仍有广泛的应用,学习其安装与配置依然具有很高的实践价值。
因此,这篇内容将详细记录我在M1 Pro芯片的MacBook Pro上,使用VMware Fusion 13安装CentOS 7.9 Minimal系统的完整过程。我会不仅列出步骤,更会解释每一个关键选择背后的原因,并分享在安装过程中以及安装后初始配置时遇到的典型“坑”及其解决方案。无论你是为了学习Linux、搭建本地开发测试环境,还是为部署特定服务做准备,这份手把手的指南都能帮你绕开弯路,高效搭建起属于你的Linux实验平台。
2. 战前准备:理清思路与获取必备资源
在双击安装程序之前,充分的准备能避免过程中频繁的中断和搜索。整个安装流程可以概括为三个核心环节:软件准备、系统镜像获取、虚拟机蓝图规划。我们逐一拆解。
2.1 核心工具:VMware Fusion的选择与安装
首先,你需要虚拟机软件。VMware Fusion有两个主要版本:Fusion Player(个人免费版)和Fusion Pro(专业付费版)。对于大多数个人开发、学习用途,Fusion Player完全足够。它支持创建和运行虚拟机、快照、共享文件夹等核心功能,只是在一些高级网络拓扑、集群管理等功能上有限制。你可以直接从VMware官网下载Fusion Player,并使用个人邮箱免费申请一个序列号。
注意:确保下载的版本与你的Mac芯片匹配。Apple Silicon(M1/M2/M3)芯片的Mac必须下载支持ARM架构的版本。虽然Fusion通过转译技术可以运行x86系统,但性能有损耗。幸运的是,CentOS有ARM版本(即AArch64),我们后面会提到。
安装过程很简单,拖拽应用程序到“应用程序”文件夹即可。安装后首次运行,会提示你输入许可证密钥,填入申请到的序列号即可激活。
2.2 系统镜像:CentOS版本与架构的抉择
这是最容易出错的一步。打开CentOS官网或镜像站,你会发现一堆令人眼花缭乱的ISO文件。我们需要明确几个关键点:
- 版本选择:CentOS 7已于2024年6月结束支持,但对于学习经典的系统管理(如systemd、firewalld、yum)和许多传统软件部署,它仍是很好的选择。CentOS 8生命周期较短,CentOS Stream是滚动更新版。对于新手,我建议从CentOS 7.9 Minimal开始。它足够稳定,资料丰富,且Minimal版本只包含最基础的组件,干净、体积小,适合自己定制。
- 架构选择:这是关键!对于Apple Silicon Mac,最优选择是AArch64架构的镜像。例如:
CentOS-7-aarch64-Minimal-2009.iso。直接在Intel Mac或通过转译在Apple Silicon Mac上安装x86_64镜像也是可行的,但性能并非最佳。为了获得更好的原生体验,我们选择AArch64。 - 镜像下载:建议从国内镜像站下载,速度更快。例如阿里云镜像站、清华TUNA镜像站等。找到
7.9.2009/isos/aarch64/目录,下载其中的Minimal版ISO。
2.3 虚拟机规划:配置不是越高越好
创建虚拟机前,需要规划好资源分配。这并非简单地拉满配置,合理的分配更能提升整体效率。
- CPU与核心:分配给虚拟机的CPU核心数不应超过宿主机物理核心数。对于M1 Pro(10核),我通常分配给虚拟机2到4个核心。对于Minimal系统运行基础服务,2核已足够流畅;如果需要编译软件,可以给到4核。
- 内存:这是影响虚拟机流畅度的关键。CentOS 7 Minimal在图形界面下,1GB内存勉强够用,但会很卡顿。建议至少分配2GB(2048MB)。如果你的宿主机内存充足(16GB以上),分配4GB会给虚拟机带来更充裕的运行空间。我的Mac是32GB内存,因此分配了4GB给虚拟机。
- 硬盘:虚拟硬盘的大小和类型需要考量。对于学习和测试,20GB到40GB是合理的范围。我选择了30GB,这为安装一些额外的软件(如Docker、数据库)留下了空间。硬盘类型选择默认的“将虚拟磁盘拆分成多个文件”即可,便于迁移。
- 网络:这是虚拟机与外界(包括宿主机和互联网)通信的桥梁。VMware Fusion提供了几种网络模式:
- 桥接模式:虚拟机会像一台真实的设备一样,接入你的局域网,拥有独立的IP地址。可以直接被局域网内其他设备访问。
- NAT模式:虚拟机共享宿主机的IP地址上网,宿主机充当路由器。这是最常用、最省心的模式,虚拟机可以轻松访问外网,宿主机也能直接访问虚拟机,但局域网内其他机器默认不能直接访问虚拟机。
- 仅主机模式:虚拟机与宿主机形成一个封闭的私有网络,只能两者互访,不能上外网。
对于大多数开发测试场景,我强烈推荐使用NAT模式。它解决了网络连通性问题,又提供了一定的隔离性。我们后续的配置都将基于NAT模式展开。
3. 实战安装:从零创建CentOS虚拟机
准备工作就绪,现在开始动手。请跟随以下步骤,每一步我都会说明意图和注意事项。
3.1 创建新的虚拟机
- 打开VMware Fusion,点击菜单栏“文件”->“新建”,或者直接点击“+”号。
- 在弹出的窗口中,选择“从光盘或映像中安装”,然后将你下载的
CentOS-7-aarch64-Minimal-2009.iso文件拖入指定区域,或者点击“使用其他光盘或光盘映像”来手动选择。Fusion会自动识别出这是“CentOS 7 64位(ARM)”。 - 点击“继续”,Fusion会提示“是否需要使用快捷安装?”。这里务必选择“不,稍后安装操作系统”。快捷安装虽然方便,但有时会使用默认设置,不利于我们自定义分区、主机名等关键信息,也失去了学习安装过程的机会。
- 点击“继续”,来到系统类型选择。确保“Linux”被选中,版本下拉菜单中选择“CentOS 7 64位 ARM”。Fusion会根据这个选择优化虚拟硬件的兼容性。
- 点击“继续”,进行虚拟机配置的最终确认。这里你可以点击“自定设置”来详细调整我们之前规划的资源。
- 处理器和内存:根据规划,我设置为2个处理器核心,4GB内存。
- 硬盘:将大小调整为30GB。这里还可以选择磁盘类型,保持默认的“SCSI”即可。
- 网络适配器:确保网络连接是“与我的Mac共享(NAT)”。
- 点击“完成”并保存虚拟机文件(例如
CentOS 7.vmwarevm)。此时,虚拟机创建完成,但尚未安装系统。
3.2 启动并进入CentOS安装界面
- 在Fusion的虚拟机库中,选中你刚创建的CentOS虚拟机,点击“启动”按钮。
- 虚拟机会从ISO镜像启动,你会看到CentOS的安装引导菜单。使用键盘上下键选择“Install CentOS 7”,然后按回车键。
- 系统开始加载安装程序,稍等片刻,会进入图形化安装界面(对于Minimal版,也可能是简洁的TUI界面,但步骤类似)。首先需要选择安装过程中的语言,这里选择“中文”->“简体中文”,但注意,安装语言只影响安装界面,系统语言我们可以在安装后设置。点击“继续”。
3.3 关键配置:安装信息摘要
这是安装的核心环节,所有带黄色感叹号的项都需要配置。
- 日期和时间:点击进入,在地图上选择“亚洲/上海”,或者手动在列表中选择。确保时间正确,可以打开网络时间同步(NTP)。这对于服务器日志的时间戳准确性很重要。
- 键盘:保持默认的“汉语”即可。
- 语言支持:可以在“已安装的语言”中添加“中文”支持,但这会额外占用空间。对于Minimal系统,我通常只保留英文,需要中文支持可以在安装后通过
yum groupinstall "Chinese Support"来添加,这样更灵活。 - 安装源:因为我们是使用ISO镜像安装,这里会自动检测到“本地介质”,无需更改。
- 软件选择:这是Minimal版和完整版的区别所在。点击进入,基础环境默认就是“最小安装”,右边附加选项一个都不勾选。这就是我们想要的——一个最干净的系统。所有需要的软件,我们后续通过yum按需安装。
- 安装目的地(分区):这是最重要的一步。点击进入后,你会看到我们分配的30GB虚拟磁盘。我推荐使用自动配置分区,让安装程序帮你处理。它会创建一个合理的布局:
/boot分区(约1GB)、swap交换分区(内存的1-2倍,这里约4GB)、以及根分区/(占用剩余所有空间)。对于新手和大多数测试环境,这完全足够。如果你有特殊需求(如需要单独的/home或/var分区),可以在这里进行手动配置。 - KDUMP:这是一个内核崩溃转储机制,用于调试。对于学习测试环境,可以取消勾选“启用kdump”,以节省一点内存(约128MB+)和磁盘空间。
- 网络和主机名:点击进入,首先在顶部打开以太网连接(
ens160或类似名称)的开关,使其显示“已连接”。然后,你可以点击“配置...”来手动设置IP地址,但在NAT模式下,我强烈建议使用DHCP自动获取。VMware Fusion的NAT服务会为虚拟机自动分配一个IP(通常是192.168.xxx.xxx网段)。在主机名处,可以输入一个你喜欢的名字,比如centos7-local。点击“应用”。 - 安全策略:保持默认的“无策略”即可。
当所有带感叹号的项都配置完成后,右下角的“开始安装”按钮会变为可用状态。
3.4 完成安装与初始设置
- 点击“开始安装”,系统开始将选定的软件包安装到虚拟硬盘。这个过程需要几分钟到十几分钟,取决于你的Mac性能。
- 在安装过程中,你需要设置ROOT密码和创建一个用户。
- ROOT密码:点击“ROOT密码”设置。务必设置一个强密码,并牢记。如果密码强度太弱,可能需要点击两次“完成”来确认。
- 创建用户:虽然可以直接用root操作,但出于安全习惯,建议创建一个普通用户。点击“创建用户”,输入用户名(如
devuser)、全名,并设置密码。建议勾选“将此用户设为管理员”,这样该用户就可以使用sudo命令来执行需要root权限的操作,比直接使用root更安全。
- 安装完成后,点击右下角的“重启”按钮。虚拟机会重启,在启动过程中可能会提示你取出安装介质(即ISO镜像)。VMware Fusion通常会帮你自动“弹出”ISO,如果没有,你需要在虚拟机设置里手动断开ISO文件的连接。
- 重启后,你会看到CentOS 7的文字登录界面。使用你创建的用户名和密码登录(或者用root登录)。恭喜,CentOS系统安装成功!
4. 安装后必做:基础配置与网络调通
一个刚安装好的Minimal系统就像毛坯房,需要通水通电(网络)和简单装修(基础工具)。以下是登录后必须优先进行的几项配置。
4.1 网络验证与宿主机互通
首先,确认虚拟机已经正确获取到IP地址并能上网。
在虚拟机终端里,输入命令查看IP:
ip addr show或者
ifconfig(如果
ifconfig命令未找到,需要先安装net-tools:sudo yum install net-tools -y) 你应该能看到一个类似ens160或eth0的网卡,其inet地址就是虚拟机在NAT网络内的IP,例如192.168.123.128。测试外网连通性:
ping -c 4 baidu.com如果能看到回复,说明DNS和外部网络都正常。
关键一步:测试宿主机与虚拟机的互通。
- 在虚拟机里,尝试ping宿主机的IP。你可以在Mac的“系统设置”->“网络”里查看你的Mac在局域网(不是NAT网络)的IP,假设是
10.0.0.100。在虚拟机终端执行:ping -c 4 10.0.0.100 - 在宿主机(Mac)的终端里,尝试ping虚拟机的IP(例如
192.168.123.128):ping -c 4 192.168.123.128
正常情况下,宿主机能ping通虚拟机,但虚拟机可能无法直接ping通宿主机的局域网IP。这是因为VMware NAT网络的默认行为。宿主机访问虚拟机是直接的,而虚拟机访问宿主机需要经过NAT网关。不过,这通常不影响我们的开发,因为我们的操作主要是在宿主机上通过SSH连接虚拟机。
- 在虚拟机里,尝试ping宿主机的IP。你可以在Mac的“系统设置”->“网络”里查看你的Mac在局域网(不是NAT网络)的IP,假设是
4.2 更新系统与安装必备工具
Minimal系统非常精简,我们需要安装一些最常用的工具。
更新系统:首先更新yum缓存并升级所有包。
sudo yum makecache fast sudo yum update -y这个过程会下载并安装更新,需要一些时间。
安装基础工具集:
sudo yum install -y vim wget curl net-tools bash-completion epel-releasevim:比默认的vi更强大的文本编辑器。wget/curl:命令行下载工具。net-tools:包含ifconfig、netstat等传统网络工具。bash-completion:提供命令自动补全功能,提升效率。epel-release:安装EPEL(Extra Packages for Enterprise Linux)仓库,它提供了大量CentOS官方仓库中没有的常用软件。
安装开发工具组(可选,但推荐):
sudo yum groupinstall -y "Development Tools"这会安装
gcc,make,automake等一整套编译工具,方便后续从源码编译安装某些软件。
4.3 配置SSH服务以实现远程连接
在Mac的终端里直接操作虚拟机的窗口有时不方便,配置SSH可以让我们用熟悉的终端工具(如iTerm2)连接。
检查SSH服务是否已安装并启动:
sudo systemctl status sshdCentOS Minimal默认应该已经安装了
openssh-server。如果状态是inactive (dead),则启动它:sudo systemctl start sshd sudo systemctl enable sshd # 设置开机自启现在,你可以在Mac的终端里,使用以下命令连接虚拟机:
ssh devuser@192.168.123.128输入密码,即可登录。为了安全和使用方便,后续建议配置SSH密钥登录。
5. 进阶配置与避坑指南
系统跑起来了,但要让它好用,还需要一些优化和问题排查。以下是我在多次安装中总结出的经验。
5.1 配置静态IP(可选但建议)
DHCP获取的IP可能会变,这对于将虚拟机作为固定服务器来使用不太方便。我们可以为虚拟机配置一个NAT网络内的静态IP。
- 首先,在VMware Fusion中查看NAT网络的网段和网关。打开Fusion,进入“偏好设置”->“网络”,选中“NAT模式”网络,点击“高级选项...”。在这里你可以看到“子网IP”和“子网掩码”,例如
192.168.123.0和255.255.255.0。网关IP通常是子网IP的第一个地址,如192.168.123.1或192.168.123.2。记下这些信息。 - 在虚拟机中,编辑网络配置文件。CentOS 7的网络配置文件在
/etc/sysconfig/network-scripts/目录下,文件名类似ifcfg-ens160。sudo vim /etc/sysconfig/network-scripts/ifcfg-ens160 - 修改以下关键参数(假设你想设置IP为
192.168.123.150):BOOTPROTO=static # 将dhcp改为static ONBOOT=yes # 确保是yes,开机自启 # 添加以下静态配置 IPADDR=192.168.123.150 NETMASK=255.255.255.0 GATEWAY=192.168.123.2 # 替换为你的实际网关 DNS1=192.168.123.2 # DNS通常和网关一致,或者用114.114.114.114 DNS2=8.8.8.8 - 保存退出后,重启网络服务:
sudo systemctl restart network - 再次使用
ip addr show检查IP是否已变更为静态地址,并测试网络连通性。
5.2 共享文件夹设置:在Mac和CentOS间轻松传文件
VMware Tools提供了共享文件夹功能,但它在Linux上的安装有时比较麻烦。对于Apple Silicon Mac + ARM Linux,一个更稳定、更通用的替代方案是使用SSH文件传输协议。
- 在Mac上,你可以使用
scp命令来传输文件。- 从Mac复制文件到虚拟机:
scp /path/to/local/file devuser@192.168.123.128:/home/devuser/ - 从虚拟机复制文件到Mac:
scp devuser@192.168.123.128:/path/to/remote/file /path/to/local/destination/
- 从Mac复制文件到虚拟机:
- 如果你需要像访问本地文件夹一样访问虚拟机文件,可以使用SSHFS(基于SSH的文件系统)。首先在Mac上安装
sshfs(可以通过Homebrew安装:brew install sshfs),然后将虚拟机目录挂载到本地:
之后,你就可以在mkdir ~/centos_mount sshfs devuser@192.168.123.128:/home/devuser ~/centos_mount~/centos_mount目录下直接操作虚拟机里的文件了。卸载使用:umount ~/centos_mount。
5.3 常见问题与排错
问题:虚拟机启动后黑屏,只有光标闪烁。
- 可能原因:图形化安装界面在Apple Silicon的ARM架构上可能遇到驱动问题。
- 解决方案:在虚拟机启动时,在引导菜单(grub)界面,按
e键编辑启动参数。找到以linux开头的那一行,在行尾(在quiet后面)添加nomodeset参数,然后按Ctrl+X启动。这会让系统使用最基本的显示模式。进入系统后,可以尝试安装合适的显卡驱动,但对于服务器用途,命令行界面足够。
问题:
yum update或安装软件时速度极慢,甚至报错[Errno 14] curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"。- 可能原因:DNS解析失败,无法连接到CentOS的官方镜像站。
- 解决方案:
- 检查网络是否连通:
ping 114.114.114.114。 - 如果网络通但DNS有问题,手动配置DNS。编辑
/etc/resolv.conf文件(注意,如果使用NetworkManager,这个文件可能会被覆盖),添加:nameserver 114.114.114.114 nameserver 8.8.8.8 - 更一劳永逸的方法是修改网卡配置文件(如
ifcfg-ens160),添加DNS1和DNS2参数,如前面静态IP配置所示。 - 如果是因为国内访问国外镜像慢,可以更换为国内yum源(如阿里云、清华源)。备份原repo文件后,下载新的repo配置文件。
- 检查网络是否连通:
问题:忘记root密码或用户密码。
- 解决方案:这是虚拟机的一大优势。你可以通过修改虚拟机启动参数来重置密码。
- 在Fusion中启动虚拟机,在GRUB引导菜单界面,用方向键选中要启动的内核,按
e键进入编辑模式。 - 找到以
linux16或linux开头的行,将光标移到行尾,先输入一个空格,然后添加rd.break参数。 - 按
Ctrl+X启动。系统会进入一个紧急救援模式的shell。 - 依次输入以下命令:
mount -o remount,rw /sysroot # 重新以读写方式挂载根分区 chroot /sysroot # 切换根目录 passwd root # 修改root密码,输入两次新密码 touch /.autorelabel # 为SELinux重新打标签(重要!) exit # 退出chroot exit # 退出shell,系统会重启 - 重启后,使用新密码登录即可。
- 在Fusion中启动虚拟机,在GRUB引导菜单界面,用方向键选中要启动的内核,按
- 解决方案:这是虚拟机的一大优势。你可以通过修改虚拟机启动参数来重置密码。
经过以上步骤,你应该已经拥有了一个运行在Mac VMware Fusion中、网络通畅、基础工具齐全、并且可以通过SSH便捷访问的CentOS 7 Minimal系统。这个环境就像你的私人Linux实验室,接下来你可以放心地在其上部署Web服务(如Nginx、Apache)、数据库(MySQL、PostgreSQL)、容器环境(Docker),或者进行各种系统管理和软件开发实验,而不用担心搞乱你的主力Mac系统。每一次成功的安装和配置,都是对底层系统理解加深的过程,这种掌控感正是运维和开发的乐趣所在。