Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164854
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 221
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-14 18:03
个人简介

做好自己份内事

文章分类

全部博文(20)

文章存档

2019年(1)

2018年(2)

2017年(3)

2016年(3)

2015年(11)

我的朋友

分类: 其他UNIX

2015-12-02 14:59:51


作者:赵晓筱

日期:2015-11-25

联系邮箱:

本文仅为刚接触openwrt的初学者参考学习使用。仅可使用源码编译生成烧录路由系统的bin文件,对介于openwrt之上开发着毫无帮助,望知悉。强烈建议大家多看看官网的相关资料。

本文产生的背景是希望将asterisk系统集成到路由系统中。故本文首先熟悉openwrt编译,后续有asterisk集成到openwrt文章。

首选准备一个干净的虚拟机,排除其他因素干扰。

本文的编译操作系统是Ubuntu。源代码从github上获取.Openwrt源代码的路径是:。可以使用将代码克隆到本地。

整个编译过程都是需要连接网络的,有些文件下载甚至是需要翻墙配合的。

首先安装以下依赖库:

sudo apt-get install g++

sudo apt-get install libncurses5-dev

sudo apt-get install zlib1g-dev

sudo apt-get install libssl-dev

sudo apt-get install subversion

进入代码路径分别执行如下两条命令:

./scripts/feeds update -a

./scripts/feeds install -a

这两条命令会将openwrt目前支持的所有package从相对应的位置下载配置到对应的位置(packageopenwrt比较重要,可以参考官网介绍http://wiki.openwrt.org/doc/devel/packages#dokuwiki__top.

执行命令:

make defconfig

这一条命令会将裁剪内核的默认配置及所有的配置选项配置完整,在初期编译时也会检查环境中所依赖的各个库系统,会出现如下打印信息(非初次编译不会有以下打印):

Checking 'working-make'... ok.

Checking 'case-sensitive-fs'... ok.

Checking 'gcc'... ok.

Checking 'working-gcc'... ok.

Checking 'g++'... ok.

Checking 'working-g++'... ok.

Checking 'ncurses'... ok.

Checking 'zlib'... ok.

Checking 'libssl'... ok.

Checking 'perl-thread-queue'... ok.

Checking 'tar'... ok.

Checking 'find'... ok.

Checking 'bash'... ok.

Checking 'patch'... ok.

Checking 'diff'... ok.

Checking 'cp'... ok.

Checking 'seq'... ok.

Checking 'awk'... ok.

Checking 'grep'... ok.

Checking 'getopt'... ok.

Checking 'stat'... ok.

Checking 'md5sum'... ok.

Checking 'unzip'... ok.

Checking 'bzip2'... ok.

Checking 'wget'... ok.

Checking 'perl'... ok.

Checking 'python'... ok.

Checking 'svn'... ok.

Checking 'git'... ok.

Checking 'file'... ok.

Checking 'openssl'... ok.

Checking 'ldconfig-stub'... ok.libcurl4-openssl-dev

如果有依赖包检查错误安装对应的依赖库文件即可。

执行命令

make menuconfig

此命令就会出现熟悉的内核裁剪的界面,如下:

之后就是裁剪内核,重点有两个配置项,首先就是平台芯片的选择,其次就是界面的配置。其他的选择默认就可以了。

芯片平台的选择,我这边用的MT7620A的芯片,配置如下:

Target System (Atheros AR7xxx/AR9xxx)  --->

   (X) Ralink RT288x/RT3xxx

Subtarget (RT3x5x/RT5350 based boards)  --->

   (X) MT7620 based boards

Target Profile (Default Profile)  --->

   (X) Default Profile

其他的选择默认的配置,这样就可以编译出一个完整可用的路由器系统文件了。

如果想集成openwrt的界面的话,在裁剪内核的界面中增加一下选择:

LuCI  --->

Collections  --->

<*> luci

退出保存。

执行编译命令:

make V=99

如果希望使用多核快速编译的话,可以加上参数:-j(N)即可。

初次编译时间大致在三个小时以上,其中需要下载很多编译的依赖文件,编译错误大多由于文件下载失败,想办法解决文件下载问题就可以了。不要想着去修改源代码,在此阶段源代码是不需要修改的。

编译之后会在源代码路下的bin文件夹中产生对应的路由系统文件如下图:


可能会不知道烧录具体哪个文件,其实我也不知道烧录那个文件,这里只好大家自行根据名称以及自己的平台选择了.个人在这里也是蒙了很久,反正选择错文件就会导致路由器系统不能用,我这个最终使用的是文件:openwrt-ramips-mt7620-y1-squashfs-sysupgrade.bin也是经历一个痛苦的过程.进入路由器的uboot模块烧录文件(这一步我就不介绍了),重新启动路由就可以了哦!

Openwrt默认是开启的ssh服务,

Good luck!!!!

在路由系统中大家可能会发现路由系统没有办法解析域名,及可以直接ping通外面的ip地址,但是无法ping通域名.这里大家在路由中执行两条命令:

rm –rf /etc/resolv.conf

ln –s /tmp/ resolv.conf.auto /etc/resolv.conf

及可。

 

阅读(3248) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~