本文完全基于 M4 Mac mini + VMware Fusion 25H2 实测,解决了网上许多教程没有讲清楚的痛点:共享文件夹开机自动挂载SSH 免密登录C++ 开发环境一键配置,并附带终端美化技巧。


一、安装 VMware Fusion 25H2

官网下载链接:VMware Fusion 免费下载(需注册 Broadcom)

1. 注册 Broadcom 账号

  • 推荐使用 Gmail 邮箱,部分国内邮箱可能收不到验证码。

  • 注册后登录。

2. 下载安装程序

  • 第一次下载会要求阅读协议:点击页面中的蓝色 Terms and Conditions 链接,阅读核心条款,勾选 I agree to the Terms and Conditions,然后就可以下载了。

3. 执行安装

  • 如果 macOS 提示“无法验证开发者”,请前往 系统设置 → 隐私与安全性,找到被阻止的软件,点击 “仍要打开”

  • 安装过程中会弹出 “VMware Fusion 想要访问辅助功能” 的提示,这是虚拟机正常工作(键盘、鼠标捕获)的必要权限,请允许。


二、创建 Ubuntu Server 虚拟机

1. 下载 ARM64 版本的 Ubuntu Server

特别注意:一定要下载 arm64 版本,而不是 amd64 或 x86_64。

2. 新建虚拟机

  • 选择下载的 ISO 文件。

  • 安装过程中 务必勾选 Install OpenSSH server,否则后续无法通过 Mac 终端远程连接。

  • 其他选项按默认即可。


三、在 Mac 主机通过 SSH 连接虚拟机

1. 确认虚拟机 IP

登录 Ubuntu 后执行:

ip a

找到 eth0 或 ens 开头的网卡,记下 IP 地址(例如 192.168.xxx.xxx)。

2. 在 Mac 终端连接

ssh 用户名@虚拟机IP地址

例如:ssh ylj@192.168.1.100

断开连接

  • 输入 exit 或按下 Ctrl + D

3. 使用 VSCode 连接(推荐)

  • 安装 Remote-SSH 插件。

  • 按 F1 输入 Remote-SSH: Connect to Host,输入虚拟机 IP 和用户名。

  • 成功后左侧会出现远程文件夹,享受本地般的开发体验。


四、配置 SSH 免密登录(省去每次输密码)

1. 在 Mac 上生成 SSH 密钥(如果还没有)

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • 一路回车,使用默认路径 ~/.ssh/id_rsa不需要设置密码

2. 将公钥复制到 Ubuntu 虚拟机

ssh-copy-id 用户名@虚拟机IP地址

输入一次密码后,以后 ssh 就不再需要密码了。

3. (可选)编辑 SSH 配置文件,简化连接命令

编辑 Mac 上的 ~/.ssh/config

Host myserver
    HostName 192.168.1.100   # 替换为你的虚拟机 IP
    User ylj                 # 替换为你的用户名
    IdentityFile ~/.ssh/id_rsa
    Port 22

之后只需执行 ssh myserver 即可免密登录。


五、安装 C/C++ 开发工具(一条命令搞定)

build-essential 元包会自动安装 gccg++make 以及编译所需头文件。

# 更新软件源
sudo apt update

# 安装编译工具链
sudo apt install build-essential -y

# 安装调试器 gdb
sudo apt install gdb -y

# 安装 cmake(强烈推荐)
sudo apt install cmake -y

验证安装:

gcc --version
g++ --version
make --version
cmake --version
gdb --version

六、启用 VMware 共享文件夹(全网最详细,解决开机自动挂载)

这是很多用户卡住的地方——手动挂载没问题,但重启后就不见了。下面提供 开机自动挂载 的永久解决方案。

1. 安装 open-vm-tools

sudo apt update
sudo apt install open-vm-tools -y

2. 在 VMware Fusion 中配置共享文件夹

  • 菜单栏:Virtual Machine → Settings

  • 选择 Sharing → 勾选 “Share folders”

  • 点击 “+” 添加一个 Mac 上的文件夹(例如 ~/shared),并设置共享名称(例如 shared

3. 确认共享名称

vmware-hgfsclient

输出示例:shared

4. 创建挂载点目录

sudo mkdir -p /mnt/hgfs

5. 配置开机自动挂载(编辑 /etc/fstab)

sudo vim /etc/fstab

在文件末尾添加以下一行(注意:必须是一行):

.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults,allow_other,uid=1000,gid=1000 0 0

参数说明

  • .host:/ :代表宿主机上所有已启用的共享文件夹

  • /mnt/hgfs :挂载点(你可以改成其他路径)

  • fuse.vmhgfs-fuse :文件系统类型

  • uid=1000,gid=1000 :将 1000 换成你 Ubuntu 用户的 uid(用 id 命令查看)

6. 测试配置

sudo mount -a
ls /mnt/hgfs

如果能看到你设置的共享文件夹名称(如 shared),说明配置正确。

7. 重启验证

sudo reboot

重启后再次 ls /mnt/hgfs,确认自动挂载成功。


七、Ubuntu 终端前缀美化(可选,但提升幸福感)

默认的 PS1 提示符可能过长,你可以自定义成更简洁或带颜色的样式。

常用转义符

符号 含义
\u 用户名
\h 主机名(短格式)
\W 当前目录基名
\$ 普通用户显示 $,root 显示 #

临时修改(测试效果)

PS1='\u@\h:\W\$ '        # 显示 用户名@主机名:当前目录$
PS1='\u:\W\$ '           # 更简洁
PS1='\W\$ '              # 只显示当前目录名

永久修改

编辑 ~/.bashrc,在末尾添加:

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '

保存后执行 source ~/.bashrc 即可生效。

恢复默认

删除或注释掉 ~/.bashrc 中你添加的 PS1 行,重新加载即可。


八、安装和使用 tree 命令(目录结构可视化)

tree 命令能将文件和目录以树状结构清晰地展示出来,在 Linux 系统管理中非常常用。不过,它通常不是系统默认自带的,需要手动安装。

1. 安装 tree

# 更新本地软件包列表
sudo apt update
# 安装 tree 软件包,“-y” 参数用于自动确认安装
sudo apt install tree -y

2. 基础用法速览

使用场景 命令示例 说明
查看当前目录结构 tree 从当前目录开始,展示所有文件和子目录的树状结构。
查看指定目录结构 tree /var/log 直接跟上目标目录路径。
仅显示目录 tree -d 只显示目录,不显示文件,适合快速概览项目框架。
显示隐藏文件 tree -a 显示以点(.)开头的隐藏文件。
限制显示层级 tree -L 2 -L 参数限制目录树深度(如 -L 2 表示只显示到第2层)。
显示文件大小 tree -h 以 KB、MB 等易读格式显示每个文件的大小。
排除特定文件/目录 tree -I "node_modules" 排除不想看到的文件或目录,支持通配符,多个用 | 分隔。
输出结果到文件 tree -o output.txt 将输出保存到文件中。

3. 实用场景举例

快速了解项目结构

在项目根目录下,用 -L 和 -I 组合命令可以清晰看到项目骨架:

tree -L 2 -I "node_modules|.git|build"
  • -L 2:限制深度为2层

  • -I "node_modules|.git|build":忽略依赖、Git 版本库和构建产物

排查服务器配置目录

分析 /etc/nginx 这类深层目录时,可结合 -d-L 和 -p

tree -d -L 3 -p /etc/nginx
  • -d:仅显示目录

  • -L 3:限制3层

  • -p:显示权限信息

4. 常见问题

输出内容过多,终端卡死或显示不全
使用 -L 参数限制深度,或配合 less 分页查看:

tree -L 2 | less

用方向键滚动浏览,按 q 键退出。


九、总结

通过以上步骤,你将在 M4 Mac mini 上拥有一个:

  • 支持 SSH 免密登录 的 Ubuntu 虚拟机

  • 开机自动挂载共享文件夹(与 Mac 互通文件)

  • 完整 C/C++ 开发环境(gcc/gdb/cmake)

  • VSCode 远程开发能力(Remote-SSH)

  • 清爽的命令行提示符

  • 目录结构可视化工具 tree

这套环境完全满足学习 Linux C/C++ 开发、网络编程、后端技术等需求。


 📌 更新:下一篇已发布

环境搭好了,来配置代码仓库吧!本文的第二篇《Git从入门到工作流:GitLab私有仓库最佳实践》已发布。里面详细讲了SSH免密登录、推送代码,还有macOS下.DS_Store文件的终极处理方法,非常实用,快去看看吧!

👉 点击阅读:《Git从入门到工作流:GitLab私有仓库最佳实践》

更多推荐