注:用的是lede的源码,地址:Github-Lede
一,常规安装环境:
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 libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 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 clean # 这行是我自己加的,作用是清理缓存
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
三、下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程)
make download -j8
make V=s -j1
重点来了,如果二次时不修改.config文件,走下面的:
cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc)
如果修改了.config的内容,就需要重新配置:
make menuconfig
make download -j8
make V=s -j$(nproc)
如果修改过 feeds.conf.default 文件,就必须执行:
./scripts/feeds clean # 如果修改了feeds.conf.default文件,则必须执行这行,否则会报错
./scripts/feeds update -a
./scripts/feeds install -a
编译完成后输出路径:/bin/targets
四、定制化:
1、修改lan口IP地址
vi /home/wpe/lede/package/base-files/files/bin/config_generate
在第150行左右:
//原来是这样的
case "$1" in
lan) ipad=${ipaddr:-"192.168.1.1"} ;;
*) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
esac
//如果你要把默认地址改成 192.168.5.1
case "$1" in
lan) ipad=${ipaddr:-"192.168.5.1"} ;;
*) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
esac
五、生成在github actions上使用的配置文件
./scripts/diffconfig.sh > seed.config
说明:用于生成一个名为 seed.config
的文件,其中包含了当前编译配置与默认配置之间的差异。
在 OpenWrt 中,seed.config
文件通常用作种子配置文件,其中包含了用户自定义的编译配置。通过运行 ./scripts/diffconfig.sh
脚本并将输出重定向到 seed.config
文件,你可以将当前的编译配置保存为种子配置,以便在后续的编译过程中使用。
这个种子配置文件可以用于快速恢复到先前的编译配置,或者与其他人共享和比较配置。例如,你可以将 seed.config
文件提供给其他人,让他们在相同的编译环境中使用相同的配置进行编译。