技术手札:如何全新安装 Mac OS X El Capitan

阅读1570

最新版本的 OS X El Capitan 系统出来后,我迫不及待的更新了,结果出现很多问题,比如:

  • 日志各种报错
    等等;

上网查了资料,发现从旧系统升级安装会有很多隐患;于是干脆格式化磁盘,全新安装 OS X El Capitan。

我的思路是:

  1. 备份旧数据;
  2. 制作安装U盘;
  3. 全新安装(格式化硬盘);
  4. 设置新系统。

1 - 备份旧数据

格式化移动硬盘

挂载移动硬盘,用系统自带的磁盘工具抹掉(即格式化),参数如下:

格式 方案
OS X 扩展(日志式) GUID 分区图

用 Time Machine 备份

在系统偏好设置中,打开 Time Machine,选择准备好的移动硬盘,约120秒后,自动开始备份。

耗时:约 20-60min 左右。

其他配置备份

Time Machine 自动备份的同时,可以做某些配置的备份工作。

1)导出brew列表

brew  > brew.txt
brew cask  > brew.txt

brew:

  • autoconf
  • automake
  • brew-cask
  • gnupg
  • iterm2-zmodem(配合 lrzsz + iTerm 2 使用;不好用
  • libgpg-error
  • libksba
  • libtool
  • libyaml
  • lrzsz(在 Mac 和 Linux 间传输文件;不好用
  • makedepend
  • openssh
  • openssl
  • pkg-config
  • readline

brew cask:
/opt/homebrew-cask/Caskroom/

  • adobe-creative-cloud-cleaner-tool
  • dnscrypt(防止 DNS 污染,有时会抽疯)
  • google-chrome
  • launchrocket
  • macpass

Application:
/Application

  • Adobe Application Manager
  • Adobe Illustrator CC 2015(破解版)
  • Adobe Photoshop CC 2015(破解版)
  • AliWangwang.app(阿里旺旺)
  • Boom 2.app(Mac 上的音效增强利器)
  • CleanMyMac 3.app(优化/清理 Mac 的利器)
  • DNSCrypt Menubar.app(DNSCrypt 的桌面工具,安装 DNSCrypt 后自带的)
  • DaisyDisk.app(查看磁盘使用状态,界面很漂亮)
  • Evernote.app(印象笔记)
  • GarageBand.app(Mac 自带的音乐编辑软件)
  • GoAgentX.app(已经不太好用了,计划自己开发一个工具取代他)
  • Microsoft Excel.app
  • Microsoft OneNote.app
  • Microsoft Outlook.app
  • Microsoft PowerPoint.app
  • Microsoft Word.app
  • Parallels Desktop.app(Mac 上最好用的虚拟机,不过我现在用的很少了)
  • Postico.app(管理 Postgres 的利器)
  • QQ.app
  • Quip.app(文档协作利器,对英文的引号不支持,支持 Markdown)
  • Quiver.app(知识管理利器:支持 markdown/LaTeX/Diagram,我的新宠)
  • Sequel Pro.app(管理 MySQL 的利器)
  • Snip.app(腾讯出品的截图软件)
  • Sublime Text.app
  • The Unarchiver.app
  • Thunder.app
  • TickTick.app(滴答时钟)
  • WeChat.app
  • WebStorm.app
  • XMind.app
  • Xcode.app
  • YoudaoNote.app(有道云笔记)
  • iTerm.app(iTerm 2)
  • kuaipan.app(快盘)

2)导出 GoAgentX 的设置

打开 GoAgentX 的配置文件界面,左边栏全选,按右键菜单导出

3)其他配置文件

  • ~/.zfunc
  • ~/.zlogin
  • ~/.zprofile
  • ~/.zshenv
  • ~/.zshrc
  • ~/.ssh/
  • 自己编写的 shell 函数等

2 - 制作 Mac OS X 安装 U 盘

使用 App Store 下载最新版本的 Mac OS X 更新(本例是 Mac OS X El Capitan),千万先别安装

耗时:约 60-120min,3G 左右

格式化U盘

准备一张 8G 以上的U盘,用磁盘工具抹掉,参数同格式化移动硬盘。

制作安装盘

## 本例是 OS X El Capitan
sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/ --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction

等待 20-30min 后,出现

Copy complete. Done.

表示制作成功。

PS:网上有一个用 Apple Script 写的工具——DiskMaker X,原理类似;但是存在一个 Bug:由于安装文件大小有 3G,所以复制文件需要花费 20-30min,Apple Script 脚本引擎会引发“脚本等待时间过长”的错误,导致制作失败。

所以推荐原生操作。

3 - 全新安装

U盘引导启动

将以上制作的 U 盘插入mac,重启系统时,长按 Option / Alt 键盘,选择 U 盘启动(本例中是Install OS X El Capitan

格式化 Mac 磁盘

稍等数分钟后,进入启动菜单;选择“磁盘工具”,格式化 Mac 磁盘,参数同上。

安装新系统

退出“磁盘工具”,返回启动菜单;选择“系统安装”,安装系统,耗时约 30-60min,期间会自动重启若干次。

友情提示:

  1. 提前准备好钥匙串的安全码和 iCloud 账号;
  2. 准备好 WIFI 密码;
  3. 安装过程中,
    千万别启用 FileVault!
    千万别启用 FileVault!
    千万别启用 FileVault!
    重要的事情说三遍!这是血的教训! T T

4 - 配置新系统

我的应用列表

  • GarageBand
    我最常用的作曲软件,Apple自家出品,简单易上手
    安装后运行一次,会自动下载素材,约几个小时,视网速而定
  • Quip
    很好用的md文档协作编辑器
  • Boom2
    系统音效辅助工具(我主要用来增大系统音量)
    主设置界面,根据提示打开网页下载Boom 2 Device Installer.pkg,安装后方能正常使用
  • CleanMyMac3
    系统维护必备工具,最好购买正版,也不贵
    去官网下载安装;若已购买正版,注册码可以在邮箱里找到
  • WeChat
    这个不用说,天朝人民都知道
  • QQ
    同上
  • Thunder
    迅雷是我唯一在Mac上保留的下载软件,离线下载最常用,我也购买了他们家的会员
    先安装App Store上的旧版,安装后运行一次,十分钟左右后会要求更新
  • The Unarchiver
    我最常用的解压缩软件
  • Evernote
    大名鼎鼎的印象笔记不用多说了,做笔记必备,我也购买了她们家的会员
    这是告诉我自己的:
    登陆时,记得选择International账户
  • Xcode
    如果你是IOS开发者,这玩意儿必用
    安装后记得运行一次,让它自动配置
  • Adobe Photoshop CC
    大名鼎鼎的P图软件,这个我也不用多说了,自恋患者必备

系统偏好设置和其他设置

  • 设置触控板常用手势
  • 配置iCloud
  • 添加互联网账户
  • 配置Finder
    菜单→ 显示状态栏,路径栏等

还原配置文件

还原所有备份的配置文件;有些配置文件,可以到 Time Machine 中旧的备份数据去寻找复制

温馨提示

记得检查和更换文件和目录的所有者

sudo chown -R bk:staff <...>

安装必备工具

  • 常用工具
    • 安装 Google Chrome
    • 安装 Sublime Text
    • 安装 iTerm 2
      最好用的命令行工具,没有之一,我用它代替系统自带的“终端”工具
    • 安装 ohmyzsh
      这个就不用说了,目前是我主要的 shell 环境
      若没有安装 git,系统会自动安装 Xcode Tools
    • 安装 Homebrew
      OS X 不可或缺的套件管理器,也是我的标配
    • 安装 Homebrew Cask
      这个也不用介绍了,也是我的标配
  • 翻墙工具
    • VPNGate
      使用手机访问 VPNGate 官网 ,获取可用的 VPN(L2TP)服务器IP
      账户名称、账户密码、共享密钥均为 vpn
      在Mac上配置时,可先保存好账户、密码和密钥,然后更换IP地址测试
    • GoAgentX [Google Code Archive]
      下载最新版,双击之前导出的配置文件导入配置;新导入的配置文件存在于 Bundles 标签中
      原官网已停运,Github 上均为旧版,最新版在 Google Code Archive 上,有效期到 2016 年)
      最近更新:
      GoAgentX 目前已经下载不到了,建议保留原版本;我在计划开发一个代替品

配置常用环境

1 - RVM(Ruby Version Manager)

1)安装rvm

访问 rvm官网 ,根据教程安装。

2)配置淘宝源

访问 https://ruby.taobao.org/ ,根据步骤配置。

3)设置配置文件

.gemrc 文件内容如下:

---
:backtrace: false
:bulk_threshold: 
:sources:
- https://ruby.taobao.org/
:update_sources: 
:verbose: 
gem: "--no-rdoc --no-ri"

2 - NVM(Node Version Manager)

1)安装nvm

访问 nvm 官网,根据教程安装;

2)配置淘宝源

访问 http://npm.taobao.org/ ,根据步骤配置。

1)path_helper 引起的 $PATH 环境变量顺序错乱问题

问题描述:

所有的环境安装完成后,可能出现某些命令无法执行。这个时候检查系统变量 $PATH,发现通过脚本自动添加的 $PATH 路径
(例如 $HOME/.nvm/versions/node/v4.2.1/bin 等)并未置于 $PATH 之首,造成 $HOME/.rvm/scripts/rvm 等环境脚本加载失败

问题解析:

通过实验,得到 zsh 的配置文件的加载规律:


# A: /etc/zshenv   B: ~/.zshenv   C: /etc/zprofile   D: ~/.zprofile
# E: /etc/zshrc    F: ~/.zshrc    G: /etc/zlogin     H: ~/.zlogin
# I: ~/.zlogout    J: /etc/zlogout
#+-------------------+-------------------------------------------+
#|                   |                   login                   |
#|                   +------------------------------+------------+
#|                   |              yes             |     no     |
#+-------------+-----+------------------------------+------------+
#|             | yes | A->B->C->D->E->F->G->H->I->J | A->B->E->F |
#| interactive |-----+------------------------------+------------+
#|             | no  | A->B->C->D->      G->H->I->J | A->B       |
#+-------------+-----+------------------------------+------------+

从加载顺序中可以看出来,.zshenv 文件是能保证被第一个加载的。所以,大部分的 zsh 配置指令都应该写在这个文件中。

OS X El Capitan 系统中,有两个 zsh 的默认配置文件,其中内容如下:

/etc/zprofile:

# system-wide environment settings for zsh(1)
 [ -x /usr/libexec/path_helper ]; 
     `/usr/libexec/path_helper `

/etc/zshrc:

# Correctly display UTF-8 with combining characters.
 [ "$TERM_PROGRAM" = "Apple_Terminal" ]; 
    setopt combiningchars

我们发现,/etc/zprofile 引用了一个可执行文件
/usr/libexec/path_helper,那这个文件的作用是什么呢?

原来,苹果使用一套新的机制希望来替换传统的直接修改环境变量的方式:path_helper

path_helper 命令只是用来输出一个 shell 语句,例如:

export $PATH=<...>
export $MANPATH=<...>

而本身并不执行任何修改。因此,可使用 eval 命令执行修改。-s 参数的作用,是只生成 $PATHexport 语句。

而执行 path_helper 命令的时候,它会按照以下次序,依次添加路径:

  1. /etc/paths 文件中的路径
  2. /etc/paths.d 目录下所有文件中的路径
  3. 当前 $PATH 变量

其中,重复路径不再添加。

现在我们来推测一下:当系统加载 zsh 环境的时候,$PATH 环境变量到底发生了什么?

由于 OS X El Capitan 系统中默认不存在 /etc/zshenv 文件,所以 zsh 加载的第一个文件是 .zshenv。加载 .zshenv 后,rvmnvm.sh 等环境配置脚本被执行,此时 $PATH 是理想的状态;

当系统执行 /etc/zprofile 文件的时候,文件中的 path_helper 指令对 $PATH 变量中所有的路径重新做了一个排序,系统默认的 /bin 路径自动排到了最前面,元凶终于找到了:)

解决方案:

所以,原则上,将在 $PATH 中添加前置路径的脚本,从 .zshenv 移到 .zprofile.zshrc 中加载,即可。

其余的,具体情况具体分析。

2)Mac OS X El Capitan 中,Dock 和 LaunchPad 图标异常

重置 LauchPad 图标数据库:

defaults write com.apple.dock ResetLaunchPad -bool  && killall Dock

重置Dock图标(就是桌面最下方)数据库:

rm  ~/Library/Application\ Support/Dock/*.db && killall Dock

3)其他小技巧

配置所有文件可见

defaults write com.apple.finder AppleShowAllFiles -bool 

4)启用 root 账号

系统偏好设置 → 用户与群组 → 登录选项 → 解锁 → 网络账号服务器 → 加入 → 打开目录实用工具 → 解锁

然后菜单栏:编辑 → 启用 root 用户

PS:解锁——点击下方的锁图标,输入密码,解锁界面

(未完待续)