使用 macOS 编译 OpenWrt

请注意,本文编写于 172 天前,最后修改于 118 天前,其中某些信息可能已经过时。

前言

博主并非 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

添加新评论

评论列表