时雨小径 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

引用

用 Workflow + Drafts + Google Apps Script 打造便捷的记录流

最有趣的还是过程, 而手腕上的Apple Watch和裤兜里的iPhone也显得更迷人了呢.

最近开始去gym进行力量训练, 需要记录每一次的项目以及运动量. 前两天的流程是当做完4组训练之后, 打开手机的Note记录, 然后晚上回到家以后再记录到Google Sheets里.

如此做了两天, 发现这流程有待改进. 首先是发现做完单项目4组之后, 实在是不愿意拿出手机来打字, 其次每次练完回到家还得机械性地重复进行填表, 也是令我有点不情愿.

我向来是个宁愿一次性用3个小时写脚本也不愿意每次花15分钟复制粘贴的人. 面对这种的重复性的任务, 自然不会妥协. 所以就想了一些自动化的方法, 最终制定了用Workflow + Drafts + Google Apps Script结合的方法, 实现了从Apple Watch/iPhone到Google Sheets的上传记录流程.

Read More

港∙湾

心本身没有漂泊的能力, 随波逐流的只是盛装的容器.

尔湾是个别致的名字.
不管是取意"你的湾", 抑或是"那条湾", 都有一番味道.
难忘的像是清早草坪上浇灌后露水和雨后落叶与鸟类排泄物的混合.

我还是挺留恋那里许多的傍晚, 在下班的路上追赶落日.
车流壮烈地像群扑火的飞蛾.

两年前, 我站在太平山顶, 看着山下万家灯火.
周围尽是人头与自拍杆.
我不知道的是有个极好的观景点, 其实是在往下走五十米处.

To The Moon

很久以前就被朋友推荐这个游戏,上个星期在steam上看见就买了。游戏时间不长,断断续续地大概玩了三个小时不到就结束了,像一场加长版的互动电影。

剧情讲的是两个技术人员,Eva和Watts,帮助一位老人John完成临终遗愿的故事。

John想去月球。

在他的记忆的最深处,去月球是和跟River见面隐隐地相关的,阻断剂让他忘记了第一次的见面,也忘了月球和星空,灯塔,鸭嘴兽玩偶的关系。

只剩下了,去月球

所以当我看到星座连成兔子的形状,背包里掉出鸭嘴兽的玩偶时,我想这游戏已经完成使命了–它成功地打动了我。

“人生若只如初见”。

这愿望在患阿斯伯格症的River身上显得格外强烈。在那次争吵之后,她开始执着地折兔子直到堆满房间,她宁愿把治疗的费用花在建造灯塔边的房子。所有的坚持,就是为了或许有一天这些事物能唤起John被隔断的那段记忆。

“老时间?老地点?”– 一句初次见面时让心里起了小小波澜的约定。
“没有时间,没有地点”– 不觉想起之前片段中这句话里含着的小小怨念。

她格外地在意他爱她的初衷,在意那一个特定的时空地点下,那一片星空或是灯塔,那一个天真的约定。

有谁不是呢。

一个微笑,一句寒暄,一段旅途。
或许少有人是真正执着的吧,记忆里的元素渐渐模糊,如今怀揣着同样模糊的愿望或梦想,却不知道是为了什么。

Read More