![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openwrt
文章平均质量分 80
it潮人
这个作者很懒,什么都没留下…
展开
-
CMakeLists.txt的用法
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。他们之间的调用关系复杂而严格,如果我想在这样复杂的框架下进行二次开发,显然只拥有它的源码是远远不够的,还需要清楚的明白这几十个项目之间的复杂关系,在没有原作者的帮助下进行这项工作几乎是不可能的。将他的命令解析出来一条一条执行。转载 2024-03-14 17:31:42 · 178 阅读 · 0 评论 -
OpenWRT启动流程剖析
这里需要注意的是原生的Linux内核中/sbin/init进程是由busybox实现的,而在OpenWRT中是由procd实现的。o 这里需要注意的是,/etc/rc.d/目录下的启动文件其实是/etc/init.d/目录下文件的软链接,该目录下的启动脚本分为两类,一类是以S开头,另一类是以K开头,S代表start,K代表stop,启动脚本的执行顺序是按照S/K后面的数字大小从小到大依次执行,如果多个init脚本具有相同的起始值,则调用顺序由init脚本名称的字母从小到大依次确定。转载 2024-03-13 15:26:58 · 514 阅读 · 0 评论 -
u-boot启动流程详解-基于iTop4412开发板
前言u-boot的作用:CPU上电后,需要设置很多状态,包括CPU状态、中断状态、MMU状态等,其次要做的就是对硬件资源经行板级初始化、代码重定向等,最后若不进入命令行模式,就会将linux内核从flash(NAND,NOR FLASH,SD,MMC等)拷贝到DDR中,最后启动linux内核。4412 u-boot启动流程:A.开机运行iRom中代码B.BL1阶段(E4412_N.bl1.xxxxG.bin:8KB,三星提供的bin文件,没有源码)C.BL2(SPL)阶段(bl2.转载 2024-03-11 15:50:25 · 240 阅读 · 0 评论 -
03 openwrt的启动过程
引用博客:https://clockworkbird9.wordpress.com/2016/09/可以明显的看到procd进程接管了init进程。转载 2024-03-08 17:43:53 · 162 阅读 · 0 评论 -
OpenWrt启动脚本(Init Scripts)
因为/etc/rc.common 中已经定义了所有默认的函数,当我们没有重新实现这些函数时,程序会执行/etc/rc.common中的默认函数,比如在这个 example 中,我们没有定义 restart 函数,我们跟参数 restart 时,程序执行/etc/rc.common中的 restart 函数,该函数首先调用 stop 函数,再调用 start 函数。/etc/rc.d/下的所有脚本都是链接到/etc/init.d/下的脚本。神奇的地方就在这两个名字中的K与S了。转载 2024-03-08 15:55:54 · 371 阅读 · 0 评论 -
01.OpenWrt系统介绍
本章节我们将对OpenWrt系统产生的背景进行介绍。OpenWrt最初是群众发现发现思科用了开源代码,并且没有按照协议上的规定公开代码,后来被迫公开源码。才有了今天你和我的故事~不得被佩服老爷子的先见之明。转载 2024-03-08 14:20:15 · 232 阅读 · 0 评论 -
OpenWrt介绍及编译基础教程
编译 OpenWrt 的过程就像是复读机,除了选择系统组件外,几乎每次编译都是复制粘贴相同的命令。而理解每一条命令的作用、什么时候该去执行,这样才能更好的去解决编译中遇到的问题,更顺利的编译出固件。转载 2024-03-08 11:19:05 · 3236 阅读 · 0 评论 -
从零开始学习OpenWrt完美教程
查找资料很辛苦,而且OpenWrt的门槛相对较高,希望这篇文章所提供的从零开始学OpenWrt编译 + 刷机 + 使用教程能降低新手们的入门难度,当然,编译过程非必须,一般的路由都可找到可用的稳定固件直接刷机。make作为trunk版本的编译命令,只能在trunk目录执行,进入配置菜单界面,键盘上下是移动光标,左右是选择底部按键,回车是确认,空格是设置选择模式,选项最前面的选择模式有[*]表示编译进固件,[M]表示编译成安装包,[ ]表示不选择,esc是返回上级菜单,按?是帮助,按/是搜索。转载 2024-03-07 16:06:22 · 4174 阅读 · 1 评论 -
netifd调试总结(OpenWrt 22.03)
mtk_probe->mtk_mdio_init(读DTS)->of_mdiobus_register->of_mdiobus_register_device->mdio_device_register->device_add。其中->dsa_switch_parse_of->dsa_switch_parse_ports_of->dsa_port_parse_of->dsa_port_parse_user(从DTS中读取接口名称)关联起来,在设备初始化时match)转载 2024-03-01 16:42:47 · 286 阅读 · 0 评论 -
OpenWrt network 启动过程
config_load network # 读取 /etc/config/network ,config_load 在/lib/functions.sh 中定义。关于/etc/config/network 的生成可以看我的上一篇博文:OpenWrt /etc/config/network 的生成过程。原文链接:https://blog.csdn.net/agave7/article/details/106519826/networt 配置文件为 /etc/config/network。转载 2024-02-29 14:21:22 · 198 阅读 · 0 评论 -
openwrt查看系统的芯片方案
dmesg里面的信息还是挺多的,SoC Type这个就是芯片方案了,能看到是MT7620A。另外,还能看到内核的版本Linux version 3.10.28。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。能看到系统是MT7620A,上面的machine参数给的是自己的固件命名。拿到一款路由器,想要知道主芯片的方案,可以通过如下方法。转载 2024-02-28 15:24:33 · 95 阅读 · 0 评论 -
1-Openwrt ipv6之-odhcp6c客户端
配置好之后需要重启/etc/init.d/network restart里面会执行ubus call network reload然后就是一系列的ubus传输,最终会调用到/lib/netifd/proto里面对应的脚本,脚本netifd-proto.sh脚本里面会调用_proto_do_setup函数,启动各个协议进程。ipv4的启动在./lib/netifd/proto/dhcp.sh脚本里面的proto_dhcp_setup函数。转载 2024-02-23 17:17:38 · 761 阅读 · 0 评论 -
Openwrt procd守护进程
(4)procd_add_reload_trigger,增加配置文件触发器,每次配置文件的修改,如果调用了reload_config时,当前实例都被重启。其实它在内部是调用procd_open_trigger、procd_add_config_trigger和procd_close_trigger这3个函数来增加触发器。至少需要一个参数,第一个参数是服务名称,通常为进程名,第二个是可选参数,是进程实例名称,因为可能有多个进程示例,如果不指定所有的实例将被关闭。输入以下命令,可以看到系统所有注册的验证服务。转载 2024-02-21 14:57:00 · 285 阅读 · 0 评论 -
Iptables之nf_conntrack模块
表示分组对应的连接已经进行了双向的分组传输,也就是说连接已经建立,而且会继续匹配 这个连接的包。通过系统初始化脚本创建配置文件”/etc/modprobe.d/nf_conntrack.conf”, 内容为“options nf_conntrack hashsize=262144”,通过nf_conntrack模块挂接参数”hashsize”自动设置“net.nf_conntrack_max=2097152”(nf_conntrack_max=hashsize*8),保证后续新初始化服务器配置正确。转载 2024-02-18 10:31:25 · 606 阅读 · 0 评论 -
【Shell 命令集合 文件管理】Linux 补丁文件应用命令 patch命令使用指南
在我们的探索过程中,我们已经深入了解了Shell命令的强大功能和广泛应用。然而,学习这些技术只是开始。真正的力量来自于你如何将它们融入到你的日常工作中,以提高效率和生产力。心理学告诉我们,学习是一个持续且积极参与的过程。所以,我鼓励你不仅要阅读和理解这些命令,还要动手实践它们。尝试创建自己的命令,逐步掌握Shell编程,使其成为你日常工作的一部分。同时,请记住分享是学习过程中非常重要的一环。分享你自己在使用Shell命令时遇到的问题或者有趣的经验,可以帮助更多人从中学习。转载 2024-02-06 14:42:13 · 169 阅读 · 0 评论 -
【linux】patch命令使用简述
pN : 剥离等级,移除patch文件的具体文件的路径个数,用于使patch文件中的修改能与指定的被修改的文件路径匹配。-R : 撤销/恢复已经应用的patch(将patch文件中新的修改与旧的修改反向应用到工程中,达到代码恢复的目的)patch可以将git diff 等命令生成的比较文件(patch文件)应用到不同版本的同一个工程中,是合并代码的一种方式。-d : 指定需要应用patch的文件路径(与-p要配合好)参考命令:patch。转载 2024-02-06 11:21:16 · 570 阅读 · 0 评论 -
<Linux>使用quilt工具制作补丁(patch)文件
patch是Linux项目编程下常用的工具。例如:一份有Makefile管理的驱动代码文件,每次编译时会有Makefile规则从指定目录下解压到固件目录下,此时在驱动代码中添加了一些功能或者改变了一些功能代码,为了不改变原驱动代码,便可以将新修改的代码做成patch文件,使用Makefile在每次编译固件时候将patch安装到代码中。提示:以下步骤均在ubuntu下进行示范操作。转载 2024-02-06 10:19:06 · 202 阅读 · 0 评论 -
OpenWRT数据接收过程【Linux内核-OpenWRT】
OpenWRT数据接收过程 这里使用的是ath9k网卡驱动,硬件平台是TP-link TL-WR841N V7.1 路由器。转载 2024-02-02 11:00:48 · 65 阅读 · 0 评论 -
openwrt - iptables 命令、例子、日志
以上配置应该足够了。0是emerg,1是alert,2是crit,3是err,4是warning,5是notice,6是info,7是debug。Openwrt是一个GNU/Linux的发行版,Openwrt的防火墙与Linux的防火墙是通过netfilter内核模块,加上用户空间的iptables管理工具实现的 ── 同样是五链四张表、五元素的管理框架。这是标准的系统日志级别。0是emerg,1是alert,2是crit,3是err,4是warning,5是notice,6是info,7是debug。转载 2024-02-01 16:30:16 · 934 阅读 · 0 评论 -
openwrt上开启syslog打印方法
随后,就想看下bluez的log,可惜一点都没有打印出来,然后修改了源代码,开启了log打印,重新安装了如下3个ipk,发现依旧没有打印,看代码,bluez的打印是通过如下函数完成。最近在openwrt上调试蓝牙时,出现问题,设备上的蓝牙适配器已经正常工作了,执行pair命令后,openwrt和待连接的设备上都出现了配对码,两边都同意,但连接失败。尝试分析log,发现在如下代码处打印了错误,这个错误是一个通用的错误码,走到default分支了,往上看代码也找不到具体的原因。3. 配置system。转载 2024-02-01 11:40:55 · 263 阅读 · 0 评论 -
nf_register_hooks NF_HOOK
我自己做实验,在nf_register_hooks将自己定义的、包含了hook函数,hook点的nf_hook_ops结构体注册到系统中后,一旦有符合条件的包出现,系统都会打印出相应的语句。通过NF_HOOK的宏定义可以看到,NF_HOOK主要是调用nf_hook_slow,那么,nf_hook_slow主要做了哪些东西呢?返回的是NF_QUEUE,NF_STOLEN,NF_DROP,就立刻返回,如果是NF_REPEAT 只是 改。NF_IP_POST_ROUTING处对所有向链路。转载 2024-01-30 20:04:15 · 210 阅读 · 0 评论 -
openwrt开机自启动脚本编写
START= 和 STOP= 决定脚本启动时的次序. 启动时init.d会根据文件名顺序, 自动执行在/etc/rc.d中找到的脚本. 初始化脚本可以作为/etc/init.d/下文件的软链放置在/etc/rc.d/.原文链接:https://blog.csdn.net/u010835747/article/details/124902701。enable # 启用开机自启动, 实际上是在/etc/rc.d/下创建S?/bin/sh /etc/rc.common指定了执行该脚本的方式(必须)转载 2024-01-30 14:37:56 · 1246 阅读 · 0 评论 -
OpenWrt之quilt打补丁
给gdb打补丁修复Remote ‘g’ packet reply is too long。OpenWrt使用的是quilt工具来制作补丁非传统的diff。diff和quilt使用方法参考博客。准备gdb源码以及patch文件。quilt edit 其他文件。返回buildroot目录。更新修改到patch文件。进入到gdb源码目录。转载 2024-01-24 09:30:22 · 176 阅读 · 0 评论 -
OpenWrt LED Configuration(OpenWrt指示灯配置)
以下是OpenWrt默认的各种trigger形式。转载 2024-01-22 14:13:05 · 556 阅读 · 0 评论 -
Openwrt ubus: 进程间通信的例子
ubus_server.c: 向ubusd注册了一个名为"ering_uobj"的对象 , 提供一个名称为"ering_method“的方法, 这个方法的实现依靠3个名称为"id","data","msg"的参数。方法请求是通过回调函数来实现的,程序本身不会退出。2. ubus服务端(ubus server object): 提供软件各种具体功能模块的实现(methods), 服务端的对象名称和具体的mothd名称向ubusd进行注册后,就可以被其他ubus客户端进行传呼(call)。转载 2024-01-19 15:00:10 · 484 阅读 · 0 评论 -
OpenWrt 安装Git
安装git软件,ssh相关的组件。转载 2024-01-15 10:26:38 · 406 阅读 · 0 评论 -
luci的框架和认识
OK ,之前罗里罗嗦的说了很多,现在就进入正题,进入正题的前提是你已经make install正确的安装了lua ,luci,以及编译好链接了相关的so(如果你需要,比如uci.so nixio.so),以及make install正确web server,(我用的web server是thttpd,也编译过mongoose,lighttpd,在这三个之中,lighttpd是功能最完善的,mongoose是最小巧的)。此处也可以这样写, i18n(“reboot”,“重启”),即直接做了国际化。转载 2024-01-15 10:24:21 · 243 阅读 · 0 评论 -
Luci实现框架
对每个节点,最重要的属性当然是target,这也是dispatch()流程最后要执行的方法。target主要有:alise、firstchild、call、cbi、form、template。这几个总体上可以分成两类,前两种主要用于链接其它node,后一个则是主要的操作、以及页面生成。下面分别描述。**链接方法:**在介绍初始登录流程时,已经讲到了这种方法。比如初始登录时,url中的path_info仅为'/',这应该会索引到rootnode节点。转载 2024-01-15 09:07:57 · 48 阅读 · 0 评论 -
从mk文件深度剖析OpenWrt软件编译构建系统、并手把手教学构建自己的系统软件
第二步:回到在openwrt源码顶级目录下,输入make menuconfig进行配置,进入Network模块,然后选择hello(输入M将hello设置为M,M代表模块类型编译,“*”代表系统性编译)然后保存退出,保存之后会更新.config配置文件,如果不进行这一步,下面编译时会出错。在这个例子中,这个命令在启动时取代start函数而执行boot函数,如果boot函数没有被重新定义,将执行rc.common中预定义的 boot函数,boot函数再次调用start函数。转载 2024-01-15 09:11:24 · 750 阅读 · 1 评论 -
OpenWrt Luci页面如何配置底部按钮(返回、保存、复位)
示例: page = entry({“admin”, “network”, “appfilter”}, arcombine(cbi(“appfilter/appfilter”), cbi(“appfilter/dev_status”, {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true})), _(“appfilter”), 100)开发过程中,会用到不同风格的页面,比如有的是配置页面,有的是状态页面 而状态页面是不需要保存按钮的。转载 2024-01-14 22:12:14 · 318 阅读 · 0 评论 -
OpenWrt 系统UCI详解(Lua、C语言调用uci接口实例)
uci"是"UnifiedInterface”(统一配置界面)的缩写,用于OpenWrt整个系统的配置集中化。很多后台服务有自己的配置文件,并且配置文件格式都不相同,OpenWrt系统中需要开启各种服务,为了解决配置不兼容的问题,统一采用uci格式的配置文件。当然统一的前提是需要各个模块做好适配,所以要想把某个服务集成到OpenWrt系统中,需要增加一个转换层,用于uci配置到服务配置的转换,通常这个工作放在init脚本中处理。以samba服务器为例,转载 2024-01-14 22:09:37 · 2282 阅读 · 1 评论 -
OpenWrt Luci流程分析
luci.sgi.cgi.run()–cgi程序接下来执行程序,Luci的默认路径是/usr/lib/lua/luci,所以luci.sgi.cgi.run()是运行/usr/lib/lua/luci/sgi/cgi.lua文件中的run函数。如调用Flag的处理:function Flag.parse(self, section),他会通过遍历处理from传下来的每一个Flag,并通过本身的write/remove来启用和禁用这个选项。dispatch:四个部分处理请求。 B.需要显示的部分。转载 2024-01-14 22:04:54 · 170 阅读 · 0 评论 -
Openwrt 编译x86镜像
make V=99开始编译,第一次编译会比较慢,因为要下载开源包,生成在dl目录。\7. 编译完成后会在bin目录生成vmdk文件,该文件可以直接在vmware中加载运行。如果代码是通过root用户下载,编译会报错,通过修改用户权限后再编译,也可强制root编译 chown derry ./ -R su derry。系统,但手头又没有嵌入式板子,是编译和运行系统,然后再增加自己的功能。下面介绍如何编译openwrt系统后再虚拟机下运行。5.开启配置页面选项 选择luci,选luci后就会有配置页面。转载 2024-01-14 22:03:15 · 89 阅读 · 0 评论 -
uci 命令、shell接口、API接口
set <config>.<section>[.<option>]=<value> 设置指定配置节选项的值,或者是增加一个配置节,类型设置为指定的值。">,供uci.sh调用</span>delete <config>[.<section>[[.<option>][=<id>]]] 删除指定配置节或选项。rename <config>.<section>[.<option>]=<name> 对指定的选项或配置节重命名。转载 2024-01-14 22:01:38 · 536 阅读 · 0 评论 -
Openwrt LuCI UCI(三)
UCI是Unified Configuration Interface的缩写,翻译成中文就是统一配置接口,用途就是为OpenWrt提供一个集中控制的接口。配置接口启动流程:① 启动脚本 /etc/init.d/xxx;② 启动脚本通过UCI分析库从 /etc/config/xxx 获得启动参数;③ 启动脚本完成正常启动。转载 2024-01-14 21:59:03 · 324 阅读 · 0 评论 -
Openwrt LuCI CBI(二)
TypedSection与NamedSection的运用场景与区别?Openwrt源码中提到的SimpleForm的效果是如何的?每个控件属性对每个控件的影响是怎么样,效果如何?哪些属性是所有控件共同的,哪些属性是独有?如何重构控件方法?控件未列出的属性或方法在哪些途径能获取到?转载 2024-01-14 21:24:48 · 396 阅读 · 0 评论 -
Openwrt LuCI 入门(一)
Luci、Lua、Uci、CBI的关系图,如下图:CBI 详情见Openwrt:LuCI之CBI(二)UCI 详情见Openwrt:LuCI之UCI(三)LUA详情见lua基本语法。转载 2024-01-14 19:34:21 · 861 阅读 · 0 评论 -
OpenWrt netifd学习笔记
Netifd是OpenWrt中用于进行网络配置的守护进程,基本上所有网络接口设置以及内核的netlink事件都可以由netifd来处理完成。在启动netifd之前用户需要将所需的配置写入uci配置文件/etc/config/network中,以告知netifd如何设置这些网络接口,如IP地址、上网类型等。转载 2024-01-14 19:32:05 · 303 阅读 · 0 评论 -
OpenWrt 使用 ubus实现进程通信
ubus为openwrt平台开发中的进程间通信提供了一个通用的框架。它让进程间通信的实现变得非常简单,并且ubus具有很强的可移植性,可以很方便的移植到其他linux平台上使用。本文描述了ubus的实现原理和整体框架。ubus可通过git库 git://nbd.name/luci2/ubus.git 获得,其依赖的ubox库的git库:git://nbd.name/luci2/ubox.git。转载 2024-01-14 19:24:11 · 70 阅读 · 0 评论 -
OpenWRT Packet 相关的问题
若执行 opkg update 失败,则尝试执行 ping downloads.openwrt.org,若也失败,则手动在 PC上 ping downloads.openwrt.org 得到 IP 后,修改路由器的host文件。 出现诸如 wget: SSL support not available, please install one of the 的报错,修改软件源的协议将https改为http。转载 2024-01-14 19:21:38 · 31 阅读 · 0 评论