时雨小径 May the Spirit be with you

Arch on Mac 安装备忘录

本来想用英文写的, 因为一直觉得技术日志什么的文章用英文写起来总是舒服许多, 但是因为前一段时间看到Qiita这个社区, 上面的日本的程序员们们用母语写文档也写的十分整洁美观, 所以也想试一试, 练习一下中文的技术写作.

前言

首先我想讲一下我在Macbook上安装Arch Linux的动机, 绝对不是因为爱折腾, 也不是因为想装逼. 而是在实际的工作, Macbook上的一些相对的缺点让我觉得很受限制. 最直接的一个原因是Terminal Emulator的渲染问题, 我在MacOS下使用的是iTerm2, 已经是当下公认的比较好的了, 然而尽管我的Macbook Pro配置并不差(2014-mid顶配), 却不能流畅的运行tmux + vim + iTerm2 这个组合, 连平常的代码补全都有点卡顿, 更别提即时的代码检查了. 我之前一度认为是这个组合本身的问题, 也可能是我的vimrc搞了太多插件导致的. 但是当我之前有一次心血来潮买了块SSD在家里的台式机上装上Arch后, 同样的配置, 流畅程度让我有点吃惊, 简直有如水银泻地, 从此, 因为有了对比, 我更难直视MacOS下面的Terminal, 去试了一下颇受好评的Visual Studio Code, 在vim插件的配合下的确还是不错的, 可是毕竟它是一个GUI的编辑器, 注定了给我的感觉总是在凑合, hjkl 的确是vim方便的地方, VS Code的插件也赋予了它这个能力, 但是对于我来说最关键的原因是它可以在Terminal里运行, 能够在tmux里任意的切换不同的session, 是对我的工作效率影响比较大的一个因素.

而最近直接推动我下决心在Macbook Pro上安装Arch的原因是在我在Linux下面寻找Hammerspoon的替代品时, 发现了i3wm, 觉得这个就是我想要的工作环境, 于是在网上了解一番后, 就决定开始改造手上这部Macbook Pro, 因为考虑还到需要做一些iOS的开发, 所以没有将整个硬盘都给Linux, 而是装了双系统.

我不打算在这篇日志里记录详细的步骤, 而是挑一些我觉得对于同一型号的Macbook Pro用户可能会碰到的问题.

最后很重要的提醒, 开始任何倒腾之前, 记得备份你的系统 : )


分区

我当时安装的MacOS是High Sierra, 文件系统是APFS, 在我使用Disk Utility分区的时候遇到了

Underallocation Detected on Main device

我的解决方法是先用Time Machine备份到外接的硬盘, 然后将整个硬盘格式化并重新分区, 我分了两格区, 用HFS+格式格式化用来放MacOS的分区, 用MS-Dos格式化用来放Arch的分区(会在安装过程中重新格式化). 然后从Time Machine恢复之前备份的系统到MacOS的分区上.


网络

如果你手头上有USB转网口的适配器的话, 那么你可以省下不少麻烦. 要是没有的话, 也不用担心, 毕竟办法总比困难多.

这个问题困扰了我两天, 一开始无线网卡不能被正确地识别, ip link 显示只有lo. 在查阅资料后, 发现是因为当前版本的Live CD没有带我的Macbook Pro需要的的固件包(firmware package), broadcom-wl 6.30.223.271-7, 这个是个AUR包, 需要根据在相同Linux内核的环境下自己编译, 在网上通常比价难找到刚好符合条件的, 我的解决方法是在VirtualBox里用同一个Live CD镜像安装一个Arch, (这个通常会比较顺利, 这里不赘言). 然后在里面编译固件包.

git clone https://aur.archlinux.org/broadcom-wl.git
makepkg -s

成功的话, 在当前文件夹下会产生一个.pkg.tar.xz结尾的文件, 这个就是所需要的安装包. 将这个安装包复制到一个外置储存设备上.

重新启动进入Live CD安装环境, 挂载存有broadcom-wl固件安装包的外置存储设备, 安装固件.

pacman -U broadcom-wl-6.30.223.271-7.pkg.tar.xz

安装后, 照理是我们接着用

modprobe wl

就可以加载无线网卡模块, 可是奇怪的是, 在我运行这个命令这个后, 没有丝毫的作用, ip link还是只有一个lo.

再度查询资料后, 发现是因为一些已经被加载的模块与wl有冲突, 所以需要先停掉那些模块, 然后再加载wl.

rmmod b43 b43legacy ssb bcm43xx brcm80211 brcmfmac brcmsmac bcma wl
modprobe wl

成功的话, 再次运行ip link你会看到新的interface了, 我的是wlps30.

接着需要手动启动dhcpcd, 然后用wifi-menu选择连接到你的无线网络.

dhcpcd wlp3s0
wifi-menu

双系统启动

我用的是rEFInd, 安装与设置都十分的简单, 直接到官方网站{target="_blank"}获取下载链接, 下载后解压任意文件夹下, 重新启动Mac并按住Command + R进入恢复模式, 然后用Terminal进入之前解压的文件夹下, 运行:

sudo ./refind-install

显卡驱动, GUI, 以及DPI

我建议安装nvidia驱动, 感觉更为流畅一些.

sudo pacman -S nvidia

安装GDM并启动GDM服务.

sudo pacman -S gdm
sudo systemctl enable gdm
sudo systemctl start gm

gnome桌面和cinnamon经过测试也是可以运行的, 但是我自己的话主要是用i3.

因为Macbook Pro屏幕的分辨率比较高, 如果使用默认的DPI的话字体UI会显得特别小, 设置一下DPI的话可以解决这个问题, 在$HOME/.Xresources里加入以下设置:

Xft.dpi: 144
Xft.rgba: rgb
Xft.antialias: true
Xft.hinting: false
Xft.lcdfilter: lcddefault

重新启动X就能看见效果.


一些其他驱动

风扇

yaourt -S mbpfan
sudo systemctl start mbpfan.service
sudo systemctl enable mbpfan.service

电源管理

# 自动调节电源
sudo pacman -S tlp
sudo systemctl enable tlp
sudo systemctl enable tlp-sleep
sudo tlp start

# 过热保护
yaourt -S thermald
sudo systemctl enable thermald
sudo systemctl start thermald

键盘背光

yaourt -S kbdlight
# 使用方法
kbdlight up [<percentage>]|down [<percentage>]|off|max|get|set <value>

屏幕亮度

yaourt -S light-git

Facetime摄像头驱动

yaourt -S bcwc-pcie-git

引用