【前情提要】 小林装好了 Homebrew,下载了 Ubuntu 26.04 LTS ARM64 镜像,准备在 VMware Fusion 里装虚拟机。他以为跟装 App 一样简单,结果卡在了第一屏。
一、新建虚拟机,第一屏就卡住了
第二天一早,小林打开 VMware Fusion,点“新建”,把桌面上的 Ubuntu 镜像拖进去。
VMware Fusion 自动识别,弹出一个界面:
操作系统:Linux
版本:Ubuntu 64-bit ARM
小林看了一眼,心想“挺智能的嘛”,直接点“继续”。
下一步,它问:
固件类型:UEFI / BIOS
小林愣了。BIOS 他听过,UEFI 也听过,但选哪个?
他喊了一声:“周哥,UEFI 和 BIOS 选哪个?”
老周端着保温杯晃过来,看了一眼:“选 UEFI。现代系统都用 UEFI,BIOS 是上古遗产。你以后面试被问到‘UEFI 和 BIOS 区别’,就说 UEFI 支持更大磁盘、更快启动、更安全,BIOS 是 legacy。”
小林选了 UEFI,继续。
下一步,它问:
磁盘大小:20 GB
“20G 够吗?”小林问。
“装 Ubuntu Desktop 够了。”老周说,“但你以后要装 Prometheus、Grafana、Nginx,日志还会涨。我给个建议,50G 起步。虚拟磁盘不会立刻占满你的 Mac 硬盘,它是按需增长的。”
小林改成 50G,继续。
下一步,它问:
网络类型:NAT / 桥接 / 仅主机
小林又卡住了。
老周叹了口气:“你这卡点密度,跟我当年学车一样。来,我给你讲清楚。”
二、NAT、桥接、仅主机:三种网络模式
老周拉过椅子坐下,拿笔在纸上画了三个圈。
“虚拟机网络,就三种模式,你记住这三句话就行。”
NAT(网络地址转换)
“虚拟机躲在你 Mac 后面上网。虚拟机可以访问外网,但你 Mac 之外的机器访问不了虚拟机,除非你做端口转发。最稳,最不容易出问题,推荐你用这个。”
桥接(Bridged)
“虚拟机直接接入你 Mac 所在的局域网,相当于你家路由器又接了一台设备。虚拟机会拿到一个和 Mac 同网段的 IP,别人可以直接访问它。但公司网络、学校网络经常限制,桥接可能拿不到 IP。”
仅主机(Host-Only)
“虚拟机和 Mac 之间能通信,但虚拟机不能上外网。适合做隔离实验,但你装软件、发邮件都不行。”
老周放下笔:“你选哪个?”
“NAT。”小林说。
“聪明。”老周说,“NAT 模式,你 Mac 能访问虚拟机,虚拟机也能上网。你以后要用 Mac 浏览器访问虚拟机里的博客,做端口转发就行。够用了。”
小林选了 NAT,继续。
下一步,它问:
磁盘类型:SCSI / SATA / NVMe
“NVMe。”老周直接说,“快。SCSI 和 SATA 是老接口,NVMe 是现在的主流。”
小林选了 NVMe,点“完成”。
VMware Fusion 弹出一个窗口,虚拟机开始启动。
三、黑屏了
屏幕一片漆黑。
小林等了十秒。二十秒。三十秒。
“周哥,黑了。”
老周凑过来看了一眼:“正常,它在引导。你等等。”
又等了半分钟。还是黑的。
“不对。”老周皱眉,“你镜像下对了吗?”
小林打开下载目录,看了一眼文件名:
ubuntu-26.04-desktop-amd64.iso
老周沉默了。
“你 Mac 是 M2,对吧?”
“对啊。”
“M2 是 ARM 架构。”老周说,“你下的是 amd64,那是 Intel/AMD 的架构。架构不匹配,虚拟机根本跑不起来。”
小林脸红了:“我昨天看官网,它默认给我推 amd64……”
“官网有时候根据你的 IP 推版本,你得自己手动选。”老周说,“去 Ubuntu 官网,找 ARM64 版本,文件名应该是 ubuntu-26.04-desktop-arm64.iso。”
小林重新下载,这次仔细看了文件名:
ubuntu-26.04-desktop-arm64.iso
“这回对了。”老周说,“把刚才那个虚拟机删了,重新建。”
排错思路总结:
- Apple Silicon Mac 必须使用 ARM64 架构的 Ubuntu 镜像。
- 文件名中的
amd64是 Intel/AMD 架构,arm64才是 Apple Silicon。 - 镜像架构和 Mac 架构不匹配,虚拟机会黑屏、卡死或无法启动。
- 下载镜像时,手动选择 ARM64 版本,不要依赖官网自动推荐。
四、第一次启动 Ubuntu
重新新建虚拟机,这次一切顺利。
虚拟机启动,屏幕出现 Ubuntu 的紫色启动画面,然后是语言选择界面。
“选中文。”老周说,“但你记住,以后在终端里,系统提示全是英文。你得习惯英文报错,那是你的工作语言。”
小林选了“中文(简体)”,继续。
下一步,安装类型:
交互式安装
自动安装
“交互式。”老周说,“自动安装会帮你分区,但你现在不需要学自动。交互式,手动来一遍,你才知道系统装在哪。”
小林选了交互式。
下一步,它问:
安装类型:默认 / 扩展 / 最小
“默认。”老周说,“扩展装一堆办公软件,你用不上。最小连浏览器都没有,你以后查资料不方便。默认刚好。”
下一步,磁盘分区。
老周说:“直接选‘清除整个磁盘并安装 Ubuntu’。反正是虚拟机,整块盘给它,不用纠结。”
小林照做。
下一步,创建用户。
老周说:“用户名别用中文,别用空格,别用大写。你就用 devops。密码设个简单的,反正是虚拟机。”
小林输入:
用户名:devops
密码:123456
“这么简单?”老周看了一眼,“行,虚拟机无所谓。但你在公司服务器上敢用这个密码,我第一个开除你。”
小林嘿嘿一笑。
安装开始,进度条缓慢前进。十分钟后,提示重启。
重启后,Ubuntu 桌面出现了。
五、nano:你的“救命编辑器”
小林兴奋地打开终端,想试试命令。
老周说:“先别急。你以后要改配置文件,得先会用一个编辑器。Linux 上编辑器很多,vim、emacs、nano。我让你用 nano。”
“为啥不用 vim?”
“vim 学习曲线陡,你现在连 hjkl 都记不住,用 vim 就是给自己找罪受。”老周说,“nano 简单,打开就能打字,底部有快捷键提示。你先把 nano 用熟,以后想学 vim 再说。”
老周让小林打开一个测试文件:
nano ~/test.txt
nano 界面弹出来,顶部是文件名,底部是一排快捷键。
“你记住三个救命操作就行。”老周竖起三根手指。
第一,保存:Ctrl + O,然后回车。
“你改完东西,按 Ctrl + O,底部会问 File Name to Write,直接回车,就保存了。”
第二,退出:Ctrl + X。
“保存完想退出,按 Ctrl + X。如果没保存,它会问你要不要保存,按 Y 再回车。”
第三,搜索:Ctrl + W。
“文件太长找不到关键词,按 Ctrl + W,输入关键词,回车,光标跳过去。”
小林试了一遍:输入 Hello Ubuntu,Ctrl + O 回车,Ctrl + X 退出。然后又打开文件,内容还在。
“记住了。”小林说。
“再教你一个组合技。”老周说,“Ctrl + K 剪切当前行,Ctrl + U 粘贴。 你以后改配置文件,经常要删一行、加一行,用这个比按退格键快。”
小林在笔记本上写下:
- 保存:
Ctrl + O→ 回车 - 退出:
Ctrl + X - 搜索:
Ctrl + W - 剪切行:
Ctrl + K - 粘贴:
Ctrl + U
“nano 就这些?”小林问。
“常用的就这些。”老周说,“其他快捷键你自己看底部提示,用多了就记住了。记住,nano 底部带 ^ 符号的,就是 Ctrl 键。 ^O 就是 Ctrl + O。”
六、快照:你的“后悔药”
装好系统,老周让小林先别急着装软件。
“你先做个快照。”
“快照?”
“虚拟机快照,相当于游戏存档。”老周说,“你现在系统刚装好,干干净净。你存个档,以后搞坏了,恢复回来,三秒钟。”
小林打开 VMware Fusion 菜单,找到“快照” → “拍摄快照”。
弹出一个窗口:
名称:刚装好系统
描述:(可选)
小林输入名称,点“拍摄”。
几秒钟后,快照创建完成。
“以后你每完成一个阶段,就存一个档。”老周说,“比如‘装好 Nginx’、‘配好监控’、‘日志分析跑通’。搞坏了就回滚,不用重装。”
“那快照占空间吗?”
“占。”老周说,“但比你重装系统快多了。你 Mac 硬盘够大,不用担心。”
小林点点头,又存了一个快照,命名为“装好 Homebrew”。
“等等,”老周说,“Ubuntu 里不叫 Homebrew,叫 apt。Homebrew 是 Mac 的,apt 是 Ubuntu 的。你以后装软件,在 Mac 上用 brew install,在 Ubuntu 上用 sudo apt install。别搞混。”
小林在笔记本上写下:
- Mac 包管理:
brew install - Ubuntu 包管理:
sudo apt install - 红帽系包管理:
sudo dnf install
“红帽系是啥?”小林问。
“CentOS、Rocky、AlmaLinux,都是红帽系。”老周说,“你以后工作中会遇到,它们的包管理是 dnf,防火墙是 firewalld,日志路径也不一样。但你现在先把 Ubuntu 学好,遇到红帽系我再跟你说。”
七、Mac 怎么连上 Ubuntu?
系统装好了,快照也做了。小林问了一个关键问题:
“周哥,我 Mac 怎么访问 Ubuntu?我总不能一直在虚拟机窗口里操作吧?”
“好问题。”老周说,“两种方式。第一种,直接在 VMware 窗口里操作,简单但难受。第二种,用 SSH 从 Mac 终端连过去,舒服。”
“我要第二种。”
“那得先知道 Ubuntu 的 IP。”老周说,“在 Ubuntu 终端里敲 ip a。”
小林敲了:
ip a
输出一堆,他找到 ens160 或者 ens33 之类的网卡,下面有一行:
inet 192.168.x.x/24
“这个 192.168.x.x 就是你的 Ubuntu IP。”老周说,“你在 Mac 终端里敲 ssh devops@192.168.x.x,输入密码,就能连上了。”
小林回到 Mac 终端,敲:
ssh devops@192.168.x.x
提示:
The authenticity of host '192.168.x.x' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])?
“敲 yes。”老周说。
小林敲了 yes,然后输入密码。
终端提示符变成:
devops@ubuntu:~$
“进来了。”小林兴奋地说。
“以后你就这么连。”老周说,“Mac 终端操作 Ubuntu,比你切窗口快多了。而且你以后写脚本,在 Mac 上写好,直接 SSH 过去跑。”
“那端口转发呢?”
“你现在 NAT 模式,Mac 能直接访问 Ubuntu 的 IP,不用端口转发。”老周说,“但如果你想让 Mac 浏览器访问 Ubuntu 里的 Nginx,就得做端口转发。比如 Ubuntu 里 Nginx 跑在 80 端口,你在 VMware 网络设置里,把 Mac 的 8080 转发到 Ubuntu 的 80。这样你 Mac 浏览器访问 http://localhost:8080,就是访问 Ubuntu 的 Nginx。”
“记住了。”小林说。
“今天先到这。”老周站起来,“你熟悉一下 Ubuntu,把 nano 用熟,把 SSH 连熟。明天开始,我们搭博客。”
八、排错挑战:虚拟机启动后黑屏
第三天,小林想再装一台 Ubuntu 虚拟机做测试。他新建虚拟机,选了之前下载的镜像,启动。
黑屏。
他想起上次的教训,检查了镜像文件名:
ubuntu-26.04-desktop-arm64.iso
“架构没错啊。”小林嘀咕。
他又检查了虚拟机设置:
- 固件:UEFI ✓
- 磁盘:50G NVMe ✓
- 网络:NAT ✓
都没问题。但就是黑屏。
他喊来老周。
老周看了一眼,问:“你分配了多少内存?”
小林打开设置:
内存:2 GB
老周笑了:“2G 跑 Ubuntu Desktop,你这是在为难它。Ubuntu Desktop 最少要 4G,推荐 8G。你给它 2G,它启动到一半就 OOM 了,当然黑屏。”
小林改成 8G,重新启动。
这次,Ubuntu 顺利进入桌面。
排错思路总结:
- 虚拟机黑屏,先检查镜像架构是否匹配(ARM64 vs amd64)。
- 再检查固件类型(UEFI)、磁盘类型(NVMe)、网络模式(NAT)。
- 如果都正确,检查内存和 CPU 分配。Ubuntu Desktop 最少 4G 内存,推荐 8G。
- 内存不足会导致启动过程中 OOM,表现为黑屏或卡死。
九、练习
- 练习一:在 Ubuntu 里用 nano 创建一个文件
~/hello.txt,写入三行内容,保存并退出。然后用cat ~/hello.txt验证内容。 - 练习二:在 Ubuntu 里执行
ip a,找到你的 IP 地址。然后在 Mac 终端里用 SSH 连接 Ubuntu,执行hostname和whoami,确认连接成功。 - 练习三:在 VMware Fusion 里为你的 Ubuntu 虚拟机创建一个快照,命名为“刚装好系统”。然后故意在 Ubuntu 里删除一个系统文件(比如
sudo rm /etc/hostname),重启后观察现象,再用快照恢复。
参考答案
练习一:
nano ~/hello.txt
输入三行内容,例如:
Hello Ubuntu
This is my first file
nano is easy
按 Ctrl + O,回车保存。按 Ctrl + X 退出。
cat ~/hello.txt
输出三行内容。
练习二:
Ubuntu 里:
ip a
找到 inet 192.168.x.x。
Mac 终端:
ssh devops@192.168.x.x
输入密码后,执行:
hostname # 输出 Ubuntu 主机名
whoami # 输出 devops
练习三:
创建快照:VMware Fusion 菜单 → 虚拟机 → 拍摄快照 → 名称“刚装好系统”。
故意破坏:
sudo rm /etc/hostname
sudo reboot
重启后,系统可能卡在启动阶段,或者主机名变成 localhost。
恢复快照:VMware Fusion 菜单 → 虚拟机 → 快照 → 恢复到“刚装好系统”。
下集预告
Ubuntu 装好了,SSH 连上了,nano 也会用了。老周说:“明天开始,第一个项目——搭博客。”但小林不知道,Hugo 安装、主题配置、Nginx 部署,每一步都有坑。而第一个坑,就藏在他以为最简单的 git clone 里。
下一集:《老师当年说,Linux 的“房间”和“钥匙”要先搞清楚》