Openwrt 交叉编译(Crosscompile)及使用SDK生成ipk安装包

Openwrt交叉编译

首先我先介绍下什么是交叉编译:

交叉编译,简单的说就是,就是在一个平台上生成另一个平台上的可执行文件,举个例子,我我用我的电脑(x86_64平台)编译出路由器(mips-AR71XX)上可以执行的二进制文件,要进行交叉编译首先就要有对应平台的编译器。

Openwrt的交叉编译并不复杂。

第一步,你需要得到toolchain(工具链),我个人理解这个就相当于编译器

如何得到toolchian呢?有两种方法

1.到openwrt下载(要注意平台,比如我的路由器是tp-wr703n,所对应的平台就是AR71XX,就要到http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/下载  OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2

2.自己编译,在编译固件时可以看到有编译toolchain的选项(如果不知道我在说什么的话,先学习下openwrt编译)2015-03-17 16:45:11屏幕截图得到工具链后将其解压

第二步,设置环境变量

这里只有两个变量需要设置

1.将工具链中的bin文件夹加入PATH

2.添加一个STAGING_DIR  变量,将其指向放toolchain的文件夹,比如我把toolchain解压到了/home/yj/openwrt/mips-linux-gcc/下,就把STAGING_DIR 的值赋为/home/yj/openwrt/mips-linux-gcc/

环境变量的作用及设置请自行百度,附我的配置(看前两行)

2015-03-17 16:59:25屏幕截图

第三步,进行编译

设置好环境变量后,可以检验一下,在shell中输入编译器的前几部分,看是否可以自动补全

2015-03-17 17:04:21屏幕截图

接着我们就可以进行编译了

1.编译单个文件,就像普通的编译一样,只不过把gcc换成了交叉编译的编译器  执行  mips-openwrt-linux-uclibc-gcc test.c -o test    得到的test就是路由器上可以执行的文件

2.编译软件,在./configure 时加上–host=mips-openwrt-linux-uclibc

以mentohust为例

2015-03-17 17:20:52屏幕截图

再执行make 命令就可以生成可执行文件了

2015-03-17 17:23:45屏幕截图

在src文件夹中就可以看到mentohust的可执行文件已经生成

利用SDK来生成ipk文件

SDK中其实是包含toolchain的,SDK就是将编译好的文件在打包到一个ipk中,便于安装。

SDK与toolchain一样,可以自己编译也可以从网上下载,不过我试了下直接下载的使用有问题,而自己编译的可以使用。

SDK生成ipk包时需要的只是一个makefile文件,makefile里写了所需下载的文件、生成规则、软件版本、类型等。makefile的写法可以到openwrt的官方wiki中找到。

再次以mentohust为例生成ipk包。

mentohust.tar.gz 这是其makefile文件

解压后的文件夹放到SDK的package文件夹中

2015-03-17 18:43:52屏幕截图

然后执行  make package/mentohust/compile

这是编译指定包,编译package里所有的包的话直接 make就可以了

2015-03-17 19:30:09屏幕截图

编译后,生成ipk包

2015-03-17 18:44:16屏幕截图

 

Banana Pro

好久没有在博客写文章了,上学期课太多,没有啥时间。(好吧,其实主要还是懒)

其实早就想买块开发板了,之前感觉Banana Pi不错,配置比树莓派b+要高,后来发现Banana Pi的升级版Banana Pro已经出了(仿佛其中还有一些制造商之间的纠纷),于是寒假一回到家,就买了块Banana Pro(当时不知道树莓派要出2)

introImgDetail

 

官网的介绍

基本上配置接口等都有了

我感觉硬件配置还是很不错的

再来看看可以刷的系统

2015-03-15 13:00:17屏幕截图

系统镜像种类还是很多的,不同镜像侧重的功能不一样。

我自己试过arch、lubuntu、bananian、raspbian、android、lemedia。我自己感觉最完善的还是android。

其他的有或多或少的小问题 、需要等官方更新来解决,比如缺少无线驱动 (lemdia)、无法开启硬件加速。

我现在用的是bananian,我还是比较喜欢arch的,但是不知道什么原因arch系统启动之后无法自动连接wifi。

开发板的用途有许多,可以当nas、影音服务器、硬件控制中心等等。

我现在只是用来挂pt,有点大材小用的感觉,等过几周开始学数电之后,再研究怎么用gpio吧。

最后再说说一些小tips:

1.一些硬件方面的设置,如修改视频输出方式,需要修改config.bin(bin文件由fex生成,不能直接gai q) 镜像写到sd卡上之后,sd卡的第一个分区里有。

2.使用ttl连接时,速率应该设置成119209。

3.不同镜像用户名密码可以在镜像下载页面找到。

 

折腾Arch Linux的一些经验

这学期刚开学比较忙 虽然刚开始课不是很多 但乱七八糟的事情也不少

上周把该做的事都做完了  周五晚上没啥事儿 突然心血来潮 准备安安Arch 试试

之前我一直用的是Ubuntu 14.04 (虽然还是用Windows比较多

Arch我也是上大学之后才听说的  以前也试过安装 不过都没有仔细找教程 看到那个黑漆漆的 Terminal就放弃了

周五找了个教程仔细看看  其实也并不复杂 主要就是分区 联网 挂载 分区 安装base (安的时候要注意修改下源 改个国内的镜像 163的就不错)  安装Grub 配置时区等

教程网上有许多  而且官方的Wiki  介绍的也很清楚 (我安arch 才认识到Wiki的重要性)

我的电脑是UEFI+GPT 由于我已经安了Ubuntu  分区可以在Ubuntu下分 Grub也不用重新安装

不过在把安装镜像往u盘上写的时候 用ultraiso直接写上去有问题 不能启动  又试了试unetbootin 写到U盘之后就可以了

把最基本的安好之后 剩下的便是根据自己需要来选择了 (这就是Arch的特点 ) 比如桌面环境等我就不赘述了

我来晒下我的配置

201409221411396657717545

(我以前一直觉得这个很高大上)

桌面

201409221411396657640245

我个人还是比较喜欢Gnome  现在的Gnome3 已经很不错了   而且还有许多主题、插件

我现在还在继续完善 图形界面

再说下我遇到的一个问题

安装sudo 之后 不能使用 提示

sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

最后看了Heiher的复制安装 Linux 系统的一个教训

把根目录的权限设置为755就好了

关于Linux我还有许多要学习的东西 今天就写到这里    

换了一个.net的新域名

原来的几个.ml  .tk .eu.org都是免费域名,虽然可以正常使用但是免费域名有不被百度收录,加载速度慢等缺点,而且现在com net等域名在国内价格价格也不贵,基本在50/年左右,以前国外的域名注册商比如godaddy等还有一些价格优势,现在国内注册域名价格基本与国外持平,而且在国外注册域名大部分需要信用卡(godaddy可以用支付宝),国内的注册商也比较多,我看了下西部数码(为毛有种山寨的感觉)正在搞活动,新用户送10元的域名优惠券com net域名第一年38元 cn域名只要8元,不过cn域名比较坑,审核比较麻烦,我搜了下com域名已经被注册了,没办法只好用net了,买好以后设置好dns就可以用了,dns用的是西部数码自带的,感觉也差不多,换了新域名网站加载速度,稍微有了点提升,我感觉还是有点慢,还需要慢慢优化。。。

联想云路由Y1S简单晒机

话说我挺喜欢折腾路由器的,学校是锐捷认证,最开始折腾mentohust,认证成功后又折腾ipv6

之前也参加过这种内测申请活动。。。都没中过

这个路由本来是如意云做的,后来联想跟如意云合作。。。。如意云之前的一款云1做的也不错

放假回家后,看到有个内测活动还没有结束,我也没抱多大希望,不过也认真写了一些折腾路由的经历

没想到八月一号下午收到短信说获得了内测资格

 

IMG_1512-副本

填好订单之后就等4号发货了  还是联想比较靠谱 这次内测有1000个名额,还有京东的500个(京东的也是免费,已京券的形式返还),联想还是比较有诚意

四号终于发货,不过快递是汇通。。。感觉略微有点坑

今天中午终于收到路由

包装的还不错

IMG_1508

 

打开包装看盒子真是高大上

 

IMG_1509

背面

IMG_1510-300x224

 

具体配置 芯片方案是mtk7620a的

 

IMG_1513

侧面

 

IMG_1511

既然是测试版当然还有一些小问题 如固件不完善等 我也已经在官方论坛反馈

 

校园网锐捷 openwrt mentohust 成功开启IPv6

在网上看到一种比较简单的就是用trunk版的固件,用6relayd
本来想自己编译的,目测因为我的Ubuntu home分区有点小了,老是编译不成功,
然后我就直接在openwrt官网下载了最新的tp wr703固件 刷好以后发现木有luci。。。。想从packages 里下ipk 发现luci有好几个ipk包。。。
没办法。。。。按照网上的准备自己用FTP搭个服务器
安装好luci后 开启无线 就可以开始设置了
仔细看一下发现 电脑连上路由器之后已经有ipv6地址了。。。虽然还不能上Internet
先安好mentohust 然后认证
在状态里看 IPv6 WAN 还没有地址
这时需要再network (/etc/config/network)里新建一个wan6
config interface ‘wan6’
option proto ‘dhcpv6’
option ifname ‘@wan’
这里的内容是 作为 IPv6 的 wan 口,并将 wan6 与 IPv4 wan 口绑定
重新认证一下发现已获得ipv6地址
QQ截图20140704225112
然后就是设置6relayd
发现最新的trunk 的packages里面已经木有6relayd
莫非有更好用的
还好有以前下载的
6relayd_2013-07-26-7_ar71xx
在命令行里输入
/etc/init.d/6relayd start //启动
/etc/init.d/6relayd enable //开机自启动
安装后直接重启下路由就好了
已经可以ipv6

QQ截图20140704225707

 

顺便附上6relayd(/etc/config/6relay)的设置
以供参考
config server default
option master wan6
list network lan
option rd server
option dhcpv6 server
option fallback_relay ‘rd dhcpv6 ndp’
option management_level 1
option compat_ula 1