OpenWRT固件编译

1、编译环境:Ubuntu16.04

2、源码:source-openwrt-18.06

通过浏览器快速下载源码地址:

https://codeload.github.com/lede-project/source/zip/openwrt-18.06

通过克隆 Open­Wrt 源码:

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

命令末尾加了openwrt是指克隆代码到openwrt目录,目的是为了规范化,因为有时并不是编译这个的源码。

3、配置编译环境 Ubuntu16.04 的源:

参考:https://blog.csdn.net/liangontheway/article/details/103509635

注意:源 要与编译环境一致,比如,编译环境Ubuntu16.04,使用Ubuntu16.04的源。

对主机(host)更换阿里源

1、备份

系统本身自带的sources.list肯定要保留一份,不然以后出啥问题想恢复默认都没办法。

Ctr+Alt+T 打开Ubuntu系统的命令执行窗口

 

sudo cp /etc/apt/sources.list /etc/apt/sources_origin.list

 

执行完毕后可以到上面指定的目录下确认备份是否生成。

 

2. 更换源

据说阿里源是Ubuntu官方指定的国内镜像源,不知真假,不过我用的是阿里源,感觉还不错,其他源没试过。

 

sudo gedit /etc/apt/sources.list

 

用此代码打开文档后,删除所有内容,然后将下面的代码复制到文档当中,保存,关闭文档。

 

deb http://mirrors.aliyun.com/ubuntu/ xenial main

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

 

deb http://mirrors.aliyun.com/ubuntu/ xenial universe

deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

 

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main

deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

 

3、更新

sudo apt-get update

国内源更新完毕

 

 

4、使用非root账户 更新软件列表

sudo apt-get update

sudo apt-get upgrade

 

5、安装基础环境

 

sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev

 

6、进入源码目录

cd source-openwrt-18.06

 

7、更新软件包 即 feeds插件

(feeds 是扩展的软件包,独立于 Open­Wrt 源码之外,所以需要单独进行拉取和更新。)

拉取 feeds 源码:

./scripts/feeds update -a

安装 feeds 中的软件包:

./scripts/feeds install -a

 

8、测试编译环境(检测编译环境并生成默认的编译配置文件):

make defconfig

 

9、配置固件菜单(调整 Open­Wrt 系统组件):

make menuconfig

 

 

选择Soc、机型,<*>,表示将软件包编译进固件,,表示软件包会被编译,但不会编译进固件。

添选择选择CPU型号、路由器型号,<*>,表示将软件包编译进固件,,表示软件包会被编译,但不会编译进固件。

此处以斐讯K2 PSG1218为例:

Target System --> MediaTek Ralik MIPS

Subtarget --> MT7620 based boards

Target Images --> Phicomm PSG1218

 

添加luci网页界面

LuCI --> Collections -->luci

 

添加简体中文

LuCI --> Modules --> Translations -->Chinese(zh-cn)

 

添加网页界面主题

LuCI --> Themes -->luci-theme-openwrt (喜欢哪个主题就选择那个主题)

 

设置完毕,保存,最后选择Exit。

 

8.预先下载dl库,可以避免下载造成的编译失败。

通过命令:

make download -j8 V=s

进行下载dl库

为了加快下载进程,通过浏览器搜索下载openwrt18.06相对应的dl 库,将dl 文件夹连同里面的文件放到source-openwrt18.06中;

为了防止遗漏,再次通过命令:

make download V=s

再次检查下载

在此命令下载过程中如果遇到下载缓慢的文件,通过Ctrl +C暂停进程,

通过将此事终端显示的链接复制到 迅雷 或者 浏览器单独下载;

然后将 dl 文件夹下面的 相应的正在下载而又没完成的的文件删除掉,将单独下载下来的完整的文件放到 dl文件夹下;

然后 从新 make download V=s ,下载进程就会跳过这个文件继续下载其他短缺的文件;

(-j8是指使用8个线程下载,理论上是数字越大下载越快,但似乎有个上限,实测5线程以上其实速度相差不了多少,在网络好的情况下,基本在5分钟以内能下载完)。

 

检查文件完整性

find dl -size -1024c -exec ls -l {} \;

此命令可以列出下载不完整的文件(根据我多次编译的经验得出小于1k的文件属于下载不完整),如果存在这样的文件可以使用find dl -size -1024c -exec rm -f {} \;命令将它们删除,然后重新执行make download下载并反复检查,确认所有文件完整可大大提高编译成功率,避免浪费时间。

 

9.文件下载完毕,开始编译固件。

 

make V=99 -j2

 

# -j参数设定全速编译 (-j参数可能会导致系统卡死,不建议老爷机使用)

----编译进行----

再次等待很长时间,第一次时间较长。

 

-j1:使用单线程编译。新手推荐单线程编译,一是因为玄学问题可能成功率高,二是方便查看错误日志,多线程的错误日志是交织在一起的,不方便排错。V=s:输出详细日志,用于编译失败时找出错误。

 

 

10.生成的bin文件路径:bin/targets/系列名/

:~/openwrt/openwrt-18.06/source-openwrt-18.06/bin/targets/ramips/mt76x8$

11.编译好的固件名格式为 lede-xxxx-generic-xxx-squashfs-sysupgrade.bin 将bin文件复制到U盘或者电脑桌面,在breed下刷入固件,浏览器登录192.168.1.1,LEDE的管理界面。

 

12. 如果再次编译,需要先删除 build_dir 目录下的设置文件。或者执行命令 make clean

 

经过3个多小时的编译过程,终成正果:

uploading.4e448015.gif正在上传…重新上传取消

 

uploading.4e448015.gif正在上传…重新上传取消

tatic/material         option resourcebase /luci-stati

你可能感兴趣的:(OpenWRT固件编译)