OpenWRT

在OpenWrt 编译环境中使用make menuconfig 命令进入配置界面后,需要勾选如下组件:

  • Kernel modules
    USB Support:

    kmod-usb-core
    kmod-usb-ohci
    kmod-usb-uhci
    kmod-usb2
    kmod-usb3 

    USB Network Support:

    kmod-usb-net
    kmod-usb-net-rndis
    kmod-usb-net-cdc-ether 

    USB Serial Support:

    kmod-usb-serial
    kmod-usb-serial-option
  • Utilities

    usb-modeswitch

添加以上组件后,可支持Android通过USB或4G/5G USB 网卡共享网络至OpenWRT 路由器。

如果你的设备CPU为ARM架构,或者使用MacOS ARM 环境的虚拟机,需要在Ubunbtu 操作系统下编译LEDE固件,请参考如下步骤:

1.安装Ubuntu 24 ARM操作系统
MacOS M2/M4环境下,可使用 FusionVirtualbox 安装 Ubuntu,Ububtu ISO下载地址如下:

https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.2-live-server-arm64.iso

2.安装编译依赖

sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache clang cmake cpio curl device-tree-compiler flex gawk gettext \
genisoimage git gperf haveged help2man intltool libelf-dev libfuse-dev libglib2.0-dev \
libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev \
libreadline-dev libssl-dev libtool llvm lrzsz msmtp ninja-build p7zip p7zip-full patch pkgconf \
python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion \
swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

注意:相较LEDE官网提供的x86架构的Ububtu依赖,以上代码已移除如下包,否则将无法在ARM环境下安装(如下包为在x86_64上进行32位编译而设计的,在ARM系统上,LEDE/OpenWrt的构建系统会自己下载并编译对应的交叉编译工具链,而不是依赖宿主系统提供*-multilib包):

gcc-multilib
g++-multilib
libc6-dev-i386

下载安装适用于ARM环境的go:

wget https://www.purvar.cn/uploads/shell/installgo.sh
sh installgo.sh
source ${PROFILE_FILE}

3.下载源代码,更新 feeds 并选择配置

git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

特别注意,ARM环境下需要添加此步操作:
Languages > Go > Configuration > External bootstrap Go root directory
按上面的环境安装后,go应该默认在 /usr/local/go/bin/go目录下,请将 /usr/local/go/bin/go 写入这项配置后保存,否则后续编译将无法正常进行。
如需要确认go的安装路径,请使用如下命令查询:

which go

4.下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程)

make download -j8
make V=s -j1

如需二次编译:

cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc)

如果需要重新配置:

rm -rf .config
make menuconfig
make V=s -j$(nproc)

编译完成后输出路径:bin/targets

关于其他环境的编译方法,请移步Lean的LEDE官网