前言

博主并非 mac 用户,玩黑苹果大概是5年前的事了,作为一个 Windows 死忠粉,且没有任何艺术创作上的需要,已经很长一段时间没有和 macOS 打交道了。而前段时间博主做了个 GitHub Actions 编译 OpenWrt 的方案是基于 Ubuntu 虚拟环境的,听群内一位大佬说 macOS 的性能配置更高,于是就研究了一下 macOS 搭建 OpenWrt 编译环境。

配置 OpenWrt 编译环境

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 使用 Homebrew 安装工具链、依赖与基础软件包:
brew install coreutils diffutils findutils gawk gnu-getopt gnu-tar grep wget quilt xz
  • 然后把以下两行添加系统路径环境变量的命令添加到 shell 启动文件中,比如bash~/.bashrczsh~/.zshrc。这里以bash为例子,直接输入以下命令即可:
echo 'export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"' >> ~/.bashrc
echo 'export PATH="/usr/local/opt/findutils/libexec/gnubin:$PATH"' >> ~/.bashrc
echo 'export PATH="/usr/local/opt/gnu-getopt/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bashrc
echo 'export PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"' >> ~/.bashrc
echo 'export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"' >> ~/.bashrc
  • 最后重新加载一下 shell 启动文件。
source ~/.bashrc

创建大小写敏感的磁盘镜像

OpenWrt 必须在大小写敏感的磁盘分区上进行编译,如果你的 macOS 在安装时没有选择这种磁盘格式,那么就需要进行以下操作,去创建一个区分大小写的 HFS+ 格式的磁盘镜像。

  • 创建镜像
hdiutil create -size 50g -type SPARSE -fs "Case-sensitive HFS+" -volname OpenWrt OpenWrt.sparseimage
TIPS: 编译 OpenWrt 至少需要 50G 的大小,请确保你的磁盘空间足够。
  • 挂载镜像
hdiutil attach OpenWrt.sparseimage
  • 进入挂载路径,进行接下来的拉取源码和编译操作。
cd /Volumes/OpenWrt

开始编译

编译的过程就像复读机,几乎就是复制粘贴的过程。详细的编译步骤可以去看《OpenWrt 编译步骤与命令详解》,这里不做赘述了。

找到编译的固件

以 x86_64 平台为例子,固件所在路径为:

/Volumes/OpenWrt/openwrt/bin/targets/x86/64

尾巴

经过多次的编译尝试,虽然能编译成功,但还是遇到了一些的问题,这在同样编译配置下使用 Ubuntu 编译并没有出现。如果你没有一定的计算机基础和强大的学习能力,这些问题很难得到解决,因为涉及到修改源码,所以博主并不推荐新手朋友使用 macOS 编译 OpenWrt。

参考资料

OpenWrt Buildroot – Installation on macOS