1. 从Intel到M1 Max:系统迁移全攻略
刚拿到M1 Max Mac时,最头疼的问题莫过于如何把旧Intel Mac上的开发环境完整迁移过来。我经历过三次完整的Mac迁移,最近一次是从2019款16寸Intel MacBook Pro迁移到M1 Max MacBook Pro,整个过程比想象中顺利得多。
迁移前需要做几个关键准备:
- 确保两台Mac都升级到最新系统版本(至少macOS Monterey 12.3以上)
- 准备一根雷雳3/4数据线或确保两台设备在同一个Wi-Fi网络
- 旧Mac至少保留30%以上电量或连接电源
- 预估迁移时间(每100GB数据约需1小时)
实际操作时有个小技巧:先打开新Mac的迁移助理,选择"从Mac、时间机器备份或启动磁盘",这时会生成一个动态安全码。然后再打开旧Mac的迁移助理选择"至另一台Mac",输入显示的安全码。这种方式比反向操作成功率更高,我测试过三次都一次成功。
迁移完成后有几个常见问题需要注意:
- 部分Intel架构的App可能无法直接运行
- 某些开发工具链需要重新配置
- 系统偏好设置中的部分快捷键可能恢复默认
- 输入法词库有时会出现乱码
2. 网络与基础环境配置实战
迁移完系统后,第一件事就是配置网络环境。M1 Max的网络栈有些特殊行为,特别是当你的开发需要连接各种服务时。
代理配置建议使用ClashX Pro的ARM64版本,这是我在M1 Max上测试最稳定的方案。配置时要注意:
- 系统代理和终端代理要分开设置
- 在.zshrc或.fishrc中添加:
export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export all_proxy=socks5://127.0.0.1:7891
快捷键配置有个隐藏技巧:把聚焦搜索快捷键改为Option+Space,这样Command+Space就可以留给输入法切换。我习惯把Mission Control触发角设置为右下角,这样三指上滑不会冲突。
终端环境强烈推荐iTerm2+Fish的组合。安装iTerm2时要注意选择Universal版本,然后在偏好设置中开启GPU加速渲染。Fish shell的配置我建议这样:
# 安装Fisher插件管理器 curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher # 安装常用插件 fisher install jorgebucaran/autopair.fish fisher install jethrokuan/z3. 包管理器与开发环境配置
Homebrew在M1 Max上有两种安装方式:原生ARM版和x86版。我建议只安装原生版,通过Rosetta 2运行x86程序。安装时使用清华镜像:
# 安装Homebrew /bin/bash -c "$(curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/install/homebrew/install.sh)" # 配置环境变量 echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrcNode.js环境配置有个坑要注意:某些native模块需要x86环境编译。我的解决方案是:
# 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # 安装Node时指定架构 arch -x86_64 zsh nvm install 16 arch -arm64 zshPython环境是最复杂的部分。经过多次测试,Miniforge3是最稳定的方案:
# 安装Miniforge3 curl -L https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh -o Miniforge3.sh bash Miniforge3.sh # 创建Python3.8环境 conda create -n py38 python=3.8 conda activate py384. 深度学习环境配置技巧
TensorFlow的官方M1支持已经相当成熟,但安装过程仍有几个关键点:
# 先安装基础依赖 conda install -c apple tensorflow-deps pip install tensorflow-macos pip install tensorflow-metal # 验证安装 python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"对于PaddlePaddle这种尚未原生支持M1的框架,我的解决方案是创建x86环境:
# 创建x86环境 CONDA_SUBDIR=osx-64 conda create -n paddle python=3.8 conda activate paddle conda env config vars set CONDA_SUBDIR=osx-64 # 安装PaddlePaddle python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple性能优化方面,我发现几个实用技巧:
- 在Apple Silicon上,Metal性能比OpenCL提升30%以上
- 使用conda安装的NumPy会自动启用加速
- 设置环境变量
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES可以解决多进程问题
5. 开发工具链优化配置
对于Rust开发环境,建议这样配置:
# 安装Rustup brew install rustup-init rustup-init -y # 配置交叉编译 rustup target add x86_64-apple-darwin数据库环境有个特别注意事项:MySQL 8.0.25以下版本在M1上运行有问题。我推荐使用PostgreSQL:
# 安装PostgreSQL brew install postgresql@14 brew services start postgresql@14 # 创建用户和数据库 createdb mydb createuser myuser -PDocker配置需要特别注意:
- 使用Docker Desktop 4.3.0以上版本
- 在设置中开启VirtioFS加速
- 对于x86镜像,勾选"使用Rosetta for x86/amd64"
6. 效率工具与实用技巧
我强烈推荐几个M1 Max专属效率工具:
- Raycast替代Spotlight(免费)
- DevUtils开发者工具集(付费但超值)
- AltTab窗口切换工具(免费)
有个隐藏功能很多人不知道:在终端中按住Command键点击路径可以直接在Finder中打开。对于开发者来说,这个功能在查看日志文件时特别有用。
外接显示器配置有个坑:M1 Max在连接多台4K显示器时可能会发热严重。我的解决方案是:
- 关闭不必要的透明效果
- 使用BetterDisplay调整分辨率
- 外接显示器时保持笔记本开盖
7. 性能调优与监控
活动监视器有个开发者专属功能:在菜单栏选择"显示"→"所有进程",然后按"CPU时间"排序,可以快速找到资源占用大户。
我习惯使用如下命令监控系统状态:
# 查看温度传感器 sudo powermetrics --samplers smc | grep -i "CPU die temperature" # 查看内存压力 memory_pressure | grep "System-wide memory free percentage"对于持续高负载任务,建议:
- 使用App Tamer限制后台应用CPU使用
- 在终端运行长时间任务时加上
nice -n 20 - 开发时关闭Time Machine自动备份
8. 兼容性问题解决方案
遇到必须使用x86环境的情况时,我的标准流程是:
- 创建专门conda环境
- 设置CONDA_SUBDIR=osx-64
- 安装所需软件包
- 使用时通过Rosetta 2运行
对于某些老旧Java应用,可以尝试:
# 强制x86模式运行 arch -x86_64 /path/to/java_app遗留的32位应用处理方案:
- 使用UTM虚拟机运行旧系统
- 考虑寻找替代软件
- 最坏情况下保留旧Intel Mac作为备用机
经过三个月的深度使用,M1 Max的开发体验已经远超我的预期。最初担心的兼容性问题90%都能找到解决方案,而性能提升和续航表现让开发效率提升明显。特别是在处理大型项目时,Xcode编译速度提升2-3倍,TensorFlow训练速度提升40%,这些实实在在的改变让我再也不想回到Intel平台