前言

本文主机记录从MacBook 从 mac intel 升级到 apple silicon M1 M2 M3 芯片的通用经验

更新历史

2024年10月03日 - 初稿

阅读原文 - https://wsgzao.github.io/post/macbook-from-mac-intel-to-apple-silicon/

时间线备注

系统升级建议

拿到MacBook Pro M3的时候OS版本为Sonoma 14.6.1 (23G93),此时系统升级有2个选择

  1. 升级小版本至macOS Sonoma 14.7
  2. 升级大版本至macOS Sequoia 15.0

个人建议是这样

  1. 如果是生产力工具,小版本升级问题不大,刚发布的大版本一般等迭代N个小版本猴观察稳定性口碑再升级,避免成为小白鼠影响日常办公体验,通常没有遇到重大安全漏洞公司很少强制要求立即升级
  2. 自用电脑随意吧

数据备份迁移

尽管苹果 Mac 自带迁移助理,但升级跨度较大且很多App也无法直接从Intel平滑迁移到M系列芯片,为了降低不可控风险顺便重温下macOS生产力工具初始化流程,还是选择手动迁移

有实力的同学付费走iCloud或者NAS私有化,不想特别折腾可以参考以下方案

  • Dropbox,文件实时同步备份,免费用户18G空间足够了,国内类似产品有坚果云,百度网盘同步空间等
  • LocalSend,免费、开源、跨平台的局域网文件传输工具,大文件迁移的首选方案
  • Notion,代替Evernote作为新一代的笔记同步工具
  • Enpass,简单易用的跨平台密码管理器,买断性价比高于LastPass、1Password等订阅制吧
  • Google Chrome,浏览器用户习惯和扩展同步,某种程度上也可以代替密码管理器了
  • Google Authenticator,双因素动态口令身份验证器,自从学习微软Microsoft Authenticator允许在线同步数据后,担心隐私泄露风险的同学可能也都转投阵营了

常用软件

搜狗输入法Mac版 - https://pinyin.sogou.com/mac/

LocalSend - https://localsend.org/

iTerm2 - https://iterm2.com/

Tabby - https://tabby.sh/

Rectangle - https://rectangleapp.com/

PDF Expert - https://pdfexpert.com/

OmniPlayer - https://okaapps.com/product/1470926410

MacZip - https://ezip.awehunt.com/

qBittorrent-Enhanced-Edition - https://github.com/c0re100/qBittorrent-Enhanced-Edition

国光的 macOS Ventura 13 软件清单

https://www.sqlsec.com/2023/09/softmac.html

https://www.sqlsec.com/macsoft.html

独立配置

国光的 macOS Ventura 13 优化配置(基于 ARM 平台)

https://www.sqlsec.com/2023/07/ventura.html

Homebrew

Homebrew - https://brew.sh/

Install Homebrew - https://mac.install.guide/homebrew/3

Homebrew国内源 - https://gitee.com/cunkai/HomebrewCN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Homebrew原版直接安装
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 修改环境变量
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your `$PATH`:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

# Homebrew国内源安装
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

# Homebrew国内源卸载
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

# brew install 常用包
brew install iterm2 wget git

# 安装 brew-cask
brew install cask

# 空格预览 markdown
brew install qlmarkdown

# 空格高亮预览代码文件
brew install syntax-highlight

# 目录切换神器
brew install autojump

Oh My ZSH

Oh My Zsh 是基于 zsh 命令行的一个扩展工具集,提供了丰富的扩展功能。

  • iTerm2: 代替默认的 Terminal,提供了很多高级设置,例如自动补全、高亮等
  • oh-my-zsh: 可以自定义主题、Git 显示、Tab 补全等

http://ohmyz.sh/

https://www.haoyep.com/posts/zsh-config-oh-my-zsh/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 安装Oh My Zsh官网命令
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 自动建议提示接下来可能要输入的命令
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

# 命令语法检测
git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

# 修改插件
plugins=(git autojump zsh-autosuggestions zsh-syntax-highlighting)

# 关掉 URL 反斜杠转义
echo "DISABLE_MAGIC_FUNCTIONS=true" >> ~/.zshrc

# 禁用 on my zsh 自动更新
echo " zstyle ':omz:update' mode disabled" >> ~/.zshrc

# 通过环境变量控制代理
with_proxy(){
HTTPS_PROXY=http://xxx:6666 HTTP_PROXY=http://xxx:6666 "$@"
}

你可以在内置主题样式截图中查看所有 zsh 内置的主题样式和对应的主题名。这些内置主题已经放在 ~/.oh-my-zsh/themes 目录下,不需要再下载。

1
2
3
4
5
6
7
8
cd ~/.oh-my-zsh/themes && ls

# 修改主题为agnoster
vi ~/.zshrc
# 默认主题为robbyrussell,可选修改为其他如agnoster,代价就是修改字体,否则会导致显示乱码
ZSH_THEME="robbyrussell"
ZSH_THEME="agnoster"
ZSH_THEME="dracula"

根据 What’s the best theme for Oh My Zsh? 中的排名,以及自定义化、美观程度,强烈建议使用 powerlevel10k 主题。

Dracula Theme for Zsh - https://draculatheme.com/

配合iTerm2主题系统自带主题Colors我推荐Smoooooth,或者其他主题如Dracula

Dracula Theme for iTerm - https://draculatheme.com/iterm

https://iterm2colorschemes.com/

Shell

Bash
Bash是最常见的Linux Shell,如果你在Mac上打开终端(直到macOS Mojave为止)

Zsh
zsh相对于bash 高可配置、高扩展。目前是mac上的默认的shell工具。推荐它的主题网址:https://ohmyz.sh/

通过扩展可以获得如下功能:

  • 自动补全
  • 语法高亮
  • 插件系统(插件管理)
  • 命令行提示(git仓库)
  • 颜色主题

Fish
官网:https://fishshell.com/

相比于zsh,fish会有很多自动化的配置,默认的安装即可。
特点:

  • 命令历史
  • 自动补全、自动搜索
  • 语法高亮
  • 运算+逻辑
  • 运行行颜色设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 通过命令zsh --version查看本机zsh版本
zsh --version
zsh 5.9 (x86_64-apple-darwin23.0)

# 没有zsh可以单独安装
brew install zsh

cat /etc/shells

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

# 输入如下命令更改zsh为默认shell
chsh -s /bin/zsh

# 查看是否切换成功, 返回 /bin/zsh 就对了
echo $SHELL

Vim

macOS 自带的 vim 是没有任何配色的,以下是常用的配色方案,先在用户目录下新建一个 vim 的配置文件:

1
2
3
4
5
vim ~/.vimrc

set nu " 显示行号
colorscheme desert " 颜色显示方案,其他方案查看:ls /usr/share/vim/vim*/colors
syntax on " 打开语法高亮

VimConfig - https://vimconfig.com/
My .vimrc - https://chrisyeh96.github.io/2017/12/18/vimrc.html

Python

pyenv 是一个强大 Python 包管理工具,可以灵活地切换各种 Python 版本,Linux 和 macOS 强烈建议使用 pyenv 来管理我们的 Python 版本,优雅高效且不会破坏掉系统自带的 Python 环境

https://github.com/pyenv/pyenv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 安装 pyenv
brew install pyenv

# 接着为 pyenv 配置 shell 环境,提高工作效率,可自动联想 Tab 补全我们本地安装的 Python 版本:
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

# 查看已经安装的Python版本
pyenv versions

# 查看当前的 Python 版本
pyenv version

# 查看可安装的版本
pyenv install -l

# 安装与卸载 3.12
pyenv install 3.12
pyenv global 3.12.6
pyenv uninstall 3.12

# 版本切换确实很方便,所安装的版本都在 ~/.pyenv/versions 目录下:

# global 全局设置 一般不建议改变全局设置
pyenv global <python版本>

# shell 会话设置 只影响当前的shell会话
pyenv shell <python版本>
# 取消 shell 会话的设置
pyenv shell --unset

# local 本地设置 只影响所在文件夹
pyenv local <python版本>

pyenv 的 global、local、shell 的优先级关系是:shell > local > global

Java

无论是 Oracle JDK 还是近期比较流行的 Azul Zulu JDK,我们都可以先自己安装一遍,默认都在安装在**/Library/Java/JavaVirtualMachines** 目录下

这里推荐使用 jenv 来切换我们的 Java 版本,类似于 pyenv 一样很优雅

https://www.jenv.be/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 安装 jenv
brew instal jenv

# brew 安装后我们得配置一下 zshrc 的环境:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

# 查看当前的 Java 版本
jenv version

# 手动添加本地的 Java Home 路径
jenv add /Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home/
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/
jenv add /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/

# 列出目前 jenv 所有可切换管理的版本
jenv versions

# global 全局设置 一般不建议改变全局设置
jenv global <java 版本>

# shell 会话设置 只影响当前的shell会话
jenv shell <java 版本>
# 取消 shell 会话的设置
jenv shell --unset

# local 本地设置 只影响所在文件夹
jenv local <java 版本>

ssh用法技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
vim ~/.ssh/config

Host *
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes
UserKnownHostsFile /dev/null
CheckHostIP no
StrictHostKeyChecking no
TCPKeepAlive yes
ForwardAgent yes
HostKeyAlgorithms +ssh-rsa
ServerAliveCountMax 3
ServerAliveInterval 15
SendEnv *VOLC*

Host test
HostName xxx
User root
Port 2222

Host test-jump
HostName xxx
User root
ProxyCommand ssh jumpserver nc -q0 %h %p 2> /dev/null

# jump server
Host jumpserver
HostName jumpserver.xxx.com
User xxx

# ansible中也可以传入跳板机的环境变量
[all:vars]
ansible_ssh_args="-A -J jumpserver"

文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. 时间线备注
    1. 3.1. 系统升级建议
    2. 3.2. 数据备份迁移
    3. 3.3. 常用软件
  4. 4. 独立配置
    1. 4.1. Homebrew
    2. 4.2. Oh My ZSH
    3. 4.3. Shell
    4. 4.4. Vim
    5. 4.5. Python
    6. 4.6. Java
    7. 4.7. ssh用法技巧