近十年电信宽带用户,电信最近良心大发,家中宽带免费升级到了1000M,古董路由器难堪大任,多方比较下选择了RAX3000M。此等路由器,怎能局限于原厂没什么功能的系统! 恩山寻觅多方,各成品系统体验始终不尽如我意,遂上网学习后自行编译Lede分支的Openwrt固件。书此帖以作记录。

1.准备Ubuntu22.04操作系统。使用非root用户登录终端。我用的是VMWare+Ubuntu22.04。安装过程不加赘述。

2.配置代理。编译过程涉及从国外网站下载大量内容,如无代理,则编译龟速且极易失败。如果你有境外服务器,则可直接进入下一步。

3.更新系统,安装依赖。

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 cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

4.下载Lede源码

git clone https://github.com/coolsnowwolf/lede
cd lede

5.添加额外的插件仓库。Lede源码自带插件中没有代理上网工具,如OpenClash,Passwall。故需额外添加。

使用ls -a命令可以查看下载内容,包括单文件与文件夹,其中feeds.conf.default文件内即为插件库,使用sudo nano feeds.conf.default命令以进行编辑,向其中加入

src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small

然后按Ctrl+O,Enter以保存更改,按Ctrl+X退出编辑。

6.更新feeds

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

7.自定义配置

# 修改默认IP为 192.168.8.1
sed -i 's/192.168.1.1/192.168.8.1/g' package/base-files/files/bin/config_generate
# 修改默认主机名为MiyaWrt
sed -i '/uci commit system/i\uci set system.@system[0].hostname='MiyaWrt'' package/lean/default-settings/files/zzz-default-settings
# 加入编译者信息
sed -i "s/OpenWrt /Miyalian build $(TZ=UTC-8 date "+%Y.%m.%d") @ OpenWrt /g" package/lean/default-settings/files/zzz-default-settings
# 修改默认主题
sed -i "s/luci-theme-bootstrap/luci-theme-argon/g" feeds/luci/collections/luci/Makefile

8.配置编译选项

make menuconfig

各选项解释

  1. Target System:选择你的设备所使用的处理器架构。
  2. Subtarget:根据设备的详细型号,选择相应的子目标。
  3. Target Profile:选择你的设备型号。这会自动设置与设备兼容的预设选项。
  4. Target Images:选择生成的固件类型,例如:squashfsext4等。
  5. Global build settings:配置全局编译设置,例如:启用/禁用软件包的签名检查、IPv6支持等。
  6. Base system:选择基本系统组件,例如:网络配置、系统日志、防火墙等。
  7. Extra packages:选择额外的软件包,如:文件系统支持、VPN、代理等。
  8. Kernel modules:选择内核模块,如:支持的硬件设备、文件系统、网络协议等。
  9. LuCI:选择Web界面组件,包括主题、应用、协议支持等。
  10. Languages:选择系统支持的语言包。
  11. Libraries:选择编译时需要的库文件,如:加密库、数据库库等。
  12. Utilities:选择实用工具,如:文件管理器、终端模拟器、脚本语言支持等。

9.下载dl库,编译固件

make download -j8

此步骤要确保没有Error报告,如有,则重新执行make download -j8命令。

开始编译

make V=s -j1

其中的数字代表编译线程数,首次编译建议1线程,不易出错,但是速度非常慢。

编译输出路径lede/bin/targets

二次编译

1.拉取最新 OpenWrt 源码和更新 feeds 源中的软件包源码

cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a

2.清除旧的编译产物和目录(可选)

make clean

源码有大规模更新或者内核更新后执行,以保证编译质量

此操作会删除 /bin 和 /build_dir 目录中的文件

make dirclean

更换架构编译前必须执行

此操作会删除 /bin 和 /build_dir 目录的中的文件(make clean),以及/staging_dir、 /toolchain、/tmp 和 /logs 中的文件

3.同首次编译,多线程编译失败后自动进入单线程编译,失败则输出详细日志

make defconfig
make download -j8
make V=s -j$(nproc)

如果需要重新配置

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

标签: openwrt

添加新评论