OpenWrt可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt三类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
本文为捣鼓以Lean大佬的源码定制编译专属于自己的Openwrt固件。
需要准备的工具:
- 服务器系统:64位Ubuntu系统
- 系统环境
系统要求:Ubuntu 20.04
CPU:1 核即可,因为编译时只用 1 线程
内存:4G
硬盘:建议直接 50G或更大,防止因临时存储不足导致编译失败
配置并安装环境 - 首先要注意:
不要用 root 用户 git 和编译!!!
国内用户编译前最好准备好梯子 - 更改包源地址
vi /etc/apt/sources.list
国内推荐使用阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
- 更新源
sudo apt-get update
sudo apt-get upgrade
- 安装所需相关包
apt 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
下载Lean大OpenWrt源码
git clone https://github.com/coolsnowwolf/lede #下载源代码
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
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
ESC :wq Enter #编辑完成后vim的保存并退出命令
- 更新及安装软件源
cd /home/kls/lede
./scripts/feeds update -a && ./scripts/feeds install -a
- 固件配置
make menuconfig
基本则需配置
- 其他参数配置支持 iPv6:
1、Extra packages —> ipv6helper (选定这个后下面几项自动选择了)
Network —> odhcp6c
Network —> odhcpd-ipv6only
LuCI —> Protocols —> luci-proto-ipv6
LuCI —> Protocols —> luci-proto-ppp
2、打开适用于VMware的VM Tools
Utilities —> open-vm-tools #打开适用于VMware的VM Tools
Utilities —> open-vm-tools-fuse #打开适用于VMware的VM Tools
3、更改LAN口的默认IP地址
cd lede
vi package/base-files/files/bin/config_generate
##大概在99行找到我们默认的原IP地址(192.168.1.1),按“i”把对应的IP更改即可然后按shift+: 输入wq回车保存退出
4、编译丰富插件时,建议修改下面两项默认大小,留足插件空间。( x86/64 )!!!
Target Images —> (16) Kernel partition size (in MB) #默认是 (16) 建议修改 (256)
Target Images —> (160) Root filesystem partition size (in MB) #默认是 (160) 建议修改 (512)
菜单对照
菜单对照
OpenWrt Configuration【OpenWrt配置】Target System (x86) —> 目标系统(x86)
Subtarget (x86_64) —> 子目标(x86_64)
Target Profile (Generic) —>目标配置文件(通用)
Target Images —> 保存目标镜像的格式
Global build settings —> 全局构建设置
Advanced configuration options (for developers) —- 高级配置选项(适用于开发人员)
Build the OpenWrt Image Builder 构建OpenWrt图像生成器
Build the OpenWrt SDK构建OpenWrt SDK
Package the OpenWrt-based Toolchain打包基于OpenWrt的工具链
Image configuration —>图像配置
Base system —> 基本系统
Administration —> 管理
Boot Loaders —>引导加载程序
Development —> 开发
Extra packages —> 额外包
Firmware —>固件
Fonts —>字体
Kernel modules —> 内核模块
Languages —>语言
Libraries —> 图书馆
LuCI —> LuCI
Mail —>邮件
Multimedia —>多媒体
Network —>网络
Sound —> 声音
Utilities —>实用程序
Xorg —>Xorg
- 首次编译-
./scripts/feeds update -a #更新软件源
./scripts/feeds install -a #安装软件
make menuconfig #固件配置
make download -j8 #下载dl库(国内请尽量全局科学上网)
export FORCE_UNSAFE_CONFIGRE=1 #root账户下需要输入 变量后在执行
输入 make V=s -j1 (-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了
make download -j8
make V=s -j5
root账户下需要输入 变量后在执行 'export FORCE_UNSAFE_CONFIGRE=1'
首次编译时间较长,根据配置和网络决定一般4-8小时不定
编译完成后,固件将被存放在【~/lede/bin/targets/】目录中。
本文编译的是x86软路由固件,故固件存放在【~/lede/bin/targets//x86/64】中。
注:默认登陆IP 192.168.1.1, 密码 password #更改过的请使用更改ip