Lean的OpenWrt Lede固件编译

服务器选择

安装Ubuntu 20.04系统 我这边选用的是 Vultr 这家服务商的VPS进行搭建的,经过测试完全没有问题。 当然了,在自己的机器上安装虚拟机也是个可行的选项,但是要注意的是!在整个编译过程中,必须保持全程科学上网,否则将有大概率编译失败,所以还是推荐直接用国外地区的VPS进行编译。(选择5美刀的配置就够了,系统选择 Ubuntu 64位) (2020-05-05更新:5美刀的机器内存跟不上,编译到一半会报错,内存溢出,选择10美刀的机器,系统依旧是Ubuntu 20.04 64位)

创建普通用户

编译OpenWRT用root用户可能会出错,所以这边要新建一个普通用户来进行编译

1
2
3
4
5
6
7
8
9
# 创建一个用户名为lede的用户并指定bash为终端
sudo useradd -r -m -s /bin/bash lede

# 给用户lede添加一个密码
sudo passwd lede

# 编辑用户权限
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
1
2
3
4
5
6
7
8
# 在 User privilege specification 加入与root用户相同的权限
# lede ALL=(ALL:ALL) ALL

# 保存并退出vim编辑器
:wq

# 去掉w权限
sudo chmod -w /etc/sudoers

编译固件

1
2
3
# 切换到刚才创建的新用户(输入密码不会显示)并且进入用户根目录
su lede
cd ~

以下源代码来自恩山Lean大佬Github仓库链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 升级软件源
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

# 克隆源码仓库
git clone https://github.com/coolsnowwolf/lede

# 进入目录
cd lede

# 更新、安装feed(源?)
./scripts/feeds update -a
./scripts/feeds install -a

# 进入菜单开始配置系统固件
make menuconfig

进入菜单开始配置系统固件 (空格选定,上下左右控制方向)

  • Network > Firewall > iptables
  • Base system > dnsmasq-full
  • Utilities > coreutils
  • Utilities > coreutils > coreutils-nohup
  • Utilities > Shells > bash
  • Network > File Transfer > curl
  • Base system > ca-certificates
  • Network > ipset
  • Network > Routing and Redirection > ip-full
  • Network/Firewall/iptables-mod-tproxy
  • Network/Firewall/iptables-mod-extra
  • Libraries/libcap
  • Libraries/libcap-bin
  • Languages/Ruby/ruby
  • Languages/Ruby/ruby-yaml
  • Utilities/Compression/unzip
  • Kernel modules / Network Support / kmod-tun
  • LuCI/Modules/luci-compat(Luci-19.07)
  • Network > Firewall > ip6tables > ip6tables-mod-nat(ipv6)
  • Kernel modules / Network Support / kmod-inet-diag(PROCESS-NAME)
  • Kernel modules > Netfilter Extensions > kmod-nft-tproxy
  • Administration/netdata
  • LuCI->Theme->Luci-theme-argon

完成之后可以Exit保存退出

1
2
3
4
5
6
7
8
# 启用一个screen开始编译,这样可以关闭SSH窗口,下一次登录时用`screen -r`返回之前的对话
screen -S compile

# 下载dl库(国内请尽量全局科学上网)
make -j8 download V=s

# 开始编译你要的固件了(-j1 后面是线程数。第一次编译推荐用单线程)
make -j1 V=s

最后在 lede/bin/targets/x86/64 目录下能够找到 img 的固件文件,编译成功

FAQ

如何显示 酸酸乳+

在lede目录下修改feeds.conf.default

把其中#src-git helloworld https://github.com/fw876/helloworld代码前的注释符号就可以了

出现 squashfs: Unknown paraMeter ‘discard’

Target Images 中选择 Build GRUB images (Linux x86 or x86_64 host only) (NEW)
使用不含EFI的ISO文件