LEDE源码编译教程

作者:admin
时间:2022-11-26 09:10
分类:电脑技术
内容: LEDE源码编译教程 Github：https://github.com/coolsnowwolf/lede Rockchip RK3568 预编译固件发布 Release 下载更新地址 (包括 H68K )：https://github.com/coolsnowwolf/lede/releases/tag/20220716 注意： XML/HTML代码尽量不要用 root 用户进行编译国内用户编译前最好准备好梯子默认登陆IP 192.168.1.1 密码 password 编译命令： 1.首先装好 Linux 系统，推荐 Debian 11 或 Ubuntu LTS（Linux Mint 21和LMDE 5） 2.安装编译依赖 XML/HTML代码 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 python3-pip qemu-utils rsync scons squashfs-tools subversion \ swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev XML/HTML代码 #其他 apt -y install rustc cargo golang clang 3.下载源代码，更新 feeds 并选择配置 XML/HTML代码 git clone https://github.com/coolsnowwolf/lede cd lede ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig 4.下载 dl 库，编译固件 （-j 后面是线程数，第一次编译推荐用单线程） XML/HTML代码 make download -j8 make V=s -j1 本套代码保证肯定可以编译成功。里面包括了 R22 所有源代码，包括 IPK 的。 5.二次编译 XML/HTML代码 cd lede git pull ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig make defconfig make download -j8 make -j$(( + 1)) V=s 如果需要重新配置： XML/HTML代码 rm -rf ./tmp && rm -rf .config make menuconfig make -j$(( + 1)) V=s 编译完成后输出路径：bin/targets 简单编译命令，只要默认或者修改不是很多，也基本一次成功。首次编译 XML/HTML代码 git clone https://github.com/coolsnowwolf/lede cd lede ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig make -j$(( + 1)) V=s 二次编译 XML/HTML代码 cd lede git pull ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig make -j$(( + 1)) V=s feeds.conf.default XML/HTML代码 src-git helloworld https://github.com/fw876/helloworld.git;master src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main src-git passwall2 https://github.com/xiaorouji/openwrt-passwall2.git;main src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main src-git OpenClash https://github.com/vernesong/OpenClash.git;master src-git homeproxy https://github.com/immortalwrt/homeproxy.git (不兼容lean的OP，防火墙冲突) passwall现在分为package和luci两个分支。 XML/HTML代码 src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main passwall2 XML/HTML代码 src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main src-git passwall2 https://github.com/xiaorouji/openwrt-passwall2.git;main lede/package/base-files/files/bin/config_generate 搜索192.168.1.1，找到下面的地址，修改即可修改编译的LEDE的默认地址。 lan) ipad=${ipaddr:-"192.168.1.1"} ;; LEDE根目录下.config就是编译的固件配置，备份下在编译其他修改版本，可以避免出错。 lean大的openwrt不支持在root用户环境下编译，需要输入命令禁用环境。 XML/HTML代码 export FORCE_UNSAFE_CONFIGURE=1 或者 export FORCE=1 或者在编译目录运行 sudo make FORCE_UNSAFE_CONFIGURE=1 或者直接创建一个user密码password的用户，用此用户登陆编译（推荐） XML/HTML代码 sudo useradd -m -s /bin/bash user echo 'user:password' | sudo chpasswd XML/HTML代码 #赋予 sudo 权限（重新登录或重启生效） usermod -aG sudo user 注意：lean代码升级到最新后，科学插件SSR+中的trojan和gfwlist模式会失效，还会出现一些奇怪问题，如需老版本lede，可以git切换回去，然后进行设置插件，编译。 XML/HTML代码 #查看分支 git tag #切换到20221001分支 git checkout 20221001 切换回最新主分支：git checkout master 在线编译网站：https://supes.top/ https://openwrt.ai/ https://op.supes.top/ 第三方插件仓库： https://github.com/liuran001/openwrt-packages https://github.com/kenzok8/openwrt-packages https://github.com/kenzok8/small-package https://github.com/kiddin9/openwrt-packages https://github.com/NueXini/NueXini_Packages openwrt固件与插件下载（kenzo）： https://op.dllkids.xyz/ ImmortalWrt：https://github.com/immortalwrt/immortalwrt Download：https://downloads.immortalwrt.org/ 在线编译网站：https://firmware-selector.immortalwrt.org/ 精品系统： eSir谷歌云盘：https://drive.google.com/drive/folders/1dqNUrMf9n7i3y1aSh68U5Yf44WQ3KCuh sirpdboy固件：https://github.com/sirpdboy/openwrt 常用的 OpenWRT & LEDE x86_64 热门固件 XML/HTML代码 # iStoreOS https://fw.koolcenter.com/iStoreOS/x86_64/ # DHDAXCW(骷髅头) https://github.com/DHDAXCW/OpenWRT_x86_x64 # SuLingGG https://openwrt.cc/releases/targets/x86/64/ # coolsnowwolf https://github.com/coolsnowwolf/lede # immortalwrt https://github.com/immortalwrt/immortalwrt 编译教程：安装编译必须组件（系统要求同LEDE） XML/HTML代码 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 ecj fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \ mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \ python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \ vim wget xmlto xxd zlib1g-dev 或者一键安装脚本： XML/HTML代码 sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh)' 首次编译 XML/HTML代码 git clone -b master --single-branch https://github.com/immortalwrt/immortalwrt cd immortalwrt ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig make -j$(( + 1)) V=s git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt 分支有：master openwrt-24.10 openwrt-23.05 openwrt-21.02 openwrt-18.06-k5.4 openwrt-18.06 二次编译 XML/HTML代码 cd immortalwrt git pull ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig make -j$(( + 1)) V=s 最新版本的LEDE内核已经升级到了6.1，占用资源更大，如果想切换到5.x核心，以X86为例，在 lede/target/linux/x86 目录下可以看到多个内核版本，config-5.4 config-5.10 config-5.15 config-6.1 这几个就是内核版本，选择你需要的版本，编译此目录下 Makefile 文件，修改 KERNEL_PATCHVER:=5.15 即可以编译5.15内核的LEDE。简单来说 以x86为例 /target/linux/x86/Makefile 修改 KERNEL_PATCHVER:=内核版本。保存编译OK。 WSL (Windows Subsystem for Linux) 中编译OpenWrt在执行./scripts/feeds update -a 过程中会遇到如下错误。 Build dependency: OpenWrt can only be built on a case-sensitive filesystem # OpenWrt只能构建在区分大小写的文件系统上导致的原因是 Windows 文件系统对大小写不敏感。解决方案从 Windows 10 insider build 17093 版本开始，新增了一种区分文件大小写的新方法：单个目录区分大小写。它可以良好的在 WSL 中和其他 Windows应用程序中使用。这个功能仅修改指定目录本身的属性，故不会对系统有任何的影响。以管理员权限运行 cmd 输入下面这个命令就可以开启某个目录区分大小写。 fsutil.exe file setCaseSensitiveInfo <path> enable 执行成功后会反馈一条信息需要注意的是，这个操作不会对此目录中已有的文件生效，只有新写入的文件才会继承这个属性。所以对于目录中已有的文件，需要把文件剪切到其它目录，然后再复制回来。（同盘符下的剪切不是写入，所以后面的操作是复制。）如果不理解上面这段话的含义，直接删除此目录中所有文件，重新克隆源码，再继续操作。另外，因为编译需要大量空间，默认的C盘可能不够，最好是用lxrunoffline命令将编译的Linux系统迁移到其他分区，以免造成空间不够的情况。也可以安装wsl时候就直接安装在其他分区。教程1 教程2 教程3 教程4 教程5 ipv6 支持 XML/HTML代码 Lean’Openwrt Extra packages --> ipv6helper NetWork --> Firewall --> ip6tables 下的俩个全选原版 22.03 固件需要启用这 4 个 odhcp6c odhcpd ip6tables luci-proto-ipv6 odhcpd 可替换成 odhcpd6 具体设置参考官方说明。更新： XML/HTML代码 git reset --hard commit_id 退到/进到 指定commit的sha码经测试，版本切换到 R23.7.7 版本，一切正常 XML/HTML代码 git clone https://github.com/coolsnowwolf/lede.git cd lede git reset --hard b201c29fa2749a6265ebf0b80ac3a94ad34ba6e4 export FORCE_UNSAFE_CONFIGURE=1 ./scripts/feeds update -a && ./scripts/feeds install -a make menuconfig make -j$(( + 1)) V=s feeds.conf.default XML/HTML代码 src-git helloworld https://github.com/fw876/helloworld.git;master src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main src-git OpenClash https://github.com/vernesong/OpenClash.git;master 经过上面编译的科学插件全都正常，后面版本会出现科学问题，比如SSR+中的trojan不能正常使用，或者网页打不开等。在旁路由下面出问题比较多，建议 R23.7.7 或者更老版本系统可能更好点，插件可以正常更新。 2023.12 ssr+编译出现 libopenssl-legacy 找不到的错误提示，可以通过以下命令屏蔽 XML/HTML代码 sed -i 's/ +libopenssl-legacy//g' feeds/helloworld/shadowsocksr-libev/Makefile 再进行编译即可，libopenssl-legacy是openwrt 23 with openssl 3.0 用的，可以屏蔽不用。 Github云编译：https://github.com/haiibo/OpenWrt 可以直接下载也可以fork自己Github账号修改后定制自己的OP固件。修改openclash源代码的配置文件 XML/HTML代码 option github_address_mod '0' 改成 option github_address_mod 'https://mirror.ghproxy.com/' 可以直接更新clash核心程序，方便一些。也可以到openclash的复写设置，Github 地址修改输入自定义地址：https://mirror.ghproxy.com/ 保存，就可以在线0更新程序。 2024.3.3编译原版代码出错：net/netfilter/xt_flowoffload.o 是内核问题，从5.15到最新的6.6都有问题，使用5.10内核编译通过。正在编译过程中，发现 coolsnowwolf 大佬刚刚修复，无用的研究和知识又多了一点。附快速修改命令： XML/HTML代码 # 1-设置默认主题（netgear） sed -i 's/bootstrap/netgear/g' ./feeds/luci/collections/luci/Makefile # 2-设置管理地址（192.168.0.111） sed -i 's/192.168.1.1/192.168.0.111/g' package/base-files/files/bin/config_generate # 3-编译内核版本（6.6） sed -i 's/KERNEL_PATCHVER:=6.1/KERNEL_PATCHVER:=6.6/g' ./target/linux/x86/Makefile # 4-设置密码为空 sed -i '/CYXluq4wUazHjmCDBCqXF/d' package/lean/default-settings/files/zzz-default-settings # 5-修改时间格式 sed -i 's/os.date()/os.date("%Y-%m-%d %H:%M:%S")/g' package/lean/autocore/files/*/index.htm # 6-添加固件日期 sed -i 's/IMG_PREFIX:=/IMG_PREFIX:=-/g' ./include/image.mk sed -i '/DTS_DIR:=/a\BUILD_DATE_PREFIX := $(shell date +'%F')' ./include/image.mk # 7-修正硬件信息 sed -i 's/${g}.*/${a}${b}${c}${d}${e}${f}${hydrid}/g' package/lean/autocore/files/x86/autocore # 8-增固件连接数（最大165535） sed -i '/customized in this file/a net.netfilter.nf_conntrack_max=165535' package/base-files/files/etc/sysctl.conf XML/HTML代码 # 9-TTYD终端无需输入密码直接登录 sed -i '/\/bin\/login -f root/!s|/bin/login|/bin/login -f root|' feeds/packages/utils/ttyd/files/ttyd.config 注意最新版本的Lede使用Luci2，需要使用以下命令修改默认IP XML/HTML代码 # 修改固件默认IP sed -i 's/192.168.1.1/192.168.0.111/g' package/base-files/luci2/bin/config_generate 新增软件源：（clash lucky easytier） XML/HTML代码 src-git mihomo https://github.com/morytyann/OpenWrt-mihomo.git;main src-git lucky https://github.com/gdy666/luci-app-lucky.git src-git easytier https://github.com/EasyTier/luci-app-easytier.git 增加easytier插件 XML/HTML代码 git clone https://github.com/EasyTier/luci-app-easytier.git package/easytier 增加natmap插件(nat打洞) XML/HTML代码 git clone https://github.com/blueberry-pie-11/luci-app-natmap package/natmap Nikki (formerly MihomoTProxy) XML/HTML代码 src-git nikki https://github.com/nikkinikki-org/OpenWrt-nikki.git;main 其他待添加。 2024.8.29编译原版代码出错，本地和云编译都一样问题，经过检查是 SSR+ 源码 feeds/helloworld/gn/Makefile 中PKG_SOURCE从2024-05-13更新到2024-08-13造成的，将三行源代码改成2024-05-13的版本就可以了。据说安装clang，把gcc升级到12或13版本也可以解决，本人未测试，直接apt安装的gcc，版本为 10.2.1 。切换gn版本 gn版本历史 XML/HTML代码 sudo apt-get install gn ninja-build 在openwrt中安装软件出现如下提示：Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest 还有提示libpthread , libstdcpp6的，参考下面命令 XML/HTML代码 opkg update opkg install libgcc1 然后再安装软件就可以正常运行了。 2025.7更新：使用最新代码编译 1、Luci问题 Lean大佬的Luci版本较老，使用luci-theme-bootstrap直接编译会出现登录后不兼容，很多设置有问题，故需要修改feed使用最新代码。在编译固件前修改LEDE源码中feeds.conf.default, 将第二行#src-git luci https://github.com/coolsnowwolf/luci的注释符号"#"删除, 再将第三行的src-git luci https://github.com/coolsnowwolf/luci的前面插入注释符号"#"; 也就是需要将: XML/HTML代码 #src-git luci https://github.com/coolsnowwolf/luci src-git luci https://github.com/coolsnowwolf/luci.git;openwrt-23.05 更改为: src-git luci https://github.com/coolsnowwolf/luci #src-git luci https://github.com/coolsnowwolf/luci.git;openwrt-23.05 或者在LEDE源码路径下,使用以下命令直接更改LuCI源: XML/HTML代码 sed -i '/^#src-git luci https:\/\/github.com\/coolsnowwolf\/luci$/s/^#//' feeds.conf.default && sed -i '/^src-git luci https:\/\/github.com\/coolsnowwolf\/luci\.git;openwrt-23\.05$/s/^/#/' feeds.conf.default 2、设置boot分区大小，去除生成固件时候错误提示修改以下文件 XML/HTML代码 PADDING="1" SIGNATURE="" \ $(if $(filter $(1),efi),GUID="") /gen_image_generic.sh \ $@ \ $@.boot \ \ 256 endef 将256替换成1024，修改boot分区大小跳过错误提示。 Docker编译 Dockerhub：https://hub.docker.com/r/10467106/openwrtenv-sshd 在本地建立一个挂载目录，编译过程中产生的所有文件 (包括但不限于源码文件，中间文件，软件包，编译完成后的镜像文件) 都会被存放到这里： XML/HTML代码 mkdir ~/workspace 或者一次执行 XML/HTML代码 mkdir -p ~/workspace && chmod 777 ~/workspace 拉取本项目镜像，使用镜像建立容器： XML/HTML代码 docker run -itd --privileged=true --restart=always -p 2222:22 -v ~/workspace:/home/admin/workspace --name openwrtenv 10467106/openwrtenv-sshd:22.04 简化 docker run -itd -p 2222:22 -v ~/workspace:/home/admin/workspace --name openwrtenv 10467106/openwrtenv-sshd:22.04 ssh登陆端口2222 默认用户名admin默认密码admin 因为镜像稍微老点，可以启动后update更新一下，顺便golang clang之类自己需要的组件安装上。如果是NAS上，注意共享目录路径和权限需要修改。其实任意一个ubuntu或者debian镜像都可以按照官方的说明编译，不过这个已经配置好了需要组件，现成的编译环境，有洁癖的可以自己使用官方镜像或者支持ssh的镜像，自己手动编译，没任何区别。注意最新的lucky和lean的luci有兼容性问题，可以使用下面的源。 XML/HTML代码 src-git lucky https://github.com/sirpdboy/luci-app-lucky.git 此版本完美兼容，建议使用此源。

立即登陆发表评论

返回日志列表
返回主页