- 博客(190)
- 资源 (3)
- 收藏
- 关注
原创 37-Openwrt 使用wpa_supplicant实现sta
openwrt上面如果想要使用无线中继上网的话,需要使用uci的配置+udhcpc进程进行配合使用,但是wpa_supplicant做为一个开源使用很普遍的工具,在很多终端设备上使用,有必要介绍使用。
2025-04-02 16:10:56
16
原创 36-Openwrt wifi命令工具iwconfig、iwinfo、iwpriv、iwlist
增对wifi的调试命令有很多,这边列出我们常用的命令提供参考,方便查看信息定位问题。
2025-03-04 16:50:40
227
原创 5-portal认证与qos冲突问题解决
mark的最大长度是32位0xffffffff,所以可以把不同的应用分配给不同的mark位,设置mark的时候通过掩码或设置(–or-mark value/mask),匹配mark的时候也通过掩码只匹配自己的位断(-m mark --mark value/mask)由于portal和qos用的方法都是使用mark原理,将数据流标记后,再通过标记匹配做出不同的动作,mark的动作都处于mangle表中。原本的mark设置,改成通过子网掩码或设置mark。原本的单位mark标记,改成第6位为mark标记。
2025-02-17 10:49:10
46
原创 4-电脑一连接上自动弹框到路由器web配置页面
很多路由器在还没有配置路由信息的时候,只要一连接wifi/有线,就会自动弹出路由器web配置页面,强制用户配置一次基本信息才可以进行上网这也其实也是portal认证的一种应用,原本的portal是跳转到后台认证服务器页面,目前是跳转到路由器本地管理页面。所以我们只需要根据应用策略进行区分,然后修改跳转的页面url即可。
2025-02-12 17:20:43
347
原创 2-使用wifidog实现portal
wifidog是openwrt上面实现portal认证的一个开源工具,从网关端到服务器都帮你搭建好,通过学习wifidog的原理,后面就可以改造成自己需要的逻辑。
2025-02-11 09:11:41
270
原创 1-portal认证功能
很多时候公共网络需要提供安全认证功能,比如我们去星巴克或者商场、酒店,我们连接wifi上网的时候, 需要认证后才可以上网。用户可以主动访问已知的Portal认证网站,输入用户名和密码进行认证,这种开始Portal认证的方式称作主动认证。反之,如果用户试图通过HTTP访问其他外网,将被强制访问Portal认证网站,从而开始Portal认证过程,这种方式称作强制认证。一般都是这种方式。路由器实现portal认证的方式有两种,黑名单或者白名单机制。
2025-02-10 09:25:55
396
原创 35-Openwrt rpcd
rpcd package里面包含了多个模块,session,ubus插件等,是opewnrt的基础组件,只是很少关注到。
2024-06-25 09:09:33
715
原创 34-Openwrt uhttpd与rpcd
uhttpd作为一个简单的web服务器,其代码量并不多,而且组织结构比较清楚。和其它网络服务器差不多,其main函数进行一些初始化(首先parse config-file,然后parse argv),然后进入一个循环,不断地监听,每当有一个客户请求到达时,则对它进行处理。
2024-06-24 16:45:00
2043
原创 3-EMMC命令使用
在调试emmc的过程,我们需要用到命令读写emmc,烧录,查看emmc寄存器,设置寄存器等功能,所以uboot和linux下都有各自的命令可以使用。
2024-05-29 14:47:16
1860
原创 2-EMMC启动及各分区文件生成过程
跟普通nand或spi flash不同,uboot前面还有好几级在vendor某些厂商的设计中,ATF并不是BOOTROM加载后的第一个启动镜像,可能是这样的:BOOTROM—>PL—>ATF—>optee—>uboot…, 在PL阶段就已经将ATF/optee/uboot镜像的load到内存了.ATF(ARM Trusted firmware)完成启动流程:https://blog.youkuaiyun.com/u014426028/article/details/117949006?
2024-05-28 10:08:55
1821
原创 1-EMMC介绍
eMMC Device会进行内部初始化,Host需要持续发送CMD1命令,查询eMMC Device是否已经完成初始化,同时进行工作电压和寻址模式协商:eMMC Device 在接收到这些信息后,会将OCR的内容(MMC出厂就烧录在里面的卡的操作电压值)通过 Response 返回给 Host,其中包含了 eMMC Device 是否完成初始化的标志位、设备工作电压范围 Voltage Range 和存储访问模式 Memory Access Mode 信息。MMC完成初始化后,就会进入该阶段。
2024-05-27 17:21:46
4467
原创 33-Openwrt nand flash生产烧录
openwrt编译生产的sysupgrade.bin文件是一个升级文件,无法直接提供给工厂进行nand flash烧录使用。因为flash的每一个page是由data+ecc组成的,烧录的时候需要一起烧录,但是sysupgade.bin是原始data内容,没有ecc。
2024-05-22 16:56:05
493
1
原创 32-Openwrt nand flash坏块管理nmbm功能支持
nand flash很容易有坏块出现,一旦出现坏块数据就会丢失,如果是烧录、写入的时候检测到坏块,驱动可以帮忙跳过不写入之类的,但这不是一个完整的坏块管理,因为我们还是需要写入成功。
2024-05-15 14:46:53
1324
1
原创 31-Openwrt 内核版本替换
有些时候因为一些解不了的bug,在新的内核版本里面已经解决了,这时候我们会想着升级下内核版本,而不是把整个openwrt升级。
2023-05-30 09:44:05
7082
原创 30-Openwrt config save and restore
在使用sysupgrade升级的时候,默认需要把配置文件进行备份,升级完成后进行恢复。如果是-n则把配置文件删除,恢复默认配置。
2023-05-24 10:36:18
1460
原创 29-Openwrt 防攻击
DOS攻击很常见,路由器可以通过iptables做一些简单的攻击防护,这边主要介绍模拟攻击的工具和防护攻击的手段。
2023-05-18 11:29:25
2343
原创 28-Openwrt 固件签名与验签
openwrt使用sysupgrade升级的时候,只会对固件的头部image进行校验是否合法,不会校验固件的完整性,所以当固件只有头部正常其他地方被破坏修改后,这个固件就是危险的,一旦升级就会出现变砖的情况。为了验证固件的完整性和合法性,可以有两种方式进行保护。
2023-05-09 11:43:40
1350
原创 5-Linux 内存溢出oom
Linux内核为了提高内存的使用效率采用过度分配内存(over-commit memory)的办法,造成物理内存过度紧张进而触发OOM机制来杀死一些进程回收内存。该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽会把该进程杀掉。
2023-04-02 16:44:52
3779
原创 2023新的征程
距离上一篇的五年睿进已经过了四年,不知出于什么理由,中间的这三年没有写年终总结,今年也是比较特殊的一年,重新开始自己的年终总结,回顾四年里发生的事情,计划2023新的征程。
2023-01-11 21:04:59
662
原创 24-Openwrt dnsmasq
dnsmasq是openwrt一个重要的进程,里面提供了两个重要的功能。一个是dhcp server,给lan口使用的,另一个是dns功能,维护路由器的dns信息,而且支持ipv4和ipv6。1、 dnsmasq启动过程从/etc/init.d/dnsmasq start脚本启动root@Openwrt:/# cat /etc/config/dhcpconfig dnsmasq option domainneeded '1' option boguspriv '.
2022-05-28 16:33:20
5834
原创 22-Openwrt 使用外部kernel和kernel_config
由于内核的修改要通过打patch的方式会比较麻烦,有时候我们会把内核直接解压出来用修改源码的方式,这时候就需要使用外部kernel的这个选项。openwrt的内核config是根据版本保存的,如config-4.19,当我们在一个版本下如果有很多和硬件平台的时候,平台config的分类保存就很重要了,这时候我们会选择使用外部kernel_config的方式。1、使用外部kernel使用外部内核源码的方式,我们一遍会编译一遍openwrt,然后将build_dir/target-aarch64_cor.
2022-05-18 18:07:01
4241
原创 21-Openwrt 内核模块改成.ko自动加载
openwrt下有很多开源的内核模块位于package/kernel/下,如gpio-button-hotplug、mwlwifi等。这些模块都是文件系统启动后,通过autoload的方式进行insmod载入的。1、正常思路在《Openwrt add function module to package》章节里面有介绍,如何添加一个内核模块。上面介绍的是自己添加一个内核应用模块,然后编译成.ko自动载入。如果是内核里面已经有的模块代码,如何将其改成.ko的方式自动载入。调试过程遇到过一个问题,内.
2022-05-18 18:04:19
2004
原创 20-Openwrt crond crontab
crond和corntab都是busybox下的一个工具,crond是一个后台进程,每隔一分钟读取配置文件中的参数,执行对应的动作。crontab是提供的一个命令行,可以对配置文件进行增删改查。这个定时功能对于平常一些功能使用很方便,比如每天晚上12点重启路由器等。1、openwrt上启动crond进程crond的启动参数如下:一般就设置-c指定文件目录,-l日志等级# crond -hcrond: invalid option -- hBusyBox v1.22.1 (2022-03-.
2022-05-14 17:45:10
1305
原创 19-Openwrt双固件升级
在上一章节《Openwrt sysupgrade系统升级》中,我们描述了sysupgrade升级系统的过程,这种升级过程会直接firmware分区进行写入,无法保证系统的安全性,只要在写入过程突然断电就会出现系统写入失败,升级失败无法启动系统的问题。为了解决该问题一般会使用双固件升级的方式,有一个主分区firmware和一个备份分区firmware_backup,常见的有双固件升级方式有很多种,这边只介绍一种通用方式1.升级流程1.根据sysupgrade的过程,将固件进行校验写入,不过写入的时.
2022-05-04 15:04:16
4276
原创 18-Openwrt sysupgrade系统升级
openwrt的升级是使用sysupgrade工具来升级的,该工具为sbin下面的一个脚本,可以附带很多参数,但是我们一般就直接sysupgrade openwrt-ramips-mt7621-device-squashfs-sysupgrade.bin升级参数说明-i开启交互模式-d重启前延迟,延迟秒数是传进来的-v会打印sysupgrade脚本中的一些信息,脚本中默认打印-q与-v相反-n升级后不保存配置,默认保存配置-c保存所有的改.
2022-05-04 15:03:24
7400
2
原创 17-Openwrt banner文件生成
在每次串口或ssh登录后台的时候,一按回车键就会出现openwrt的字段,如果想换成自己自定义的内容如何实现。banner:语牌和横幅这个文件存放在如下位置:./package/base-files/files/etc/banner,所以我们只需要修改这个文字的内容就可以。那我们如何生成上面好看的内容,可以使用如下工具生成:sudo apt-get install sysvbanner toilet figletubuntu:~/$ banner openwrt #### #####.
2022-01-21 11:05:22
1807
原创 16-Openwrt patch生成
在开源模块的基础上修改代码,更多的时候是通过打补丁的方式进行修改。1.内核patch生成1.1 编译内核模块命令vim 19.07/target/linux/Makefileprereq clean download prepare compile install menuconfig nconfig oldconfig update refresh: FORCE @+$(NO_TRACE_MAKE) -C $(BOARD) $@清空内核:make target/linux/cle.
2022-01-21 10:50:35
1315
原创 远程调试frp
嵌入式设备上线之后,如果遇到问题想要线上维护,最直接的方法的能够远程ssh进入到设备里,然后查看日志定位问题,这边介绍使用frp配合mqtt的方式进行设备远程调试。1.远程调试原理远程调试的原理如下:本地网关与MQTT服务器保持长连接,用来接收开启远程/关闭远程命令fprs服务器需要有公网IP,开发人员可以通过该公网IP和指定的端口远程开发人员通过约定好的MQTT消息,发送开启远程命令给本地网关。本地网关收到开启远程的命令后,就启动frpc去连接对应的frps服务器。本地网关frpc连接f.
2021-09-23 11:48:16
963
原创 5-Openwrt ipv6 6to4
当电信宽带不下发ipv6地址,但是我们又有ipv4的公网地址的时候,就可以使用公网ipv4地址生成一个唯一的ipv6地址,使得一个ipv6数据包可以在ipv4的网络中传输时,这就是ipv6的6to4协议.1、6to4原理路由器A及B分别是两个站点(站点A与站点B的出口路由器,并且都是IPv4及IPv6双栈路由器)。两边都申请到一个IPv4公网地址,使用这个公网IPv4地址进行映射得到全球唯一的6to4 IPv6地址,这个IPv6地址 /48位,空间非常大,用于相应站点内的IPv6用户。如此一来.
2021-08-28 10:11:27
1943
原创 4-Openwrt ipv6之NAT6
在实际使用过程有时候电信宽带可以下发给Wan口使用的ipv6地址,但是不下发给lan口使用的ipv6地址前缀。这时候可以使用NAT6的方式,跟ipv4的NAT一样,有自己的内网地址,访问外部的时候经过NAT转化。ipv6也使用内网地址,根据ipv6的规则FD::/8开始的地址为内网地址。IPv6的NAT关键在于设置br-lan端口的ipv6的网段/前缀设置ip6tables规则,将br-lan网段的数据包通过snat地址转换后发出1. nat6配置开启config配置CONFIG.
2021-08-28 10:09:27
3613
原创 0-Linux coredump捕获分析
1.制作debug-rootcommit a4a3b5ba5a7bdb3fb98028793d62f37788c0790aconfig: CONFIG_DEBUG use debug rootfs, sstrip real rootfs9ad4d66b7aa27f7ee42281466662d51044001278 debug: add debug-root for debug coredump and panicVIM 系统编译加上-g3,在strip之前,将这些文文件存放到debug-r
2021-07-16 09:36:58
871
原创 4-Linux 内存泄漏工具
1、mtrace应用环境:Linux GLIBC编程语言:C使用方法: 包含头文件mcheck.h,定义环境变量MALLOC_TRACE为输出文件名,程序开始时调用mtrace()即可。结果输出:用户指定的文件设计思路: 为malloc,realloc,free函数添加钩子函数,记录每一对malloc-free的执行优缺点:只能检查使用malloc/realloc/free造成的的内存泄露如何获取:GLIBC自带,可直接使用2、memwatch应用环境:Linux编程语言:C使用方法:
2020-11-13 15:32:09
520
原创 3-Linux 进程中的某个线程占用时间
在比较大型的项目中,通常都会使用多线程技术,而且通常是多人合作开发,各方自测OK之后,整合在一起往往会出现一些问题,CPU使用率过高就是其中之一。如何在不熟悉所有模块代码的情况下,快速的定位到具体哪一个线程在消耗CPU,显得很有必要。在X86上,可以借助一些工具进行定位分析,但是在嵌入式系统中,工具就比较匮乏,各命令功能也比较简单,就不好定位。现介绍一种简单通用的办法:1.获取各个线程的tidps查看进程root@zihome:/proc/2111# ps | grep ZGateway 21.
2020-11-13 15:31:28
1631
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人