macOS 下编译 OpenWrt (M1 芯片)

新建区分大小写的 APFS 宗卷

磁盘工具 -> 新建

  • 名称:Develop
  • 格式:APFS(区分大小写)

新建的分区在 /Volumes 目录下

安装编译所需依赖

安装 Homebrew

安装前打开代理工具,并开启增强模式。

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

在终端的配置文件中增加环境变量:

如果使用的终端是 zsh,使用 vim ~/.zshrc;如果使用的终端是 bash,使用 vim ~/.bash_profile

1
2
export PATH=/opt/homebrew/bin:$PATH
export PATH=/opt/homebrew/sbin:$PATH

使环境变量生效:

如果使用的终端是 zsh,使用 vim ~/.zshrc;如果使用的终端是 bash,使用 vim ~/.bash_profile

1
brew -v

终端输出 Homebrew 4.2.11 版本号,说明安装成功。

安装依赖

1
2
brew unlink awk
brew install coreutils diffutils findutils gawk gnu-getopt gnu-tar grep make ncurses pkg-config wget quilt xz python-psutil

添加环境变量

如果使用的终端是 zsh,使用 vim ~/.zshrc;如果使用的终端是 bash,使用 vim ~/.bash_profile

添加以下内容:

1
2
3
4
5
6
7
8
export PATH=/opt/homebrew/opt/make/libexec/gnubin:$PATH
export PATH=/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH
export PATH=/opt/homebrew/opt/findutils/libexec/gnubin:$PATH
export PATH=/opt/homebrew/opt/gnu-getopt/bin:$PATH
export PATH=/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH
export PATH=/opt/homebrew/opt/grep/libexec/gnubin:$PATH
export PATH=/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH
export PATH=/opt/homebrew/opt/make/libexec/gnubin:$PATH

使添加的环境变量生效

如果使用的终端是 zsh,使用 source ~/.zshrc;如果使用的终端是 bash,使用 source ~/.bash_profile

克隆并编译 OpenWrt

克隆 openwrt 源码

在新建的 APFS 分区中克隆 openwrt 源码:

1
2
cd /Volumes/Develop
git clone --depth=1 https://github.com/openwrt/openwrt.git

为 openwrt 增加常用插件

openwrt/package/ 目录下增加 my-package 目录,用于保存自己新增的插件。

1
2
cd openwrt
mkdir -p ./package/my-package

增加 OpenClash 插件

  • 克隆 OpenClash 插件源码时,一定要增加 --depth=1 参数。
1
2
cd ./package/my-package
git clone --depth=1 https://github.com/vernesong/OpenClash.git

更新并安装配置

回到 openwrt 目录

1
2
./scripts/feeds update -a
./scripts/feeds install -a

配置 openwrt

openwrt 目录

1
make menuconfig

Target System (MediaTek Ralink MIPS)
Subtarget (MT7621 based boards)
Target Profile (Xiaomi Mi Router 3G)

Base system —>

如果增加了 OpenClash 插件,在 LuCI 中选中 luci-app-openclash 时,会默认增加dnsmasq-full,此时需要取消选中 dnsmasq,不然编译时会提示重复,出现编译错误。

< > dnsmasq………………………………………. DNS and DHCP server

LuCI —>

  1. Collections

<> luci………………. LuCI interface with Uhttpd as Webserver (default)
-
- luci-light…………… LuCI interface with Uhttpd as Webserver (light)

  1. Modules

Translations —>
<*> Chinese Simplified (zh_Hans)

<> luci-compat…………………………… LuCI compatibility libraries
-
- luci-lua-runtime………………………… LuCI Lua runtime libraries

<*> luci-mod-dashboard……………………………. LuCI Dashboard Pages

  1. Applications

<*> luci-app-openclash………………………….. LuCI support for clash

  1. Themes
  2. Protocols
  3. Libraries

Utilities —>

Editors —>
<*> vim-full………………….. Vi IMproved - enhanced vi editor (Normal)

Shells —>
<*> zsh…………………………………………………. The Z shell

编译

1
make -j$(nproc) V=s

重新编译

openwrt 目录

1
2
3
rm -rf ./tmp && rm -rf .config
make menuconfig
make -j10 V=s

参考