编译个性化的openwrt固件
作者:@ouyang 发布时间:2015年02月13日 阅读: 3,994 分类:发现分享
当学会了搭建openwrt编译环境,肯定是想编译有一些自己想要的东西固件,要知道官方给的固件是很简洁的,不仅没有web界面(Luci-web),连无线默认都不是开启的,这也太不像个无线路由器的样子了。
我 们会使用make kernelconfig和make menuconfig这种方法来自定义软件包,不过,这样编译出来的固件仍然不具个性化,因为,无线仍然没有开启,像SSID、路由主机名、默认网关等等 这些还是openwrt官方的默认值。那么现在,我们就通过接下来的步骤做些个性化的修改。
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目录修改配置文件就可以了,下面对这些目录及文件作简单说明:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意:编译openwrt是不能使用root账户的,别忘记配置好/openwrt/trunk/files目录属组及权限,不然编译时会出现各种奇葩的问题。最懒得方法是把权限改成777,命令:chmod 777 /openwrt/trunk/files -R
4.最佳操作建议
要记下这些目录下的配置文件如何修改,绝对不是一件容易的事情,就算记得,也还会有一定的概率改 错,除非有特殊要求——比如编译自己的软件包,最佳的方法是用“覆盖配置文件”的方法,只要维护/openwrt/trunk/files目录就可以了, 这样既不影响源代码更新,又能有效安全的进行个性化。
然后对于这些files目录下的众多文件,要手动一一修改也是个麻烦,最大的问题是,找不到相关的配置文件,及配置文件的正确格式。同时,由于openwrt一直在更新,不敢保证其配置文件的内容没有变化,为了保证安全,我的一般做法是:
- 编译出一个默认配置的固件,并刷上固件
- 登录openwrt,做个性化配置
- 备份并保存配置文件
- 把配置文件解压到/openwrt/turnk/files中
- 删除不必要的文件,修改某些文件——如果有需求的话,然后配置文件属性属性。
- 执行完make menuconfig后,开始编译
隔段时间更新源码后都重新做这样一次操作,不要偷懒。
编译固件其实有很多事情要处理,但是,很多地方基本还是有规律或者方法可循,openwrt的编译还算方便,个人觉得比dd-wrt好多了。多动手,多动脑,在openwrt的代码里多翻看,始终是件好事,总会有发现的。
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!