注意:

  1. 不要用 root 用户进行编译!!!
  2. 国内用户编译前最好准备好梯子
  3. 默认登陆IP 192.168.1.1 密码 password

源码地址:https://github.com/coolsnowwolf/lede 感谢Lean大神

  1. 首先装好 Linux 系统,推荐 Debian 11 或 Ubuntu LTS
  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 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

3: 使用

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

命令下载好源代码然后cd lede 进入目录

4:缝合一些其他插件原地址:https://github.com/kenzok8/openwrt-packages 添加下面代码复制到 lede源码根目录 feeds.conf.default 文件

OpenWrt 编译 LuCI -> Applications 添加插件应用说明

  • 喜欢追新的可以去下载small-package,该仓库每天自动同步更新
  • small-package仓库地址
  • 软件不定期同步大神库更新,适合一键下载用于openwrt编译
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
#src-git small8 https://github.com/kenzok8/small-package
sed -i '$a src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '$a src-git small https://github.com/kenzok8/small' feeds.conf.default
#sed -i '$a src-git smpackage https://github.com/kenzok8/small-package' feeds.conf.default

对于强迫症的同学(有报错信息、或Lean源码编译出错的情况),请尝试删除冲突的插件

rm -rf feeds/smpackage/{base-files,dnsmasq,firewall*,fullconenat,libnftnl,nftables,ppp,opkg,ucl,upx,vsftpd-alt,miniupnpd-iptables,wireless-regdb}

miniupnpd编译

rm -rf feeds/smpackage/miniupnpd-iptables&& rm -rf package/feeds/smpackage/miniupnpd-iptables&&./scripts/feeds update -a&& ./scripts/feeds install -a

aliyundrive-webdav编译,二选一

curl -o ./feeds/packages/lang/rust/rust-values.mk https://raw.githubusercontent.com/Jason6111/packages/patch-1/lang/rust/rust-values.mk
curl -o ./feeds/packages/lang/rust/Makefile https://raw.githubusercontent.com/Jason6111/OpenWrt_Personal/main/other/rust/Makefile
curl -o ./feeds/packages/lang/rust/patches/0001-Update-xz2-and-use-it-static.patch https://raw.githubusercontent.com/Jason6111/OpenWrt_Personal/main/other/rust/0001-Update-xz2-and-use-it-static.patch
sed -i 's/stripped/release/g' feeds/packages/multimedia/aliyundrive-webdav/Makefile

编译新版Sing-box和hysteria,需golang版本1.20或者以上版本 ,可以用以下命令

rm -rf feeds/packages/lang/golang
git clone https://github.com/sbwml/packages_lang_golang -b 21.x feeds/packages/lang/golang

5:输入如下命令,更新编译源,并进入配置页面:

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

6:下载dl库(国内请尽量全局科学上网)

make -j8 download V=s


7:开始编译(-j1 后面是线程数。第一次编译推荐用单线程)

make V=s -j1

第一次编译推荐

git clone https://github.com/coolsnowwolf/lede
cd lede
sed -i '$a src-git smpackage https://github.com/kenzok8/small-package' feeds.conf.default
sed -i 's/192\.168\.1\.1/192.168.2.1/g' ~/lede/package/base-files/files/bin/config_generate
./scripts/feeds update -a && ./scripts/feeds install -a
sed -i 's/[Bb][Oo][Oo][Tt][Ss][Tt][Rr][Aa][Pp]/argon/g' ~/lede/feeds/luci/collections/luci/Makefile
make menuconfig
make -j8 download V=s
make V=s -j1
再次编译 (适用于不更改配置功能和插件,仅升级)
cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j8 download V=s
make V=s -j$(nproc)
更改配置编译
cd lede
rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)
Make界面开启IPV6
extra packages——ipv6helper
配置文件更改LAN口的默认IP地址
./package/base-files/files/bin/config_generate

大概在150行找到我们默认的原IP地址(192.168.1.1)

	case "$protocol" in
		static)
			local ipad
			case "$1" in
				lan) ipad=${ipaddr:-"192.168.1.1"} ;;
				*) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
			esac

			netm=${netmask:-"255.255.255.0"}

			uci -q batch <<-EOF
				set network.$1.proto='static'
				set network.$1.ipaddr='$ipad'
				set network.$1.netmask='$netm'
			EOF

Make界面编译插件时,建议修改下面两项默认大小,留足插件空间。( x86/64 )
Target Images ---> (16) Kernel partition size (in MB)           #默认是 (16) 建议修改 (256)
Target Images ---> (160) Root filesystem partition size (in MB) #默认是 (160) 建议修改 (512)
配置文件修改固件大小和固件类型
./config/Config-images.in
	comment "Image Options"

	source "target/linux/*/image/Config.in"

	config TARGET_KERNEL_PARTSIZE
		int "Kernel partition size (in MB)"
		depends on USES_BOOT_PART
		default 8 if TARGET_apm821xx_sata
		default 64 if TARGET_bcm27xx
		default 256

	config TARGET_ROOTFS_PARTSIZE
		int "Root filesystem partition size (in MB)"
		depends on USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_omap || TARGET_sunxi || TARGET_uml
		default 512
		help
		  Select the root filesystem partition size.


	config VMDK_IMAGES
		bool "Build VMware image files (VMDK)"
		depends on TARGET_x86
		depends on GRUB_IMAGES || GRUB_EFI_IMAGES
		default y  or  n
		select PACKAGE_kmod-e1000

打开适用于VMware的VM Tools
Utilities  --->  open-vm-tools  #打开适用于VMware的VM Tools
Utilities  --->  open-vm-tools-fuse  #打开适用于VMware的VM Tools

更改主题luci-theme-xxx
./feeds/luci/collections/luci/Makefile
LUCI_TITLE:=Standard OpenWrt set including full admin with ppp support and the default argon theme
LUCI_DEPENDS:= \
	+uhttpd +uhttpd-mod-ubus +luci-mod-admin-full +luci-theme-argon \
	+luci-app-firewall +luci-proto-ppp +libiwinfo-lua \
	+rpcd-mod-rrdns

安装 Cloudflare DDNS 组件

默认情况下 Open­Wrt 中并没有 Cloud­flare DDNS 功能,需要在编译时选择相应的组件,其位置在 NetworkIP Addresses and Namesddns-scripets_cloudflare.com-v4

文件清理
  • 清除旧的编译产物(可选)
  • make clean
  • 在源码有大规模更新或者内核更新后执行,以保证编译质量。此操作会删除/bin/build_dir目录中的文件。
  • 清除旧的编译产物、交叉编译工具及工具链等目录(可选)
  • make dirclean
  • 更换架构编译前必须执行。此操作会删除/bin/build_dir目录的中的文件(make clean)以及/staging_dir/toolchain/tmp/logs中的文件。
  • 清除 Open­Wrt 源码以外的文件(可选)
  • make distclean
  • 除非是做开发,并打算 push 到 GitHub 这样的远程仓库,否则几乎用不到。此操作相当于make dirclean外加删除/dl/feeds目录和.config文件。
  • 还原 Open­Wrt 源码到初始状态(可选)
  • git clean -xdf
  • 如果把源码改坏了,或者长时间没有进行编译时使用。
  • 清除临时文件
  • rm -rf tmp
  • 删除执行make menuconfig后产生的一些临时文件,包括一些软件包的检索信息,删除后会重新加载package目录下的软件包。若不删除会导致一些新加入的软件包不显示。
  • 删除编译配置文件
  • rm -f .config
  • 在不删除的情况下如果取消选择某些组件它的依赖组件不会自动取消,所以对于需要调整组件的情况下建议删除。
编译
  • 调整 Open­Wrt 系统组件
  • make menuconfig
  • 如果不打算调整组件则输入make defconfig,它会检测编译环境并根据更新自动调整编译配置文件。
  • 预下载编译所需的软件包
  • make download -j8 V=s
  • 检查文件完整性
  • find dl -size -1024c -exec ls -l {} \;
  • 此命令可以列出下载不完整的文件(根据我多次编译的经验得出小于1k的文件属于下载不完整),如果存在这样的文件可以使用
  • find dl -size -1024c -exec rm -f {} \;
  • 命令将它们删除,然后重新执行make download下载并反复检查,确认所有文件完整可大大提高编译成功率,避免浪费时间。
  • 开始编译
  • make -j$(nproc) || make -j1 || make -j1 V=s
  • 多线程编译失败后自动进入单线程编译,失败则输出详细日志。
Categories: 未分类

0 Comments

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注