记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

LEDE源码编译教程

LEDE源码编译教程

Github:https://github.com/coolsnowwolf/lede

Rockchip RK3568 预编译固件发布 Release 下载更新地址 (包括 H68K ):https://github.com/coolsnowwolf/lede/releases/tag/20220716

注意: 

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

编译命令: 

1.首先装好 Linux 系统,推荐 Debian 11 或 Ubuntu LTS(Linux Mint Team 的Linux Mint 21和LMDE 5

2.安装编译依赖

XML/HTML代码
  1. sudo apt update -y
  2. sudo apt full-upgrade -y
  3. sudo apt install -y ack antlr3 aria2 asciidoc autoconf automake autopoint binutils bison build-essential \
  4. bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
  5. git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
  6. libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
  7. mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
  8. rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

3.下载源代码,更新 feeds 并选择配置 

XML/HTML代码
  1. git clone https://github.com/coolsnowwolf/lede
  2. cd lede
  3. ./scripts/feeds update -a && ./scripts/feeds install -a
  4. make menuconfig

4.下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程) 

XML/HTML代码
  1. make download -j8
  2. make V=s -j1

本套代码保证肯定可以编译成功。里面包括了 R22 所有源代码,包括 IPK 的。

5.二次编译

XML/HTML代码
  1. cd lede
  2. git pull
  3. ./scripts/feeds update -a && ./scripts/feeds install -a
  4. make menuconfig
  5. make defconfig
  6. make download -j8
  7. make -j$(($(nproc) + 1)) V=s

如果需要重新配置:

 XML/HTML代码

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

编译完成后输出路径:bin/targets

简单编译命令,只要默认或者修改不是很多,也基本一次成功。

首次编译

XML/HTML代码
  1. git clone https://github.com/coolsnowwolf/lede
  2. cd lede
  3. ./scripts/feeds update -a && ./scripts/feeds install -a
  4. make menuconfig
  5. make -j$(($(nproc) + 1)) V=s

二次编译

XML/HTML代码
  1. cd lede
  2. git pull
  3. ./scripts/feeds update -a && ./scripts/feeds install -a
  4. make menuconfig
  5. make -j$(($(nproc) + 1)) V=s

feeds.conf.default 

XML/HTML代码
  1. src-git helloworld      https://github.com/fw876/helloworld.git;master
  2. src-git passwall        https://github.com/xiaorouji/openwrt-passwall.git;main
  3. src-git passwall2       https://github.com/xiaorouji/openwrt-passwall2.git;main 
  4. src-git passwall_packages   https://github.com/xiaorouji/openwrt-passwall-packages.git;main
  5. src-git OpenClash       https://github.com/vernesong/OpenClash.git;master
  6. src-git homeproxy       https://github.com/immortalwrt/homeproxy.git (不兼容lean的OP,防火墙冲突)

 passwall现在分为package和luci两个分支.

XML/HTML代码
  1. src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main
  2. src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main

 passwall2

XML/HTML代码
  1. src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main
  2. 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代码
  1. export FORCE_UNSAFE_CONFIGURE=1
  2. 或者
  3. export FORCE=1
  4. 或者在编译目录运行
  5. sudo make FORCE_UNSAFE_CONFIGURE=1
注意:lean代码升级到最新后,科学插件SSR+中的trojan和gfwlist模式会失效,还会出现一些奇怪问题,如需老版本lede,可以git切换回去,然后进行设置插件,编译。
XML/HTML代码
  1. #查看分支
  2. git tag
  3. #切换到20221001分支
  4. git checkout 20221001
切换回最新主分支:git checkout master
在线编译网站:https://supes.top/                       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代码
  1. # iStoreOS
  2. https://fw.koolcenter.com/iStoreOS/x86_64/
  3. # DHDAXCW(骷髅头)
  4. https://github.com/DHDAXCW/OpenWRT_x86_x64
  5. # SuLingGG
  6. https://openwrt.cc/releases/targets/x86/64/
  7. # coolsnowwolf
  8. https://github.com/coolsnowwolf/lede
  9. # immortalwrt
  10. https://github.com/immortalwrt/immortalwrt
编译教程:
安装编译必须组件(系统要求同LEDE)
XML/HTML代码
  1. sudo apt update -y
  2. sudo apt full-upgrade -y
  3. sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
  4.   bzip2 ccache cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib g++-multilib \
  5.   git gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
  6.   libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
  7.   mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \
  8.   python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
  9.   vim wget xmlto xxd zlib1g-dev
或者一键安装脚本:
XML/HTML代码
  1. sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh)'

首次编译

XML/HTML代码
  1. git clone -b master --single-branch https://github.com/immortalwrt/immortalwrt
  2. cd immortalwrt
  3. ./scripts/feeds update -a && ./scripts/feeds install -a
  4. make menuconfig
  5. make -j$(($(nproc) + 1)) V=s

git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt

分支有:master  openwrt-21.02   openwrt-18.06-k5.4   openwrt-18.06

二次编译
XML/HTML代码
  1. cd immortalwrt
  2. git pull
  3. ./scripts/feeds update -a && ./scripts/feeds install -a
  4. make menuconfig
  5. make -j$(($(nproc) + 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 (Win­dows Sub­sys­tem for Linux) 中编译Open­Wrt在执行./scripts/feeds update -a 过程中会遇到如下错误。
Build dependency: OpenWrt can only be built on a case-sensitive filesystem
# OpenWrt只能构建在区分大小写的文件系统上
导致的原因是 Win­dows 文件系统对大小写不敏感。
从 Win­dows 10 in­sider build 17093 版本开始,新增了一种区分文件大小写的新方法:单个目录区分大小写。它可以良好的在 WSL 中和其他 Win­dows应用程序中使用。这个功能仅修改指定目录本身的属性,故不会对系统有任何的影响。
以管理员权限运行 cmd 输入下面这个命令就可以开启某个目录区分大小写。
fsutil.exe file setCaseSensitiveInfo <path> enable
执行成功后会反馈一条信息
需要注意的是,这个操作不会对此目录中已有的文件生效,只有新写入的文件才会继承这个属性。所以对于目录中已有的文件,需要把文件剪切到其它目录,然后再复制回来。(同盘符下的剪切不是写入,所以后面的操作是复制。)
如果不理解上面这段话的含义,直接删除此目录中所有文件,重新克隆源码,再继续操作。另外,因为编译需要大量空间,默认的C盘可能不够,最好是用lxrunoffline命令将编译的Linux系统迁移到其他分区,以免造成空间不够的情况。也可以安装wsl时候就直接安装在其他分区。教程1 教程2 教程3 教程4 教程5
ipv6 支持
XML/HTML代码
  1. Lean’Openwrt
  2. Extra packages --> ipv6helper
  3. NetWork --> Firewall --> ip6tables 下的俩个全选
  4. 原版 22.03 固件需要启用这 4 个 odhcp6c odhcpd ip6tables luci-proto-ipv6
  5. odhcpd 可替换成 odhcpd6
具体设置参考官方说明。
更新:
经测试,版本切换到 R23.7.7 版本,一切正常
 
XML/HTML代码
  1. git clone https://github.com/coolsnowwolf/lede.git
  2. cd lede
  3. git reset --hard b201c29fa2749a6265ebf0b80ac3a94ad34ba6e4
  4. export FORCE_UNSAFE_CONFIGURE=1
  5. ./scripts/feeds update -a && ./scripts/feeds install -a
  6. make menuconfig
  7. make -j$(($(nproc) + 1)) V=s
feeds.conf.default
XML/HTML代码
  1. src-git helloworld          https://github.com/fw876/helloworld.git;master
  2. src-git passwall            https://github.com/xiaorouji/openwrt-passwall.git;main
  3. src-git passwall_packages   https://github.com/xiaorouji/openwrt-passwall-packages.git;main
  4. src-git OpenClash           https://github.com/vernesong/OpenClash.git;master
经过上面编译的科学插件全都正常,后面版本会出现科学问题,比如SSR+中的trojan不能正常使用,或者网页打不开等。在旁路由下面出问题比较多,建议 R23.7.7 或者更老版本系统可能更好点,插件可以正常更新。
2023.12 ssr+编译出现 libopenssl-legacy 找不到的错误提示,可以通过以下命令屏蔽
XML/HTML代码
  1. sed -i 's/ +libopenssl-legacy//g' feeds/helloworld/shadowsocksr-libev/Makefile
再进行编译即可,libopenssl-legacy是openwrt 23 with openssl 3.0 用的,可以屏蔽不用。
可以直接下载也可以fork自己Github账号修改后定制自己的OP固件。
修改openclash源代码的配置文件
XML/HTML代码
  1. option github_address_mod '0'  
  2. 改成  
  3. 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 大佬刚刚修复,无用的研究和知识又多了一点。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):