从intel mac迁移到M3后软件的兼容性

当我们从intel mac book通过Migrantion Assistant(迁移助手)迁移到新买的M3时,在老的电脑上的软件和数据都会迁移到新电脑上。我们都知道,x86架构的软件和arm架构的软件是不兼容的,那么apple是怎么做到迁移后软件无感运行的呢?

1、Rosetta2

Migration Assistant(迁移助理) ,它的原则是:**"字节级拷贝 + 元数据保持",不做架构转换。**也就是说:

  • ❌ 不会把 x86 程序"重新编译"为 ARM

  • ❌ 不会替你重新安装 ARM 版本

  • ✅ 直接把:

    • /Applications

    • /usr/local

    • Home 目录

    • LaunchAgents / Daemons

原样拷贝过来。例如,在M3上看到的

复制代码
/usr/local/mysql/bin/mysqld
/usr/local/bin/brew
/usr/local/bin/python

100% 就是当年 Intel Mac 上的 x86 二进制。

1)x86软件如何无感在M3上运行的?

Rosetta 2 是 Apple 官方的 x86_64 → ARM64 翻译层,而且是:

  • 系统级

  • 透明的

  • 按需启用的

2)Rosetta2有两种工作模式:

  1. AOT(ahead of time,首次启动):当第一次运行一个x86可执行文件时,Rosetta 2会对其进行静态翻译成arm64,并且会对翻译结果缓存,以后再启动几乎没有额外开销。
  2. JIT:实时翻译

2、如何检查M3上的软件是x86的还是arm的?

在 Mac(Apple Silicon,M3) 上,可以从 安装路径、二进制架构、Homebrew 信息 这几个角度快速判断。例如:

1)通过file命令查看二进制文件:

复制代码
which mysqld
输出:/usr/local/mysql/bin/mysqld

file /usr/local/mysql/bin/mysqld
输出:
Mach-O 64-bit executable x86_64 或
Mach-O 64-bit executable arm64

2)通过Homebrew安装路径:

复制代码
brew --prefix mysql
输出:
/usr/local/...  表示x86
/opt/homebrew/... 表示arm64

对于Homebrew本身来说,如果是x86的,它的安装路径是/usr/local/...如果是arm的安装路径是/opt/home/

3)需要注意:

如果M3上是通过迁移助手迁移过来的Homebrew,那么Homebrew本身是x86的,运行在Rosetta 2上。那么接下来,通过这个Homebrew安装的所有软件,都是x86的!

所以,迁移后,首先应该卸载Homebrew,然后重新安装。

相关推荐
king135987455011 小时前
LFM2.5-24B-A2B Mac 本地部署:内存估算、GGUF/MLX 与 Python 预检脚本
人工智能·macos
骑着蜗牛撵大象32712 小时前
链路层不只是 MAC:以太网帧、ARP 与 802.1Q VLAN 的逐跳拆解
计算机网络·macos·ar·vlan·mac地址·链路层
一条泥憨鱼13 小时前
【计算机网络】| 从 MAC 到 NAT 的跨网段通信全链路
服务器·网络·学习·计算机网络·macos
老牛日常随笔1 天前
Meta 开源 8160 亿参数模型,官方给的方案是两台 Mac Studio
macos·开源
桌管小李2 天前
内网终端安全再升级|迪康端点安全 2609 版本四大新功能解读
大数据·windows·安全·macos·网络安全
情 九2 天前
Dify 本地环境搭建教程:macOS / Windows
windows·macos
2501_915918413 天前
在 Xcode 中运行和调试单元测试的完整指南
ide·vscode·macos·ios·单元测试·个人开发·xcode
Lalolander3 天前
灵基Lingee怎么下载安装?Mac 与 Win 详细指南
大数据·人工智能·科技·macos·金蝶灵基
老李IT笔记4 天前
远程取设备日志:iOS、tvOS 和 macOS 三端的同意方式不一样
macos·ios
JasonSJX4 天前
DRM-X 5.0 PDF 保护更新:Windows 与 Mac 打印保留用户水印,ZJGet iOS 版支持 PDF 阅读
macos·pdf