首页 > 技术文章 > 为Linksys WRT1900ACS编译OpenWrt

moonwebmast 2020-12-13 00:48 原文

本次编译环境是通过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

UntitledImage

Brand 路由器品牌

Model 路由器型号

Versions 路由器的版本号,如:v1,v2 具体看路由器的型号

Supported Current Release 设备支持的代码版本

Device Page 介绍安装方式的页面,编译成功后安装时参考

Device Techdata  路由器技术参数(这里主要是看这里)

可以在顶部文本框中输入路由器型号来查询

 

具体技术参数页面

UntitledImage

Target 路由器CPU架构

Subtarget:子类(不同版本的源码分类不一样,实际要看下一个选项)

WLAN Hardware:网卡芯片 如果编译安装后发现没后Wifi
需要注意这里了。去检查配置是否有异常。实在不行可以去下载并安装官方的编译版本,看一下网卡驱动安装的版本及型号。

UntitledImage

Target System 对应 Target

Subtarget 对应 Subtarget 因为文档与源代码版本不一定一致会导致这里经常不一样

Target Profile 路由器的型号(必须与路由器型号一致,如果列表中没好有说明Target或Subtarget 选择错误)

如果编译X86镜像在Vmware虚拟机中使用 需要选择Target Image中勾选 Build Vmware image file (VMDK)

UntitledImage

c)     其他配置

                  
i.          LuCI 应用相关配置

UntitledImage

                
ii.          LuCI->Collections-> 选择HTTPS SSL支持方式(也可以不用)

UntitledImage

               
iii.          LuCI->Applications 选择需要安装的服务

1.     根据个人需求选择安装

2.     如果想安装的应用列表中不存在,请在第四步中引入其他第三方插件源码;

3.     第一次编译尽量少选应用,编译通过后再增加应用,增加的应用越多编译出错的概率越大

               
iv.          LuCI->Themes 主题

UntitledImage

选择自己喜欢的主题风格,默认的一定要选上,一但后续配置的主题出现问题无法进入管理界面,可以通过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
         

 

七.        编译

Make -j 5 V=s  

 

-j 并发数量不是越大越好,看自己电脑的配置。数量很高容易把电脑卡死。

b)     编译完成生成的文件在bin\targets中,如下图:

UntitledImage

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.          检查网络连接,确认是否正常上外网。

推荐阅读