Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3165359
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: LINUX

2014-08-02 14:23:00

原文地址:http://www.zoublog.com/compile-customized-openwrt/#comment-35027

当学会了搭建openwrt编译环境,肯定是想编译有一些自己想要的东西固件,要知道官方给的固件是很简洁的,不仅没有web界面(Luci-web),连无线默认都不是开启的,这也太不像个无线路由器的样子了。

我们会使用make kernelconfig和make menuconfig这种方法来自定义软件包,不过,这样编译出来的固件仍然不具个性化,因为,无线仍然没有开启,像SSID、路由主机名、默认网关等等这些还是openwrt官方的默认值。那么现在,我们就通过接下来的步骤做些个性化的修改。

make_menuconfi_wr720n

1.个性化修改方式

一般有两种方式可以实现这种个性化的修改:修改源代码或覆盖配置文件。(假设编译目录是/openwrt/trunk/)

修改源代码:openwrt的各种包的源代码基本上是在/openwrt/trunk/pachages下面,修改对应的源代码(配置文件)后,就会同步编译到固件里了。最直接,最酷,最显得自己"牛掰"的,就是修改源代码了。

2.修改源代码

2.1.开启无线及修改SSID

编辑这个文件:/openwrt/trunk/package/mac80211/files/lib/wifi/mac80211.sh。跳到文本最下面,最下面那些代码,就基本上是无线的配置文件的样子了,作如下修改。

要默认开启无线,把disabled后的参数改成数字0,表示不禁用无线,如下:

option disabled 0

至于SSID,你爱怎么改就怎么改,比如:

option ssid     OpenWrt-zou

2.2.配置网络服务

在/openwrt/trunk/package/network/目录下,有很多与网络相关的配置,比如firewall,dhcp,dns,dnsmasq等,一部分在config目录下,一部分在service目录,改这些软件目录下的files下的conf文件,这些都是配置文件。

还有一部分是在/openwrt/trunk/package/base-files/files/etc下,比如/openwrt/trunk/package/base-files/files/etc/confit/network,这个就是网络的核心配置文件了,可以新增接口,配置接口ip等。

若有时间,这些代码就多研究研究,自会收益。

2.3.其他配置

很多的luci-app,其代码多放在/openwrt/trunk/package目录下,一些系统应用的配置文件在/openwrt/trunk/package/base-files/files/etc下,多翻看翻看,自有惊喜,譬如:

/openwrt/trunk/package/base-files/files/etc/config/system

这里配置路由主机名、时区、NTP及LED等

注意:trunk版本的源代码一直在变化,目录结构也有可能在变化,修改源码之后,更新官方源码就有可能出现问题,所以,我的建议是,能不动源码就不要动源码,要是这些源码“玩坏了”,再配置一次太费功夫。而下面的“覆盖配置文件”的方式不仅安全,而且简单。

3.覆盖配置文件

在编译目录下新建一个名为files的目录,openwrt在编译的时候,会把files文件夹里的文件编译到固件的根目录,简而言之,就是/openwrt/trunk/files目录,这相当于是openwrt固件的根目录/(这个和上面提及的/openwrt/trunk/package/base-files/files目录作用相似),所以能在这个目录下能干的事情就多了,基本上涵盖了所有你能改动的东西。

这里只要模仿openwrt的/etc目录修改配置文件就可以了,下面对这些目录及文件作简单说明:

  • /www/
  • luci web页面的目录。
  • /etc/banner
  • 命令行登陆Openwrt的欢迎信息
  • /etc/opkg.conf
  • Openwrt的opkg更新源配置文件
  • /etc/profile
  • 系统环境变量
  • /etc/dnsmasq.conf
  • Dns解析配置文件
  • /etc/config/dhcp
  • Dhcp服务配置文件
  • /etc/config/firewall
  • 防火墙配置文件
  • /etc/config/fstab
  • 文件系统挂载配置文件
  • /etc/config/luci
  • Luci界面配置文件
  • /openwrt/trunk/package/base-files/files/etc/config/system
  • 系统主机名、时区、NTP及LED配置文件
  • /etc/config/wireless
  • 无线配置文件

注意:编译openwrt是不能使用root账户的,别忘记配置好/openwrt/trunk/files目录属组及权限,不然编译时会出现各种奇葩的问题。最懒得方法是把权限改成777,命令:chmod 777 /openwrt/trunk/files -R

4.最佳操作建议

要记下这些目录下的配置文件如何修改,绝对不是一件容易的事情,就算记得,也还会有一定的概率改错,除非有特殊要求——比如编译自己的软件包,最佳的方法是用“覆盖配置文件”的方法,只要维护/openwrt/trunk/files目录就可以了,这样既不影响源代码更新,又能有效安全的进行个性化。

然后对于这些files目录下的众多文件,要手动一一修改也是个麻烦,最大的问题是,找不到相关的配置文件,及配置文件的正确格式。同时,由于openwrt一直在更新,不敢保证其配置文件的内容没有变化,为了保证安全,我的一般做法是:

  1. 编译出一个默认配置的固件,并刷上固件
  2. 登录openwrt,做个性化配置
  3. 备份并保存配置文件
  4. 把配置文件解压到/openwrt/turnk/files中
  5. 删除不必要的文件,修改某些文件——如果有需求的话,然后配置文件属性属性。
  6. 执行完make menuconfig后,开始编译

隔段时间更新源码后都重新做这样一次操作,不要偷懒。

编译固件其实有很多事情要处理,但是,很多地方基本还是有规律或者方法可循,openwrt的编译还算方便,个人觉得比dd-wrt好多了。多动手,多动脑,在openwrt的代码里多翻看,始终是件好事,总会有发现的。


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