使用ubuntu编译LEDE

使用ubuntu编译LEDE

知名的openWrt分支
Lean的LEDE: https://github.com/coolsnowwolf/lede
lienol项目: https://github.com/Lienol/openwrt
immortalwrt:https://github.com/immortalwrt/immortalwrt
siwind项目: https://github.com/siwind/openwrt

官方版本:https://github.com/openwrt/openwrt

1 环境配置

1.1 安装系统

使用的是ubuntu 20.04 LTS,64位系统。

1.2 配置用户

编译openWrt不能使用root用户,否则报错。使用下面命令新建一个newuser.

1
2
3
adduser newuser
usermod -a -G sudo newuser
su newuser

1.3 执行下面命令以安装环境依赖

1
2
3
sudo apt-get update

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

2 开始编译

2.1 克隆源码

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

2.2 配置软件包源

默认的软件包源常常无法满足我们的需求,所以添加一些三方软件包源也是有必要的。

  • 方法1:编辑feeds.conf.default
    1
    2
    3
    4
    5
    6
    7
    cd lede
    vi feeds.conf.default
    添加
    src-git NueXini_Packages https://github.com/NueXini/NueXini_Packages.git
    src-git helloworld https://github.com/fw876/helloworld
    src-git small https://github.com/kenzok8/small
    src-git kenzo https://github.com/kenzok8/openwrt-packages
  • 方法2:使用命令写入feeds.conf.default文件
    1
    2
    3
    4
    5
    cd lede
    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 helloworld https://github.com/fw876/helloworld' feeds.conf.default
    sed -i '$a src-git NueXini_Packages https://github.com/NueXini/NueXini_Packages.git' feeds.conf.default

除去添加源的方式还可以编译完系统后,在openwrt中通过opkg方式安装特定软件包。

2.3 更新软件包

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

第一次install的时候会有一些警告,第二次执行就没了。

2.4 修改默认登录IP

实体文件在lede\package\base-files\files\bin\config_generate在150行

1
lan) ipad=${ipaddr:-"192.168.1.1"} ;;

2.5 选择编译配置

1
make menuconfig

具体使用方法 搜索“软路由Openwrt make menuconfig编译配置界面详解”.
退出保存文件就在根目录,名为.config

2.6 下载支持库

这里需要全局代理,这里容易出现下载不完整导致之后编译错误

1
make -j8 download

2.7 编译

首次编译建议用单线程,利于排错。

1
make -j1 V=s

编译成功后镜像文件输出在lede/bin/targets下对应的目录

3. 二次编译

3.1 添加插件编译

这里以添加adguardhome为例。

1
2
3
4
5
6
7
cd ~/lede/package/lean/【这里的名字可以随意】
git clone https://github.com/rufengsuixing/luci-app-adguardhome.git
cd ~/lede
make menuconfig
make package/lean/luci-app-adguardhome/compile V=s
make download -j8
make V=s -j$(nproc)

3.2 更新编译

功能无需改动,单纯更新时使用下列命令

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

3.3 重新编译

如果编译失败想要从头再来,使用下列命令

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

或者干脆删除所有彻底重来

1
2
3
cd ~/
rm -rf lede
git clone https://……【就回到了第一步】

4 特殊技巧

4.1 DIY脚本

在根目录下的diy-part1.sh,会在下列命令前执行

1
./scripts/feeds update -a

通过修改此文件可以实现增加软件包源,例如在里面添加命令

1
echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default

而diy-part2.sh则是在install后执行,可以进行一个系统配置,例如修改登录IP

1
sed -i 's/192.168.1.1/192.168.50.5/g' package/base-files/files/bin/config_generate

4.2 在路由内使用opkg命令

1
2
3
4
5
opkg list_installed   #列出所有已安装的软件包
opkg install 包名 #安装指定软件包
opkg remove 包名 #移除指定软件包
opkg remove dnsmasq && opkg install dnsmasq-full
dnsmasq需要同时进行移除和安装。

5.软件包源码库推荐

1
2
3
4
5
6
	git clone https://github.com/pymumu/luci-app-smartdns.git
git clone https://github.com/pymumu/openwrt-smartdns.git
git clone https://github.com/pymumu/smartdns.git

git clone --branch lede https://github.com/pymumu/luci-app-smartdns.git package/
# smartdns 库有lede单独的版本分支。
1
https://github.com/kiddin9
1
2
3
src-git kenzok8 https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
# kenzok8的源码库很全面,不过最近编译总报错。
1
2
src-git helloworld https://github.com/fw876/helloworld
无需解释。
1
2
src-git NueXini_Packages https://github.com/NueXini/NueXini_Packages.git
# 包含很多主题。
1
2
src-git autoipsetadder https://github.com/rufengsuixing/luci-app-autoipsetadder
# 自动IP列表很有用。
1
2
3
4
5
6
7
8
9
src-git jerryk https://github.com/jerrykuku/openwrt-package
# 建议使用Lean源进行编译。这个Branch的argon不适合官方版本。 包含了 如下应用:
Argon 主题
Argon 主题配置应用
vssr(Helloworld)上网冲浪应用
jd-dailybonus 京豆签到插件
go-aliyundrive-webdav 阿里云盘webdav的golang实现
lua-maxminddb lua版本的maxminddb ip库解析器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
https://github.com/coolsnowwolf/lede
https://github.com/kenzok8/openwrt-packages.git
https://github.com/jerrykuku/openwrt-package.git
https://github.com/sirpdboy/sirpdboy-package.git
https://github.com/destan19/OpenAppFilter.git
https://github.com/fw876/helloworld.git
https://github.com/frainzy1477/luci-app-clash.git
https://github.com/xiaorouji/openwrt-passwall.git
https://github.com/rufengsuixing/luci-app-adguardhome.git
https://github.com/AlexZhuo/luci-app-bandwidthd.git
https://github.com/esirplayground/luci-app-poweroff.git
https://github.com/tty228/luci-app-serverchan.git
https://github.com/honwen/luci-app-aliddns.git
https://github.com/openwrt-develop/luci-theme-atmaterial.git
https://github.com/lisaac/luci-app-dockerman.git

使用ubuntu编译LEDE
http://anximin.github.io/2023/07/18/net_OpenWrt_LEDE/
作者
Sylar
发布于
2023年7月18日
许可协议