自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 3-wifidog代码流程

wifidog的做法是先全部黑名单,然后再放行白名单的做法。

2025-02-11 09:13:02 74

原创 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

原创 9-家长控制-儿童上网

家长控制或者儿童上网,说的都是可以指定某个设备可以在某个时间段允许上网,或者某个时间断不允许上网。

2023-07-20 17:05:15 2162

原创 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

原创 1-Linux 保存kernel panic信息到flash

Linux 保存kernel panic信息到flash

2023-02-23 14:43:35 2415

原创 2023新的征程

距离上一篇的五年睿进已经过了四年,不知出于什么理由,中间的这三年没有写年终总结,今年也是比较特殊的一年,重新开始自己的年终总结,回顾四年里发生的事情,计划2023新的征程。

2023-01-11 21:04:59 662

原创 27-Openwrt rtc htpdate system

rtc htpdate

2022-11-05 16:32:30 1478

原创 26-Openwrt 端口转发 dmz upnp

端口转发 dmz upnp

2022-06-14 17:42:55 5451

原创 25-Openwrt 访客网络添加

主人网络和访客网络相互隔离

2022-06-14 17:41:15 1841

原创 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

原创 23-Openwrt switch vlan配置

2022-05-28 10:13:25 8519 4

原创 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

MT6261芯片手册

MT6261芯片手册 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2018-04-13

Qt从零开始制作串口调试助手源代码(V1.0)-Creator_Ly

Qt从零开始制作串口调试助手源代码(V1.0)-Creator_Ly

2016-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除