本次编译环境是通过Vmware 虚拟 Ubuntu 20.04版本安装的编译环境。
一. 安装Ubuntu
a) 虚拟机需要能上外网
b) 内存 4G以上(内存小容易卡死并出现异常)
c) 磁盘50G以上(编译不同类型的设备预计占用5-8G磁盘空间)
二. 安装依赖包
a) 打开终端,逐一输入安装:
sudo -sH
apt-get update
apt-get install antlr3
apt-get install asciidoc
apt-get install autoconf
apt-get install autoconf
apt-get install automake
apt-get install autopoint
apt-get install binutils
apt-get install bison
apt-get install build-essential
apt-get install bzip2
apt-get install curl
apt-get install device-tree-compiler
apt-get install flex
apt-get install g++
apt-get install g++-multilib
apt-get install gawk
apt-get install gcc
apt-get install gcc-multilib
apt-get install gettext
apt-get install git
apt-get install git-core
apt-get install gperf
apt-get install lib32gcc1
apt-get install libc6-dev-i386
apt-get install libelf-dev
apt-get install libglib2.0-dev
apt-get install libncurses5-dev
apt-get install libssl-dev
apt-get install libtool
apt-get install libz-dev
apt-get install make
apt-get install msmtp
apt-get install ninja-build
apt-get install p7zip
apt-get install p7zip-full
apt-get install patch
apt-get install python2.7
apt-get install python3.5
apt-get install qemu-utils
apt-get install subversion
apt-get install texinfo
apt-get install uglifyjs
apt-get install unzip
apt-get install upx
apt-get install xmlto
apt-get install zlib1g-dev
exit
三. 下载源代码
mkdir openwrt
cd openwrt
git clone -b 19.07 --single-branch https://github.com/Lienol/openwrt src
cd src
说明:
19.07 是分支版本,需要到Github上查看有哪些分支,具体要编译哪个版本;
src 是下载到的本地目录
四. 加入依赖包
修改feeds.conf.default 尾部增加
src-git kenzo https://github.com/kenzok8/openwrt-packages
五. 安装依赖包
./scripts/feeds clean
./scripts/feeds update -a
./scripts/feeds install -a
六. 配置
make menuconfig
a) 菜单使用简介:
上下方向键选择菜单项;
左右方向键选择底部功能按钮
Select 选择进入菜单
Exit 返回上级菜单,如果已经是顶层菜单则退出
Save 保存,注意默认生效配置 .config 如果要备份配置可以单独命名,需要时Load进来,但是系统只会使用.config进行编译。
Load 可以将Save的配置加载进来
b) 官网查询路由器参数
https://openwrt.org/toh/start
Brand 路由器品牌
Model 路由器型号
Versions 路由器的版本号,如:v1,v2 具体看路由器的型号
Supported Current Release 设备支持的代码版本
Device Page 介绍安装方式的页面,编译成功后安装时参考
Device Techdata 路由器技术参数(这里主要是看这里)
可以在顶部文本框中输入路由器型号来查询
具体技术参数页面
Target 路由器CPU架构
Subtarget:子类(不同版本的源码分类不一样,实际要看下一个选项)
WLAN Hardware:网卡芯片 如果编译安装后发现没后Wifi
需要注意这里了。去检查配置是否有异常。实在不行可以去下载并安装官方的编译版本,看一下网卡驱动安装的版本及型号。
Target System 对应 Target
Subtarget 对应 Subtarget 因为文档与源代码版本不一定一致会导致这里经常不一样
Target Profile 路由器的型号(必须与路由器型号一致,如果列表中没好有说明Target或Subtarget 选择错误)
如果编译X86镜像在Vmware虚拟机中使用 需要选择Target Image中勾选 Build Vmware image file (VMDK)
c) 其他配置
i. LuCI 应用相关配置
ii. LuCI->Collections-> 选择HTTPS SSL支持方式(也可以不用)
iii. LuCI->Applications 选择需要安装的服务
1. 根据个人需求选择安装
2. 如果想安装的应用列表中不存在,请在第四步中引入其他第三方插件源码;
3. 第一次编译尽量少选应用,编译通过后再增加应用,增加的应用越多编译出错的概率越大
iv. LuCI->Themes 主题
选择自己喜欢的主题风格,默认的一定要选上,一但后续配置的主题出现问题无法进入管理界面,可以通过Reset路由器还原初始模式。
v. U盘挂载及分享
Kernel Module\USB\kmod-usb-core
Kernel Module\USB\kmod-usb2
Kernel Module\USB\kmod-usb-ohci
Kernel Module\USB\kmod-usb-storage
Kernel Module\File System\kmod-fs-ext3
Kernel Module\File System\kmod-fs-vfat
Utillties\ntfs-3g
Utillties\mount-utils
Base System\block-mount
LuCI->Applications\luci-app-samba
七. 编译
a) Make -j 5 V=s
-j 并发数量不是越大越好,看自己电脑的配置。数量很高容易把电脑卡死。
b) 编译完成生成的文件在bin\targets中,如下图:
Factory.img 是普通的刷机镜像文件;
Sysupgrade.bin 是Openwrt固件更新的文件;
Kernel.bin 是通过命令手动写入Rom时使用的文件(很少用);
Packages 中包含了本次打包中同时打包的组件;
八. 重新编译
a) 如果更换路由器型号,需要清理缓存
Rm -rf tem
Rm -rt .config
如果编译还是无故异常可以清理feeds
./scripts/feeds clean
./scripts/feeds update -a
./scripts/feeds install -a
九. 安装部署
不同的路由器安装方式不太一样,具体可以参考官方说明(Device Page)
如:
十. 其他常见问题
a) 编译过程中,屏幕卡死不动。
可能是内存不足建议增加到6-8G
线程数太多导致卡死:
Make -j 99 V=s 99换成5或1再进行编译
b) 提示具体模块编译失败
i. 取消指定模块
ii. 先不选具体应用模块先按机型默认配置编译好,再逐步增加应用;
c) 提示缺少依赖
i. 安装具体依赖包
d) 无故报错(之前成功过,后续失败了)
i. 检查磁盘空间,小于400M经常失败;
e) XX文件找不到
i. 检查网络连接,确认是否正常上外网。
原文:https://www.cnblogs.com/moonwebmast/p/14127496.html