欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ubuntu compile :MT7628-os(openwrt)

程序员文章站 2022-06-11 17:02:56
...

版权声明:本文为CSDN博主「qq_38000429」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38000429/article/details/97816792

好久没更新博客啦。最近在搞一个项目,使用的是MT7628开发板,用于实现4G无线路由、VPN等各种功能,本文主要记录编译MT7628固件的过程,讲述遇到的各种问题以及解决方法。

首先介绍一下开发板情况,型号TR7628NADM,烧录的是openwrt提供的固件,openwrt是啥?百度百科一下,这是一个嵌入式linux发行版,总之功能很强大啦,现在主流的路由器里大多都是这个固件,特点:简单&好用。

Ubuntu采用的是14.04版本,虚拟机当然是VM的啦,版本12.5.2 build-4638234,这个一般无所谓,习惯哪个就用哪个。

接下来开始重点。。。

本人从供应商那里拿到了MTK基于OpenWrt系统的开发包,开发包名称这里也给一下mtksdk-openwrt-3.10.14-20150311-d021c937.tar.bz2。将这个包拷贝到Ubuntu里(我直接放到了/home/user,user是管理员账户),使用tar解压,获得openwrt-sdk文件夹,这个文件夹就是我们编译MT7628固件的根文件了。

以下是编译过程:

第一步

#su

输入密码,进root。

#sudo apt-get install git g++ make libncurses5-dev subversion libssl-dev gawk

libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g-dev openjdk-8-jdk

build-essential ccache gettext xsltproc

把这些依赖的包先装一下,这里遇到了第一个问题,就是openjdk-8-jdk这个包会安装失败,这种情况在15版本以下的Ubuntu中会出现,我在网上查了一下,大概意思是不建议15版本以下Ubuntu用户安装这个包,但是编译源码需要怎么办呢?方法如下:

#sudo add-apt-repository ppa:openjdk-r/ppa

#sudo apt-get update

#sudo apt-get install openjdk-8-jdk

#sudo update-alternatives --config java

#sudo update-alternatives --config javac

#java -version

这里参考了一位高人,贴网址,想了解更多自己去看吧。https://www.yangshengliang.com/biancheng-kaifa/java-jiancheng/206.html

现在所有编译前工作都已经完成了,开始搞它。

第二步

进入编译的根目录。

#cd /home/user/openwrt-sdk

然后分别运行下面两行指令,这是必须步骤,必须步骤,必须步骤,重要事情说三遍!这两行指令是从git获取最新的安装包,保持你编译的固件是最新状态。

#./scripts/feeds update -a

#./scripts/feeds install -a

结束后就可以开始配置啦。

#make menuconfig

问题出现了,openwrt官方不给用root用户编译固件!这什么玩意?找了一大堆方法,以下最简单:

#vi include/prereq-build.mk

干掉这行:[ “$$(shell whoami)” != “root” ](直接在前面加#号注释掉),保存退出,再次运行make menuconfig,警告木有了,可以继续了。

第三步

开始配置,主要关注这几个地方,直接放图了。
Ubuntu compile :MT7628-os(openwrt)
MTK Properties-> Drivers
Ubuntu compile :MT7628-os(openwrt)
enter键进入,继续配置kmod-mt7628
Ubuntu compile :MT7628-os(openwrt)
第一个进去,选项如下
Ubuntu compile :MT7628-os(openwrt)
回上一页,进第二个,选项如下:
Ubuntu compile :MT7628-os(openwrt)
再到LuCI(MTK) -> 1. Collections,配置如下:Ubuntu compile :MT7628-os(openwrt)
这个选项应该是支持板子烧入固件后可通过网页配置一些东西。

配置完成啦,下面开始make。

第四步

#make V=s -j 4

其实用make V=s也是可以的,加-j 4的目的是不是会快一点?后面的2对应你机器的核心数,我给ubuntu配置了4核,所以我这里写的是4。

要想编译一次就能成功?未免太天真了吧。果不其然,各种问题频繁出现。因为编译过程中要下载很多包,所以ubuntu没网?对不起,肯定失败的。但也不要怕,一般来说出现错误了,就用下面的命令继续编,不用管它,因为很多错误都是包未下载完全造成的。

#make V=s

一直到真的编译不过去了,本人就遇到了这个包一直下载不了—util-linux-2.24.1.tar.xz,404错误!很好办,用迅雷或者百度网盘,在ubuntu的输出中找到这个包的地址,复制-下载-拷贝到/home/user/openwrt-sdk/dl,搞定。找不到地址自己去网上搜这个包,下载-拷贝到dl,然后继续make V=s。

一般来说多次尝试就能成功,如下就是编译成功了。Ubuntu compile :MT7628-os(openwrt)

第五步

为什么会有第五步?因为有些人编译时候图快,将别人编译好的dl文件夹拷贝到自己的根目录下,这个dl文件夹装的是编译过程中下载的安装包,正常来说拷贝过来后很多包就不用下载了,省时省力。但是,编译时候会出现如下这种错误:

cat: openwrt-sdk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/base-files/ipkg-ramips_24kec/base-files/etc/sdk.version

/home/user/openwrt-sdk/bin/ramips/packages/base/base-files_156-unknown_ramips_24kec.ipk

ERROR 2******

这种问题网上有人解决了,请先看原贴,然后用下面的方法解决:https://blog.csdn.net/shanruo/article/details/81610039

文章解释很清楚了,就是缺少几个sdk.version的文件。没有怎么办?

#vi (路径)/sdk.version

内容就写V1.0.0,保存退出!

方法简单,但是亲测很有效,然后继续编译。

#make V=s

成功了。。。

相关标签: 库移植