前言本文主机记录从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个选择
升级小版本至macOS Sonoma 14.7
升级大版本至macOS Sequoia 15.0
个人建议是这样
如果是生产力工具,小版本升级问题不大,刚发布的大版本一般等迭代N个小版本猴观察稳定性口碑再升级,避免成为小白鼠影响日常办公体验,通常没有遇到重大安全漏洞公司很少强制要求立即升级
自用电脑随意吧
数据备份迁移尽管苹果 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
HomebrewHomebrew - 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 /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) " /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh) " /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh) " brew install iterm2 wget git brew install cask brew install qlmarkdown brew install syntax-highlight brew install autojump
Oh My ZSHOh 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 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) echo "DISABLE_MAGIC_FUNCTIONS=true" >> ~/.zshrcecho " zstyle ':omz:update' mode disabled" >> ~/.zshrcwith_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 vi ~/.zshrc 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/
ShellBash 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 5.9 (x86_64-apple-darwin23.0) brew install zsh cat /etc/shells/bin/bash /bin/csh /bin/dash /bin/ksh /bin/sh /bin/tcsh /bin/zsh chsh -s /bin/zsh echo $SHELL
VimmacOS 自带的 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
Pythonpyenv 是一个强大 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 brew install pyenv echo 'eval "$(pyenv init -)"' >> ~/.zshrcpyenv versions pyenv version pyenv install -l pyenv install 3.12 pyenv global 3.12.6 pyenv uninstall 3.12 pyenv global <python版本> pyenv shell <python版本> pyenv shell --unset 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 brew instal jenv echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrcecho 'eval "$(jenv init -)"' >> ~/.zshrcjenv version 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 versions jenv global <java 版本> jenv shell <java 版本> jenv shell --unset 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 Host jumpserver HostName jumpserver.xxx.com User xxx [all:vars] ansible_ssh_args="-A -J jumpserver"