三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Mac上安装CentOS 7虚拟机:从工具选择到配置优化的完整指南

Mac上安装CentOS 7虚拟机:从工具选择到配置优化的完整指南

1. 从Mac到Linux:为什么要在本地搭建CentOS环境?

如果你是一名开发者、运维工程师,或者只是对服务器技术充满好奇的Mac用户,那么在你的MacBook上安装一个Linux虚拟机,尤其是像CentOS 7这样的企业级发行版,几乎是一个必经的“成人礼”。这听起来可能有点老生常谈,毕竟云服务器唾手可得。但相信我,本地虚拟机带来的那种即时反馈、随心所欲的快感,以及对于网络、存储、内核等底层概念的“手感”训练,是远程SSH连接无法比拟的。特别是当你想快速测试一个脚本、搭建一个临时的开发环境,或者学习一些可能“搞崩”系统的危险操作时,一个隔离的、可随时快照恢复的虚拟机就是你的最佳沙盒。

在Mac上玩转Linux,VMware Fusion一直是专业且高效的选择。它提供了近乎原生的性能和无缝的模式集成。然而,从Intel芯片过渡到Apple Silicon(M1/M2/M3)的Mac,给这个过程带来了一些新的“坑”。你可能会遇到镜像无法引导、虚拟机创建失败、甚至安装后网络不通等问题。网上的教程很多,但针对Mac新架构的、能一步到位的“避坑指南”却往往语焉不详。今天,我就结合自己最近在M2 MacBook Air上安装CentOS 7的完整经历,把从准备工具、安装系统到配置环境的每一步都拆开揉碎,重点标记那些容易让人卡住半天的地方。我们的目标很简单:让你在Mac上,无论芯片是Intel还是Apple Silicon,都能顺利跑起一个稳定可用的CentOS 7,并把它变成一个趁手的练习或开发环境。

2. 战前准备:工具选择与镜像下载的“门道”

工欲善其事,必先利其器。在开始安装之前,我们需要准备好三样东西:虚拟机软件、系统镜像和一个清晰的安装规划。这里面的每一个选择,都可能影响后续的安装是否顺利。

2.1 虚拟机软件选型:VMware Fusion还是Parallels Desktop?

在Mac平台,主流选择是VMware Fusion和Parallels Desktop。两者都是付费软件,但都提供功能完整的免费试用期。对于学习Linux而言,VMware Fusion的兼容性更广,其创建的虚拟机磁盘格式(.vmdk)也能方便地导入到Windows平台的VMware Workstation中,便于环境迁移。Parallels Desktop则在Mac集成体验上(如融合模式)做得更极致。考虑到我们的目标是学习标准的、接近生产环境的CentOS,我推荐使用VMware Fusion。请前往VMware官网下载最新版本。对于Apple Silicon Mac用户,务必确认你下载的是支持ARM架构的版本(通常版本号在12及以上)。

注意:VMware Fusion的个人免费使用许可(Personal Use License)对于个人学习和非商业用途是足够的,无需寻找破解或密钥,直接官网下载安装即可。

2.2 CentOS 7镜像:x86_64与AArch64的抉择

这是整个准备环节最容易踩坑的地方。CentOS 7主要提供两种架构的ISO镜像:

  1. x86_64 (AMD64):这是为传统的Intel/AMD处理器设计的版本,也是绝大多数服务器和教程使用的版本。
  2. AArch64 (ARM64):这是为ARM架构处理器设计的版本,例如苹果的M系列芯片、树莓派等。

关键决策点来了:如果你的Mac是Intel芯片,毫不犹豫选择x86_64镜像。但如果你的Mac是Apple Silicon(M1/M2/M3),情况就复杂了。VMware Fusion通过其内部的二进制转译技术(Rosetta 2集成),可以运行x86_64的客户机操作系统,但性能和兼容性可能不是最优的,且某些低级操作可能会出问题。理论上,为获得最佳兼容性,应选择AArch64镜像。

然而,现实很骨感。CentOS 7的AArch64镜像生态远不如x86_64成熟,许多软件包、Docker镜像默认都只提供x86_64版本。经过实测,在M2 Mac上使用CentOS 7的AArch64镜像安装,虽然可以成功,但在后续安装常见开发工具(如某些版本的Python、Docker)时,可能会遇到依赖库缺失或版本冲突的问题,对于新手极不友好。

我的建议是:对于Apple Silicon Mac用户,出于学习兼容性的最大考量,我们仍然安装 x86_64 版本的CentOS 7。VMware Fusion的转译做得足够好,能保证基础系统和使用学习。你可以从国内镜像站(如阿里云镜像、清华镜像)下载CentOS-7-x86_64-DVD-2009.iso或更新版本,速度会快很多。记住这个文件名,它代表了标准安装镜像。

2.3 规划虚拟机:给CentOS一个舒适的家

打开VMware Fusion,点击“+”创建新虚拟机。选择“从光盘或映像中安装”,并指向你下载好的ISO文件。在下一个界面,VMware可能会无法自动检测到CentOS(尤其是x86_64镜像在ARM主机上时),这很正常,我们手动选择“Linux” -> “CentOS 7 64位”。

接下来是配置虚拟硬件,这里有几个参数需要仔细斟酌:

  • 处理器与内存:对于学习用途,分配2个CPU核心4GB内存是一个甜点配置。足以流畅运行系统和中型应用,又不会过度占用宿主机资源。如果你的Mac内存充足(16G以上),可以给到8GB,体验会更佳。
  • 硬盘:默认的20GB对于最小化安装是够的,但如果你想安装图形界面、开发工具和Docker,建议直接设置为40GB。将磁盘存储方式选为“单个文件”,这样在Mac上管理起来更方便,性能也更好。
  • 网络适配器:务必选择“与我的Mac共享”(NAT模式)。这是最简单的方式,虚拟机会通过Mac的网络来访问互联网,并且会自动获得一个内网IP,宿主机(Mac)和虚拟机之间可以互相通信。桥接模式虽然能让虚拟机像独立设备一样接入局域网,但需要路由器配合,对于新手容易造成网络不通。

配置完成后,先别急着启动。我们点击“设置”,在“处理器和内存”选项里,有一个至关重要的选项(特别是在Apple Silicon Mac上):“启用虚拟化引擎”。请确保其下的“虚拟化Intel VT-x/EPT或AMD-V/RVI”和“虚拟化IOMMU”选项是勾选的。这能显著提升虚拟机的性能,尤其是对于需要硬件虚拟化支持的操作(比如在虚拟机里再跑Docker)。

3. 安装过程详解:从引导到首次登录的每一步

点击“启动”按钮,虚拟机将从ISO镜像引导。你会看到CentOS 7的安装启动菜单。直接按回车选择“Install CentOS 7”。如果屏幕卡住或出现错误,很可能与我们在2.2节讨论的架构问题有关。对于Apple Silicon Mac,如果在此步骤失败,可以尝试在启动时按Esc键,在启动参数行末尾添加nomodeset再回车,这会禁用显卡模式设置,有时能解决初期引导问题。

3.1 语言与时区设置

安装程序加载后,首先选择语言。为了学习原汁原味的Linux,我强烈建议选择English (United States)。这会迫使你熟悉命令行的英文环境,与绝大多数服务器和文档保持一致,减少后续因语言包导致的问题。当然,你也可以选择中文。

时区设置是关键。点击“DATE & TIME”,在地图上点击上海(或你所在位置),确保时区是Asia/Shanghai。同时,打开右上角的网络开关,让它连接网络(NAT网络会自动连接)。这一步非常重要,因为安装程序需要从网络获取更新和软件包信息。

3.2 软件选择与磁盘分区

接下来是“INSTALLATION DESTINATION”。点击进入后,你会看到我们之前分配的40GB虚拟磁盘。直接点击它,选择“I will configure partitioning”,然后点击“Done”进入手动分区界面。对于新手,我推荐一个简单实用的分区方案:

  • /boot: 1GB, 用于存放系统内核和引导文件。文件系统类型为xfs(CentOS 7默认)。
  • swap: 4GB, 交换分区。大小通常为物理内存的1-2倍,我们给了4GB内存,所以4GB的swap是合理的。文件系统类型为swap
  • /: 剩余所有空间(约35GB), 根分区,存放系统和其他所有数据。文件系统类型为xfs

点击“+”号依次添加即可。这个方案避免了/home单独分区,简化了管理,非常适合学习和测试环境。确认后点击“Done”,接受更改。

然后是“SOFTWARE SELECTION”。这里有一个大坑:不要选择默认的“Minimal Install”(最小化安装)!最小化安装连ifconfigwgetvim这些最常用的命令都没有,对于新手来说寸步难行。请选择“Server with GUI”。这样你会得到一个图形界面(GNOME),以及一套相对完整的服务器工具包。图形界面在初期配置网络、查看日志时非常直观,等你熟悉后,完全可以通过命令systemctl set-default multi-user.target来禁用图形界面,切换到纯命令行模式。

3.3 网络配置与Root密码

在“NETWORK & HOSTNAME”设置中,你应该能看到一个以太网连接(例如ens33)。将右上角的开关打开,主机名可以保持默认localhost.localdomain,或者改成你喜欢的名字,比如centos7-mac

最后,设置“ROOT PASSWORD”。设置一个强密码并牢记。同时,我强烈建议创建一个普通用户。点击“USER CREATION”,创建一个属于wheel组的用户(例如用户名为yourname)。wheel组的成员可以使用sudo命令来获得管理员权限,这比直接使用root账户更安全、更符合最佳实践。

完成所有设置后,点击“Begin Installation”。安装过程会持续一段时间,取决于你的Mac性能和网络速度。安装完成后,点击“Reboot”重启。

4. 首次启动与必须完成的“开箱即用”配置

重启后,你会看到CentOS 7的引导界面。首次启动会有一个初始化设置,接受许可证,完成一些简单配置即可进入系统(如果安装了GUI)或登录提示符(如果是最小化安装)。

4.1 网络连通性测试与yum源加速

登录后第一件事,打开终端(在GUI里可以搜索“Terminal”)。首先测试网络:

ping -c 4 www.baidu.com

如果能看到回复,说明网络通畅。如果不行,检查虚拟机网络适配器是否为NAT模式,并尝试重启网络服务:sudo systemctl restart network

接下来是至关重要的一步:更换yum源为国内镜像。CentOS默认的国外源速度极慢。我们将其替换为阿里云镜像源。

# 备份原yum源 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载阿里云的CentOS 7 yum源配置文件 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清理并重建yum缓存 sudo yum clean all sudo yum makecache

执行完成后,后续安装软件的速度将会飞起。

4.2 安装必备的“瑞士军刀”工具集

最小化安装或甚至Server with GUI都可能缺少一些极其常用的工具。我们一次性安装上:

sudo yum install -y epel-release # 安装EPEL扩展源,提供更多软件包 sudo yum install -y net-tools vim-enhanced wget bash-completion lrzsz tree
  • net-tools: 包含ifconfig等传统网络工具。
  • vim-enhanced: 功能强大的Vim编辑器。
  • wget: 命令行下载工具。
  • bash-completion: 为bash命令提供自动补全。
  • lrzsz: 方便在终端与宿主机之间传输文件(通过rz/sz命令)。
  • tree: 以树状图列出目录结构。

4.3 配置静态IP(可选但推荐)

NAT模式默认使用DHCP获取IP,每次重启IP可能会变。为了方便后续用SSH连接,我们可以配置一个静态IP(在NAT网段内)。

  1. 查看当前网络接口名和网关:
    ip addr # 通常第一个以太网接口是 ens33 或 eth0 ip route | grep default # 查看网关地址,通常是 192.168.xxx.1
  2. 编辑网络配置文件(假设网卡是ens33):
    sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
  3. 修改以下关键参数(根据你的实际情况调整):
    BOOTPROTO=static # 将dhcp改为static ONBOOT=yes # 确保是yes # 在文件末尾添加以下行(IP地址需要在你的NAT网段内,且未被占用) IPADDR=192.168.xxx.100 NETMASK=255.255.255.0 GATEWAY=192.168.xxx.1 # 前面查到的网关 DNS1=114.114.114.114 DNS2=8.8.8.8
  4. 重启网络服务:
    sudo systemctl restart network
  5. 验证配置:再次执行ip addr,应该能看到ens33的IP地址已经变成了你设置的静态IP。

5. 高阶集成:SSH连接、文件共享与性能调优

现在你有了一个基础可用的CentOS 7。但要让它真正成为Mac上的得力助手,还需要完成最后几步集成。

5.1 启用SSH并配置免密登录

在虚拟机里操作终端毕竟不方便。我们启用SSH,从Mac的终端直接连接过去。

  1. 在CentOS中安装并启动SSH服务:

    sudo yum install -y openssh-server sudo systemctl start sshd sudo systemctl enable sshd # 设置开机自启
  2. 在Mac的终端里,使用SSH连接虚拟机(假设你设置了静态IP192.168.xxx.100,用户是yourname):

    ssh yourname@192.168.xxx.100

    输入密码后,你就从Mac本地终端进入了虚拟机的命令行,体验无缝衔接。

  3. (进阶)配置SSH免密登录:每次输入密码太麻烦。在Mac终端生成密钥对,并将公钥上传到CentOS。

    # 在Mac终端执行,一路回车即可 ssh-keygen -t rsa # 将公钥上传到CentOS虚拟机 ssh-copy-id yourname@192.168.xxx.100

    之后再次SSH连接,就不再需要输入密码了。

5.2 设置宿主机与虚拟机之间的文件共享

VMware Fusion提供了非常方便的“共享文件夹”功能。

  1. 在VMware Fusion中,先关闭CentOS虚拟机。
  2. 进入虚拟机设置 -> “共享” -> 添加一个你Mac上的文件夹(例如~/SharedWithCentOS)。
  3. 启动CentOS,安装VMware Tools(这是实现共享文件夹等功能的关键):
    # 首先挂载VMware Tools的安装镜像 sudo mount /dev/cdrom /mnt # 复制安装包并解压 cp /mnt/VMwareTools-*.tar.gz /tmp/ cd /tmp tar -xzf VMwareTools-*.tar.gz cd vmware-tools-distrib/ # 运行安装脚本,一路回车选择默认选项即可 sudo ./vmware-install.pl
  4. 安装完成后,共享文件夹会自动挂载到/mnt/hgfs/目录下。你就能在CentOS中直接访问Mac上的文件了。

5.3 针对Apple Silicon Mac的性能优化建议

如果你在Apple Silicon Mac上运行x86_64的CentOS,可能会感觉性能不如原生应用。除了之前提到的确保开启虚拟化引擎外,还有几点可以尝试:

  • 分配更多内存:如果Mac内存充足,给虚拟机分配6GB或8GB内存会有明显改善。
  • 调整显卡内存:在虚拟机设置的“显示器”选项中,可以适当增加为虚拟机分配的显卡内存(如256MB或512MB),这对图形界面流畅度有帮助。
  • 关闭不必要的服务:如果你不需要图形界面,果断关掉它,能节省大量资源。
    sudo systemctl set-default multi-user.target # 设置默认启动到命令行模式 sudo reboot
  • 使用轻量级桌面环境:如果仍需要图形界面,可以考虑安装XfceMATE这类比GNOME更轻量的桌面环境。

6. 常见问题排查与“避坑”实录

即使按照上述步骤,你也可能遇到一些意外。这里汇总了几个我遇到或常见的问题及其解决方案。

6.1 安装过程中提示“Warning: /dev/root does not exist”

这通常发生在Apple Silicon Mac上尝试安装x86_64镜像时。根本原因是安装引导程序(bootloader)在识别虚拟磁盘时出了问题。解决方法:在安装启动菜单(第一个界面)按Tab键编辑启动参数。找到以vmlinuz开头的行,在行末(在quiet之前)添加inst.gpt参数,然后按回车。这个参数强制安装程序使用GPT分区表,通常能解决此问题。

6.2 安装后无法连接网络(ping不通外网)

首先确认虚拟机网络适配器是“NAT模式”。然后在CentOS内检查:

  1. 网络服务是否启动:sudo systemctl status network
  2. 网卡是否启用:ip link show,查看ens33状态是否为UP
  3. DNS配置是否正确:检查/etc/resolv.conf文件,确保里面有nameserver 114.114.114.114这样的行。如果被覆盖,可以在网卡配置文件(ifcfg-ens33)中像我们之前那样设置DNS1

一个常见陷阱是NetworkManager服务与network服务冲突。CentOS 7有时会同时运行这两者。可以尝试禁用NetworkManager:sudo systemctl stop NetworkManager; sudo systemctl disable NetworkManager,然后重启network服务。

6.3 虚拟机时间与宿主机不同步

VMware虚拟机有时会出现时间漂移。可以安装vmware-toolbox来启用时间同步功能(在安装VMware Tools时通常已包含)。也可以手动设置定时同步:

sudo yum install -y ntp sudo systemctl start ntpd sudo systemctl enable ntpd

同时,在VMware Fusion的虚拟机设置 -> “处理器和内存” -> 高级选项中,勾选“将客户机时间与主机同步”。

6.4 在虚拟机内运行Docker时提示cgroup或iptables错误

如果你后续想在CentOS 7里安装Docker,可能会遇到cgroup v2或防火墙冲突的问题。CentOS 7默认使用较旧的内核和cgroup v1,而新版Docker可能需要cgroup v2。一个可行的方案是,在安装Docker时,在/etc/docker/daemon.json配置文件中(如果不存在则创建)明确指定使用cgroup v1:

{ "exec-opts": ["native.cgroupdriver=cgroupfs"] }

关于防火墙,Docker会操作iptables规则,可能与firewalld冲突。可以考虑停止firewalld(学习环境):sudo systemctl stop firewalld; sudo systemctl disable firewalld,但更建议的做法是学习如何配置firewalld为Docker放行所需端口。

走到这里,你的Mac上应该已经有一个运行顺畅、配置完善的CentOS 7虚拟机了。从此刻起,它就是你探索Linux世界、实验各种服务的安全堡垒。记住,虚拟机的最大优势就是“快照”。在进行任何有风险的操作前,拍一个快照,你就拥有了无限后悔药。

← 返回列表