OpenWrt是一款强大的开源路由器操作系统,提供了高度的自定义性和灵活性。本指南将详细介绍如何从源代码编译OpenWrt固件。

准备工作

  1. 不要使用root用户进行编译 - 这是安全最佳实践
  2. 网络准备 - 国内用户建议准备好梯子,某些依赖可能需要
  3. 默认登录信息 - 编译后的固件默认IP: 192.168.1.1,密码: password

系统要求

推荐使用Debian或Ubuntu LTS版本的Linux系统。

安装编译依赖

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 gcc-multilib g++-multilib gettext \
genisoimage git gperf haveged help2man intltool libc6-dev-i386 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

获取源代码并配置

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

make menuconfig界面中,你可以选择需要的功能和驱动。

编译过程

首次编译建议使用单线程:

make download -j8  # 下载依赖
make V=s -j1       # 开始编译,V=s显示详细输出

编译成功后,固件将输出到bin/targets目录。

二次编译

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)

特殊环境编译指南

WSL/WSL2用户

由于PATH和文件系统问题,需要特殊处理:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make

解决大小写敏感问题(管理员权限):

fsutil.exe file setCaseSensitiveInfo <your_local_lede_path> enable

macOS用户

  1. 安装Xcode
  2. 安装Homebrew
  3. 安装必要工具链:
brew unlink awk
brew install coreutils diffutils findutils gawk gnu-getopt gnu-tar grep make ncurses pkg-config wget quilt xz
brew install gcc@11

设置环境变量(根据芯片类型选择):

Intel芯片:

echo 'export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"' >> ~/.bashrc
# 其他路径设置...

Apple芯片:

echo 'export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"' >> ~/.bashrc
# 其他路径设置...

重要声明

本项目的所有源代码均为开源,不含任何后门或监控HTTPS的闭源软件。SSL安全是互联网的重要保障,我们承诺提供安全干净的固件。

许可协议

你可以自由使用这些代码,但如果你基于此代码进行二次发布,请注明原始GitHub仓库链接:https://github.com/coolsnowwolf/lede

希望这篇指南能帮助你成功编译自己的OpenWrt固件!如有任何问题,可以参考项目文档或社区讨论。