给一台M1芯片的MacBook装CentOS 8,听起来有点绕,拆开其实就是两件事:第一,M1是ARM架构,得找aarch64的CentOS 8镜像;第二,装一个没有图形桌面的最小服务器,也就是无界面安装,装完只有一个命令行登录界面。CentOS 8已经停止维护,但这完全不影响你在本地虚拟机里拿它练手,反而能逼自己完整走一遍Linux服务器的初始化流程。这篇文章既适合想在Apple Silicon设备上快速跑一个轻量Linux环境的人,也适合刚接触Linux、想搞明白系统安装到底要调哪些参数的新手。
1. M1 MacBook装CentOS 8之前:先把aarch64和x86_64分清楚
1.1 M1只能用ARM版CentOS,别拿x86镜像浪费时间
M1芯片用的是ARM架构,和传统PC的x86_64架构完全是两套指令集。普通Linux镜像大多面向x86_64,下载下来双击挂载没问题,但真正启动安装时,要么显示不支持,要么卡在黑屏。要给MacBook M1装CentOS 8,第一步就是明确镜像后标注必须是aarch64。
CentOS官方对不同架构分开发行版,文件名里如果写的是x86_64,那就是给Intel机器用的;aarch64才是ARM 64位版本。M1属于ARM 64位,所以安装包一定选CentOS-8-aarch64-XXX.iso这种命名。如果手头只有x86_64镜像,在虚拟机里也能强行用模拟方式跑,但性能会大打折扣,完全没有必要。
另外要注意CentOS 8在2021年12月31日已经停止维护,官方源已经不再接收更新。教程里我会用最后一个版本8.5.2111作为示范,这并不影响你体验安装流程,反而能让你顺带学会一套处理EOL系统源的方法。
1.2 三种虚拟化方案对比:选了QEMU/UTM
在M1上装CentOS 8,目前主流有三条路:U系列的虚拟化App、商业虚拟化软件、纯命令行QEMU。商业虚拟化软件体验好,但CentOS 8已经EOL,官方不再支持,新版软件对老系统兼容性未必好。纯命令行QEMU自由度最高,但对新手来说,光是记参数就能劝退一半人。
我选的是UTM,它本质上是QEMU的图形化封装,既保留了QEMU的兼容性,又不需要手写一长串启动命令。UTM在Apple Silicon上可以用虚拟化模式,也可以走QEMU模拟模式。对于aarch64的CentOS 8,优先用虚拟化模式,速度和性能都接近原生;如果遇到启动不了的特殊情况,再切到QEMU后端做兼容测试。
用UTM还有一个好处:虚拟机的磁盘、网络、显示设备都有现成配置,不会像纯QEMU那样一不小心就把网卡或显卡参数写错。对想快速落地的人来说,这是最省心的路径。
2. 下载CentOS 8镜像与校验:无界面安装的准备工作
2.1 选Minimal版而不是DVD版,体积差了一倍
CentOS 8安装镜像常见的有DVD版和Minimal版。DVD版集成了大量软件包,镜像体积大,安装时选项更多,但大部分你根本用不上。既然目标是无界面安装,必然选Minimal版,它只带最基础的系统环境和安装器,体积小、下载快,安装完后默认也是纯命令行。
在CentOS的官方下载列表里,进入aarch64目录,找CentOS-8-aarch64-Minimal-2111.iso。这个版本号2111代表2021年11月,是CentOS 8生命周期的最后一个版本。如果你找到的站点只提供DVD ISO,也没有关系,安装时手动勾选Minimal Install就可以,效果一样,只是下载浪费点时间。
下载完成后,建议把ISO文件放到一个固定目录,比如~/Downloads/CentOS,避免后面配置UTM时到处找文件。
2.2 校验SHA256,避免坏镜像导致安装中断
ISO文件下载时可能因为网络问题损坏。损坏的镜像在启动安装时会出现莫名其妙的问题,比如安装器报错、分区看不到、安装到一半卡死。排查起来非常痛苦,所以下载完第一件事就是校验哈希值。
在MacBook M1上,打开终端,进入ISO所在目录,执行:
shasum -a 256 CentOS-8-aarch64-Minimal-2111.iso命令会算出一串64位的哈希值。到CentOS官方镜像站找到对应的SHA256SUMS文件,对比一下是否一致。如果一致,镜像没问题;如果不一致,重新下载一次。这一步虽然简单,但能省掉后面至少一小时的排查时间。
校验完成后,再安装UTM。UTM可以从Mac App Store直接安装,也可以从项目主页下载。安装完打开,确认窗口标题里的版本号不是太老,太老的版本可能缺少Apple Silicon支持。
3. 用UTM创建虚拟机:CPU、内存、磁盘、显示参数一次配好
3.1 虚拟机架构、引导方式与后端选择
创建虚拟机的关键是选择系统和架构。在UTM主界面点击新建虚拟机,选择Virtualize,然后操作系统选Linux (ARM64),这一项直接对应aarch64。如果在创建时选成了Linux (x86_64),后面加载CentOS aarch64镜像会出问题。
接下来设置内存和CPU。M1 MacBook的内存如果是16GB,给虚拟机分配4GB比较合适;如果是8GB,可以分3GB。CPU核心数给4核就行。磁盘建议选20GB,动态分配,意思是实际用多少占多少,不会一开始就把MacBook的存储全部占用。这些参数不是越大越好,分配给虚拟机的资源过多,MacBook自己运行也会变卡。
引导方式在UTM里一般默认是UEFI。CentOS 8 aarch64支持UEFI引导,保持默认即可。如果之后启动时进入了EFI Shell界面,不要慌,说明引导顺序没找到系统,稍后我会专门讲排查方法。
后端选择上,我建议先用QEMU后端。UTM在Apple Virtualization框架下对现代Linux兼容性不错,但CentOS 8的引导和驱动链相对老一些,QEMU后端的兼容层更完整。如果你后面遇到启动卡住,再去设置里切换后端测试,会有奇效。
3.2 显示设备与“无界面”的真实含义
很多新手把“无界面安装”理解成安装过程不能出现任何图形,其实不是。这里的“无界面”说的是最终系统不安装GNOME或KDE这样的图形桌面环境,安装完成后只有命令行。安装器本身还是需要一个基础显示画面来交互,否则你连分区和密码都配不了。
所以UTM的显示设备保持默认即可,一般是virtio-gpu或ramfb。安装器会以简易图形模式启动,能正常显示按钮和输入框,但装出来的系统不会有桌面。
如果你真的希望安装过程也走纯文本模式,可以在启动安装介质后,在GRUB引导菜单按e编辑启动参数,在linux行末尾追加:
text console=ttyS0,115200然后按Ctrl-X启动。CentOS 8的文本安装模式功能比图形模式少,手动分区会受限,所以我个人建议新手就用安装器的简易图形界面,重点是让装完的系统没有GUI。这才是标题里“无界面安装”的实际需求。
4. 安装CentOS 8系统配置:分区、软件选择、网络与密码
4.1 安装界面怎么导航
创建好虚拟机后,把下载的ISO挂载到光驱,然后启动虚拟机。正常进入引导菜单后,选择Install CentOS 8,按回车。如果走了text console参数,界面会是文本风格;如果用默认图形模式,则会看到安装欢迎界面。
安装界面里,语言选择建议选English。不是说中文不行,而是CentOS安装器的中文翻译偶尔会不完整,某些分区和软件组的名称会变成中英混杂,新手反而看不懂。选英语,配合这篇文章里的关键词去对照,基本不会出错。
到主菜单后,需要处理的项目主要有:Installation Destination(磁盘)、Software Selection(软件选择)、Network & Hostname(网络和主机名)、Root Password(root密码)、User Creation(用户创建)。下面逐个讲。
4.2 分区、软件选择、网络和root密码设置
进入Installation Destination,硬盘选中刚才分配的20GB虚拟磁盘。如果不了解手动分区,直接选Automatically configure partitioning,安装器会自动划分/、/boot和swap分区,够用了。如果你想自己控制,可以选Custom,创建/boot大小为1GB,/使用剩余空间,再给swap分配2GB。注意,手动分区完成后一定要点Done,并且确认能看到磁盘容量变化。
回到主菜单,进入Software Selection。这里就是决定“无界面”的关键:左侧环境列表选Minimal Install,右侧不要额外勾选图形相关的组件。安装出来的系统会非常精简,登录后就是干净的login:提示符。
接下来是Network & Hostname。把顶部网络开关拨到ON,UTM的共享网络会默认分配一个内网IP。Hostname改成自己习惯的名字,比如centos8-m1,不改也行。这里如果不打开网络,安装完系统后网卡默认可能是关闭状态,还得进系统再折腾,不如安装时顺手解决。
最后设置Root密码和普通用户。Root密码建议至少8位,混合大小写和数字。普通用户可以不建,但如果平时想用sudo,可以建一个并勾选Make this user administrator。都弄完后,点击Begin Installation开始安装。安装过程会显示进度条,大概几分钟到十几分钟,取决于磁盘速度。安装完成后点击Reboot,记得尽快把ISO光驱断开,否则重启后又会进入安装器。
5. 装完登录后要做的初始化:修复源、配置网络、安装工具
5.1 修复EOL后的dnf源,让yum重新能用
重启后看到login:提示符,输入root账号和密码登录,这时系统就是一台无界面、最小化的CentOS 8服务器。先执行:
ip addr看看网卡有没有拿到IP。如果能看到192.168.x.x或10.x.x.x之类的地址,说明网络正常;如果只有127.0.0.1,说明网卡没启动,马上执行:
nmcli con up eth0之后再检查IP。
到了这一步,最让人头疼的就是dnf源。因为CentOS 8已EOL,系统自带的源地址会全部失效,运行dnf install会报错。解决办法是把源切换到CentOS官方归档地址vault。编辑源文件:
vi /etc/yum.repos.d/CentOS-BaseOS.repo把原来的mirrorlist行注释掉,改成:
[BaseOS] name=CentOS-$releasever - Base baseurl=http://vault.centos.org/8.5.2111/BaseOS/aarch64/os/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial enabled=1AppStream源同理,打开/etc/yum.repos.d/CentOS-AppStream.repo,改为:
[AppStream] name=CentOS-$releasever - AppStream baseurl=http://vault.centos.org/8.5.2111/AppStream/aarch64/os/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial enabled=1改完后执行:
dnf clean all && dnf makecache再执行dnf repolist,能看到BaseOS和AppStream都有有效列表,说明源正常了。这里建议用http而不是https,因为老系统对证书的兼容性相对弱,官方归档站的http地址足够内网和虚拟机使用。
5.2 确认无界面默认启动目标与安装基础工具
用systemctl get-default确认系统默认启动目标是multi-user.target。如果是这个值,说明开机后直接进入命令行,没有图形登录管理器,符合预期。如果结果是graphical.target,需要执行:
systemctl set-default multi-user.target接下来安装一些基础工具,让系统好用一点:
dnf install -y vim bash-completion net-tools bind-utils lsof tree安装vim是为了方便编辑文件,net-tools提供ifconfig等命令,bind-utils提供dig和nslookup,调试网络必备。装完后,VPS风格的CentOS 8基本就真正可用了。
为了验证无界面系统的轻量效果,可以执行free -h看看内存占用。一个最小化CentOS 8,刚启动时内存占用往往只有300到500MB,这在M1的4GB虚拟机里非常宽裕。跑几个服务完全没压力,这也是我推荐在M1上玩CentOS 8的一个重要原因。
6. 启动黑屏、找不到磁盘、连不上网:排查实录与速查表
6.1 黑屏和卡在EFI Shell的排查思路
最常见的问题是启动虚拟机后一直黑屏,或者卡在grub>提示符。先说黑屏。检查两处:第一,确认下载的是aarch64镜像,而不是x86_64;第二,确认UTM虚拟机创建时选的是ARM64架构。只要架构对应,CentOS 8的aarch64镜像在UTM里基本能正常引导。
如果卡在EFI Shell,说明虚拟机没找到可引导光盘。回到UTM虚拟机设置,确认ISO文件正确挂在光驱,然后把启动顺序改为光盘优先。还有一种情况:ISO没挂载成功,但UTM默认会优先从虚拟硬盘启动,硬盘又是空的,就会进入Shell。重启虚拟机,在UTM窗口菜单里重新挂载ISO,再重启即可。
如果你从Apple Virtualization后端切换到QEMU后端之后,发现黑屏问题解决了,那就保持QEMU后端。这个方案兼容性强,代价是多耗一点资源。M1芯片性能足够强,不需要纠结这一点差异。
6.2 网络不通与磁盘不识别专项排查
安装时打开了网络开关,但重启后没IP,大概率是网卡命名和预期不一致。CentOS 8在虚拟机里网卡可能叫eth0,也可能叫ens3或enp0s1,先用ip addr列出所有网卡,找到状态是DOWN的那个,再用nmcli启用。
磁盘不识别的情况主要出现在安装界面里。如果在Installation Destination里看不到磁盘,回到UTM虚拟机的磁盘设置,把磁盘总线从SATA改成virtio,或者反过来再试。aarch64版本的CentOS 8对virtio支持很好,绝大多数情况下改成virtio就能看到了。
另外,如果安装时勾选了手动分区但系统提示没有可用空间,多半是因为磁盘动态分配还没实际分配出空间。回到UTM设置,确认磁盘容量至少写了20GB,而不是0。
6.3 常见问题速查表
| 问题现象 | 可能原因 | 解决动作 |
|---|---|---|
| 启动黑屏 | 架构选错或ISO是x86_64 | 确认aarch64镜像和ARM64架构 |
| 卡在EFI Shell | 光驱没挂ISO或启动顺序不对 | 重新挂载ISO,设置光盘优先启动 |
| 安装器看不到磁盘 | 磁盘总线不兼容 | 切换SATA与virtio总线测试 |
| 重启后没IP | 网卡默认未启用 | 用nmcli con up手动启用 |
| dnf报源错误 | CentOS 8已经EOL | 改用vault.centos.org归档源 |
| 内存占用异常高 | 安装了图形组件 | systemctl set-default multi-user.target |
最后再分享一个我实际使用中的体会:在M1上跑CentOS 8,最稳的一套参数是4核CPU、4GB内存、20GB动态磁盘,网络走UTM共享网络,后端选QEMU。这套搭配不需要频繁调整,安装和日常使用都很顺畅。CentOS 8虽然已经停止维护,但放在隔离虚拟机里学习、测试、研究启动流程,反而是个很好用的“干净对象”。等把这套流程走顺了,再切换到仍在维护的发行版,你会发现自己对系统安装和初始化的理解已经上了一个台阶。