当学会了搭建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目录修改配置文件就可以了,下面对这些目录及文件作简单说明:

/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一直在更新,不敢保证其配置文件的内容没有变化,为了保证安全,我的一般做法是:

编译出一个默认配置的固件,并刷上固件

登录openwrt,做个性化配置

备份并保存配置文件

把配置文件解压到/openwrt/turnk/files中

删除不必要的文件,修改某些文件——如果有需求的话,然后配置文件属性属性。

执行完make menuconfig后,开始编译

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

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

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

openwrt源码分析_编译个性化的OPENWRT固件(openWRT源码修改)相关推荐

  1. SpringMVC源码分析_框架原理图

                                                                                 SpringMVC源码分析_框架原理图     ...

  2. spring源码分析第五天------springAOP核心原理及源码分析

    spring源码分析第五天------springAOP核心原理及源码分析 1. 面向切面编程.可以通过预 编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 切面(A ...

  3. spring源码分析第四天------springmvc核心原理及源码分析

    spring源码分析第四天------springmvc核心原理及源码分析 1.基础知识普及 2. SpringMVC请求流程 3.SpringMVC代码流程 4.springMVC源码分析 4.1 ...

  4. 通过这次源码分析直播了解到在中国真正关心源码的webrtc开发者只有1%

    通过这次源码分析直播了解到在中国真正关心源码的webrtc开发者只有1% 昨天晚上花费了2个多小时发给2000多个webrtc各个群里的朋友,截至到现在加入群观看的只有20多个,实际从头听到尾的只有1 ...

  5. OkHttpClient 源码分析 1(基于3.9.0的源码)

    OkHttpClient是目前开发 android 应用使用最广泛的网络框架,最近看了阿里的 httpdns 里面对于 dns 的处理,我们团队就想调研一下在项目中有什么利弊,并且框架中是否对 soc ...

  6. tomcat源码分析_百战卓越108天tomcat和servlet源码分析

    训练大纲(第105天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第209 ...

  7. 第4课第4节_Android灯光系统_源码分析_电池灯

    电池的监听器: Android灯光系统的源码分析与使用 4. 电池灯 a. batteryPropertiesRegistrar.registerListener(new BatteryListene ...

  8. vuex 源码分析_深入Vuex原理(上)

    原标题:深入Vuex原理(上) 孔维国,2016年加入去哪儿网技术团队.目前在大住宿事业部/增值业务研发中心,参与开发了TMC.CRM.QTA.Auth等项目,负责node框架nomi的设计以及开发. ...

  9. linux源码分析之cpu初始化 kernel/head.s,linux源码分析之cpu初始化

    linux源码分析之cpu初始化 kernel/head.s 收藏 来自:http://blog.csdn.net/BoySKung/archive/2008/12/09/3486026.aspx l ...

  10. golang源码分析:编译过程词法解析的流程

    golang编译 由于golang作为静态语言,当使用go build时就会生成对应的编译完成之后的文件,那这个编译过程大致会做什么事情呢,在golang中的编译大致有哪些流程. golang示例代码 ...

最新文章

  1. 【Spring】通过动态代理改进银行转账事务控制
  2. vb打开ftp服务器文件路径,VB上传指定文件到FTP指定目录。。
  3. 配置apache+php环境详解
  4. IOT/智能设备日志解决方案(1):概述
  5. 深度解密Go语言之context
  6. sklearn自学指南(part48)--截断奇异值分解和潜在语义分析
  7. [react] react中的setState和replaceState的区别是什么?
  8. 速览EMNLP 2020上录取的知识图谱相关论文
  9. 论文浅尝 | Understanding Black-box Predictions via Influence Func
  10. linux定时器错误使用,linux下定时器的使用
  11. df添加一行 python_Python为输出的数据绘制表格
  12. 2021中国集成电路行业投资市场研究报告
  13. 实现图片的变亮,变暗,灰白
  14. 开发微信小程序 中遇到的坑 及解决方法
  15. Android视频编码的坑
  16. 360壁纸图片API收录
  17. 4.jvm入门到精通
  18. [Z] 通天塔导游:各种编程语言的优缺点
  19. 2023拼多多商品详情,拼多多sku采集
  20. 最全CSS基础知识图片形式整理

热门文章

  1. delphi 中assert
  2. 「leetcode」538.把二叉搜索树转换为累加树【递归】【迭代】详解
  3. 如何在 Mac 中更改文件夹图标,换上喜欢的图像 Icon?
  4. Magnet for mac(窗口布局辅助工具)
  5. 使用Tenorshare iCareFone for mac如何对iPhone进行系统修复?
  6. 【WPF】在MenuItem中下划线“_”显示不正常
  7. MySQL to Hbase 数据的抽取
  8. DropDownList 递归绑定分子公司信息
  9. MongoDB学习笔记—Linux下搭建MongoDB环境
  10. 汇编---3---物理地址