openwrt-看门狗watchdog

article/2025/9/27 10:41:57

一、硬件watchdog和软件watchdog
Linux内核不仅为各种不同类型的watchdog硬件电路提供了驱动,还提供了一个基于定时器的纯软件watchdog驱动,软件watchdog基于内核的定时器实现,当内核或中断出现异常时,软件watchdog是无法复位系统,由于硬件电路设计无看门狗电路,只能选择软件watchdog,但是无法完全解决目前系统长时间运行偶尔宕机的问题,后续只能增加硬件设计,再从软件层面解决问题。
二、开启内核软件看门狗
make kernel_menuconfig — 进入内核配置界面:
输入 / 检索 watchdog
在这里插入图片描述
高通芯片ipq40XXX选择QCOM watchdog
在这里插入图片描述
2、重新编译
会在/dev/下生成/dev/watchdog和/dev/watchdog0,ps命令可以找到一个watchdogd的内核守护线程
在这里插入图片描述
3、驱动代码分析:
生成watchdogd线程和字符设备驱动/dev/watchdog驱动代码位置:linux/drivers/watchdog/watchdog_dev.c,

int __init watchdog_dev_init(void)
1127 {
1128     int err;
1129     struct sched_param param = {.sched_priority = MAX_RT_PRIO - 1,};
1130 
1131     watchdog_kworker = kthread_create_worker(0, "watchdogd");//在CPU0上创建一个watchdogd线程
1132     if (IS_ERR(watchdog_kworker)) {
1133         pr_err("Failed to create watchdog kworker\n");
1134         return PTR_ERR(watchdog_kworker);
1135     }
1136     sched_setscheduler(watchdog_kworker->task, SCHED_FIFO, &param);
1137 
1138     err = class_register(&watchdog_class);
1139     if (err < 0) {                                                                                                                                                                                     
1140         pr_err("couldn't register class\n");
1141         goto err_register;
1142     }
1143 
1144     err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog");//字符设备号注册:内核自动分配主设备号
1145     if (err < 0) {
1146         pr_err("watchdog: unable to allocate char dev region\n");
1147         goto err_alloc;
1148     }
1149 
static int watchdog_cdev_register(struct watchdog_device *wdd)962 {963     struct watchdog_core_data *wd_data;964     int err;965 966     wd_data = kzalloc(sizeof(struct watchdog_core_data), GFP_KERNEL);967     if (!wd_data)968         return -ENOMEM;969     mutex_init(&wd_data->lock);970 971     wd_data->wdd = wdd;972     wdd->wd_data = wd_data;973 974     if (IS_ERR_OR_NULL(watchdog_kworker)) {975         kfree(wd_data);976         return -ENODEV;977     }978 979     device_initialize(&wd_data->dev);980     wd_data->dev.devt = MKDEV(MAJOR(watchdog_devt), wdd->id);981     wd_data->dev.class = &watchdog_class;982     wd_data->dev.parent = wdd->parent;983     wd_data->dev.groups = wdd->groups;984     wd_data->dev.release = watchdog_core_data_release;985     dev_set_drvdata(&wd_data->dev, wdd);986     dev_set_name(&wd_data->dev, "watchdog%d", wdd->id);987 988     kthread_init_work(&wd_data->work, watchdog_ping_work);989     hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);990     wd_data->timer.function = watchdog_timer_expired;991 992     if (wdd->id == 0) {993         old_wd_data = wd_data;994         watchdog_miscdev.parent = wdd->parent;995         err = misc_register(&watchdog_miscdev);

二、openwrt提供了watchdog的应用程序
通过make menuconfig搜索watchdog
在这里插入图片描述
经过编译会生成watchdog的应用程序,可以通过命令watchdog -t 10 -T 4 -F /dev/watchdog ,执行喂狗的操作,watchdog -help可以查看帮助,但是当用了kernel的内核软件watchdog以后,运行此命令会提示资源繁忙,主要是因为watchdogd线程使用了/dev/watchdog,如果想自己单独使用应用程序执行喂狗操作,需要改写驱动,只注册字符设备驱动,不生成watchdog线程即可。


http://chatgpt.dhexx.cn/article/Z9wDjpr2.shtml

相关文章

wifidog认证流程(图文版)

学习使用wifidog一段时间了&#xff0c;觉得这玩意真的不错&#xff0c;虽然有些代码写的不够严谨&#xff0c;运行效率不够高&#xff0c;但是少量人数情况下实现portal是很好的方案。 下面是我摘自一个博客的内容和apfree写的文档中的一部分发上来的&#xff0c;希望能对研究…

wifidog 认证

首先简单介绍一下什么是Portal认证&#xff0c;Portal认证&#xff0c;通常也会叫Web认证&#xff0c;未认证用户上网时&#xff0c;设备强制用户登录到特定站点&#xff0c;用户可以免费访问其中的服务。当用户需要使用互联网中的其它信息时&#xff0c;必须在门户网站进行认证…

Wifidog入门教程

曾经撸了两台K2路由器&#xff0c;刷成了华硕固件。以前就比较好奇什么肯德基&#xff0c;星巴克那种连上wifi就弹出一个页面进行验证什么的&#xff0c;是怎么弄的&#xff0c;昨天发现这个华硕固件里有这个功能&#xff0c;就是wifidog。 首先来看截图&#xff1a; 这里打开w…

wifidog安装以及自写wifidog认证服务器

前言 最近在做关于路由器认证相关的工作&#xff0c;由于需求&#xff0c;认证的过程同往常的网页认证有稍许不同&#xff0c;因此&#xff0c;自己开始尝试编写wifidog的认证服务器&#xff0c;查阅了中外的一些资料&#xff0c;现将经验总结一下。 Wifidog的原理 下图是在…

wifidog浏览器弹窗认证 — 基于OpenWRT路由器

一、移植 wifidog功能 1、功能介绍 wifidog是一种能够实现让路由器局域网设备(包括wifi连接和网线连接设备)在上网前先进行 portal认证的工具&#xff0c;主要应用于手机端上网认证&#xff0c;手机在连接wifi后会自动打开浏览器并跳转出 login界面&#xff0c;用户在该页面上…

WiFidog简介

WiFidog简介 WIFIdog是一种新的认证方式&#xff0c;这种认证方式的优势在于安全性高&#xff0c;不容易被破解验证。 客户端发出初始化请求&#xff0c;比如访问www.baidu.com网关的防火墙规则将这个请求重定向到本地网关的端口上。这个端口是Wifidog监听的端口。Wfidog提供一…

安装sysbench

一 安装依赖包 yum install gcc gcc-c autoconf automake libtool mysql-devel vim -y #验证是否安装 rpm -q --qf %{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n gcc \ gcc-c \ autoconf \ automake \ libtool \ mysql-devel \ vim 二 安装 cd /opt && git clon…

sysbench mysql_通过sysbench工具实现MySQL数据库的性能测试

1.背景 sysbench是一款压力测试工具&#xff0c;可以测试系统的硬件性能&#xff0c;也可以用来对数据库进行基准测试。sysbench 支持的测试有CPU运算性能测试、内存分配及传输速度测试、磁盘IO性能测试、POSIX线程性能测试、互斥性测试测试、数据库性能测试(OLTP基准测试)。目…

sysbench 压测 mysql_sysbench压测

一&#xff1a;sysbench的安装遇到的几个问题&#xff1a; 解决办法&#xff1a; yum install automake 解决办法&#xff1a;yum install libtool sysbench 的一些常用参数低版本和高版本是有点区别的大家在测试的时候稍微注意一下&#xff1a; 以下这个版本是0.5版本的但是我…

Sysbench常用命令

1 Sysbench 安装 requirements yum -y install make automake libtool pkgconfig libaio-devel# For MySQL support, replace with mysql-devel on RHEL/CentOS 5yum -y install mariadb-devel openssl-devel mysql-devel# For PostgreSQL supportyum -y install postgresql-…

sysbench性能测试

sysbench的官网地址是&#xff1a;http&#xff1a;//sysbench.sourceforge.net Step 1&#xff1a; 下载安装&#xff1a; sysbench-0.5.tar.gz 解压后展开目录如下 [rootlocalhost mnt]# cd sysbench-0.5 [rootlocalhost sysbench-0.5]# ls aclocal.m4 autom4te.cache c…

mysql sysbench_MySQL sysbench基准测试

一、基准测试 参考《高性能 MySQL》第二章。 二、Sysbench sysbench 是开源的跨平台多线程基准测试工具&#xff0c;主要用于测试各种不同系统参数下的 CPU/内存/线程/IO/数据库等方面的性能&#xff0c;数据库目前支持 MySQL/Oracle/PostgreSQL。具体的参数设置&#xff0c;应…

sysbench mysql图表_sysbench_mysql

ref 测试 当执行下面这个sysbench测试mysql的时候&#xff0c;你不知道的可能可能是&#xff1a; 这到底是在测试读写&#xff1f;还是 读&#xff1f; 答&#xff1a; 只读 --num-threads12 啥意思&#xff1f; 答&#xff1a;就是说有12个线程在同时链接 你可以看到&#xff…

性能测试之sysbench

本期是写的测试mysql的性能测试&#xff0c;本人也是第一次接触mysql的性能&#xff0c;拿到这个任务时也是多方1查询资料&#xff0c; sysbench压力测试工具简介&#xff1a; sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具&#xff0c;可以用来进行CPU、内存…

sysbench数据库压测工具详解与实战

sysbench是一个基于LuaJIT脚本的多线程基准测试工具。2004年由Peter Zaitsev&#xff08;Percona公司创始人&#xff09;开发&#xff0c;在其0.5版本中可以使用Lua脚本实现OLTP测试。2016年重构了sysbench代码&#xff0c;并在2017年2月针对新的硬件环境发布了1.0版本&#xf…

sysbench 介绍

sysbench介绍 参考博客&#xff1a; sysbench - 老僧观天下 - 博客园 sysbench 压测 详解_俗人linux_51CTO博客 sysbench工具使用 - ZhenXing_Yu - 博客园 |QQ:327488733qq.com sysbench使用指南 - AhaoMu - 博客园 MySql性能测试工具-sysbench_oahz4699092zhao的专栏-CS…

Linux性能优化(二)——sysbench压力测试工具

一、sysbench简介 1、sysbench简介 sysBench是一个模块化的、跨平台、多线程基准测试工具&#xff0c;主要用于评估测试各种不同系统参数下的数据库负载情况。sysbench提供如下测试&#xff1a; &#xff08;1&#xff09;CPU性能 &#xff08;2&#xff09;磁盘IO性能 &…

CScope for programmer

http://bbs.sjtu.edu.cn/bbs0an,path,%2Fgroups%2FGROUP_3%2FGNULinux%2FSoftware%2FD95E89182%2FD5277E56B.html8、Cscope 的使用这下更厉害了, 用Cscope自己的话说 - "你可以把它当做是超过频的ctags", 其功能和强大程度可见一斑吧, 关于它的介绍我就不详细说了, …

CSP安全策略

介绍 内容安全策略 (CSP) 是一个附加的安全层&#xff0c;用于帮助检测和缓解某些类型的攻击&#xff0c;包括跨站脚本 (XSS) 和数据注入等攻击。 这些攻击可用于实现从数据窃取到网站破坏或作为恶意软件分发版本等用途。 启动方式 1. 浏览器客户端启动 <meta http-equi…

seccompptcl(pwn出题)

详细细节看这篇 https://www.anquanke.com/post/id/208364#h2-2 沙箱可以禁用一些系统调用&#xff0c;还是比较常见的感觉。 seccomp 下面这段代码用seccomp沙箱来禁用 安装相应库 sudo apt-get install libseccomp-dev具体参数啥的就不多讲了。。。看大佬的博客就行。 …