11-Openwrt hotplug system

11-Openwrt hotplug system,第1张

要把 CONFIG_PACKAGE_kmod-gpio-button-hotplug=y 选项打开

"gpio-keys"和"gpio-keys-polled"就是两个platform设备,如下:

与以前的做法一样,device和driver,driver这边有了,device要么arch里面要么dts里面。

看下DTS里面的配置

上面的这些参数,在 gpio_keys_get_devtree_pdata 函数里面都会进行解析判断格式是否正确,错误在启动注册时就会直接提示错误信息。

另一种就是在arch里面注册,

在zkernel/3.10.49/arch/mips/mtk/dev-gpio-buttons.c里面提供了注册接口,调用即可。

在上面的button结构体里面要定义好对应的type和code,

这边故意将linux,code里面的数值写成数值,是为了让我们看到更底层的定义,在 gpio-button-hotplug.c 里面有如下定义,

在 include/dt-bindings/input/linux-event-codes.h 里面有如下定义,所以就知道最终的数值了。

驱动加载成功则会有如下信息:

当按键时,则触发 button_hotplug_event 函数(gpio-button-hotplug.c):调用 button_hotplug_create_event 产生uevent事件,调用 button_hotplug_fill_even 填充事件(JSON格式),并最终调用 broadcast_uevent 发出uevent广播信息,后由内核 netlink_broadcast 函数(linux-3.10.49/net/netlink/af_netlink.c)

上述广播,被procd进程中的hotplug_handler (procd/plug/hotplug.c) 收到,并根据etc/hotplug.json中预先定义的JSON内容匹配条件,定位到对应的执行函数,具体为:

最终会执行/etc/rc.button/里面的对应的脚本,如reset/power,脚本的名字要跟button_map结构里面的一致。

内核检测到WAN口变化后会创建hotplug消息(broadcast_uevent),发送给procd,再转发到对应的模块

发出后就会触发以下脚本,在脚本里面添加我们需要的内容

vim /etc/hotplug.d/phy/00-wan

在zrouter/zpackages/zihome/utils/zdetect/src/zdetect.c里面会发送hotplug event当网络变化的时候:

14.07/package/base-files/files/etc/hotplug.d/inet/00-inet

14.07/package/base-files/files/sbin/zihome_led

每次网络接口启动(up)或者关闭(down)的时候,所有在/etc/hotplug.d/iface/目录中的脚本都会以字母顺序执行。根据一个不成文的规则,会在每个脚本的前面加上一个数字前缀来设置正确的运行顺序。这就是为什么脚本名称都像:/etc/hotplug.d/iface/<nn>-<scriptname>的原因。

https://blog.csdn.net/vivianliulu/article/details/79629836

1. 前言

内核是 *** 作系统的核心组件。 它管理系统的资源,是计算机硬件和软件之间的桥梁。

您可能因多种原因需要确切知道GNU / Linux *** 作系统上运行的内核版本。 也许您正在调试与硬件相关的问题,或者了解影响旧内核版本的新安全漏洞,并且您想知道您的内核是否易受攻击。 无论是什么原因,从命令行确定Linux内核版本都非常容易。

在本教程中,我们将向您展示几种不同的方法,以找出系统上运行的Linux内核版本。

怎么查看Linux内核版本

2. 使用`uname`命令查看Linux内核版本

uname命令显示多个系统信息,包括Linux内核体系结构,名称版本和发行版。

要找出系统上正在运行的Linux内核版本,请输入以下命令:

输出结果:

Linux 3.10.0-957.12.2.el7.x86_64 x86_64

3 - 内核版本.

10 - 主修订版本.

0-957 - 次要修订版本.

12 - 补丁版本.

使用uname命令查看Linux内核版本

3. 使用`hostnamectl`命令查看内核版本

hostnamectl实用程序是systemd的一部分,用于查询和更改系统主机名。 它还显示Linux发行版和内核版本:

Static hostname: CentOS7.linuxrumen.com

Icon name: computer-vm

Chassis: vm

Machine ID: 20c27040135a4d46b2d3d07180f37303

Boot ID: 2f495af0684e4adfb34f0366f2567460

Virtualization: vmware

Operating System: CentOS Linux 7 (Core)

CPE OS Name: cpe:/o:centos:centos:7

Kernel: Linux 3.10.0-957.12.2.el7.x86_64

Architecture: x86-64

使用以下命令只显示当前内核版本:

使用hostnamectl命令查看内核版本

4. 通过查看/proc/version文件确认内核版本

/proc目录包含虚拟文件,其中包含有关系统内存,CPU内核,已安装文件系统等的信息。有关正在运行的内核的信息存储在/proc/version虚拟文件中。

结合cat查看文件内容:

输出结果如下:

Linux version 3.10.0-957.12.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Tue May 14 21:24:32 UTC 2019

使用hostnamectl命令查看内核版本

5.结论

我们已经向您展示了如何从命令行查找在您的系统上运行的Linux内核的版本。 这些命令适用于所有流行的Linux发行版,包括Debian,Red Hat,Ubuntu,Arch Linux,Fedora,CentOS,Kali Linux,OpenSUSE,Linux Mint等。

https://www.linuxrumen.com/rmxx/1217.html

centos7uefi升级内核显示器无法正常显示桌面,gnome-tweak-tool找找看是不是关了什么东西。

在使用Docker时,发现其对Linux内核版本的最低要求是3.10(这也刚好是CentOS7.2的内核版本),但是在这个版本上有部分功能无法实现。目前Linux内核已经发布到4.X(可以随时在Linux内核官网查看当前版本),为了使用最新版本的内核,只好在安装CentOS7后对内核进行升级。

显示器(display,screen)是属于电脑的I/O设备,即输入输出设备。它是一种将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。它可以分为CRT、LCD等多种类型。显示器即电脑屏幕(ComputerScreen/Display)。显示器接收电脑的信号并形成图像,作用方式如同电视接收机。有些电脑屏幕采用液晶显示。电脑屏幕又称视觉显示器。分辨率(Resolution)就是指构成图像的像素和,即屏幕包含的像素多少。它一般表示为水平分辨率(一个扫描行中像素的数目)和垂直分辨率(扫描行的数目)的乘积。如1920×1080,表示水平方向包含1920像素,垂直方向是1080像素,屏幕总像素的个数是它们的乘积。分辨率越高,画面包含的像素数就越多,图像也就越细腻清晰。显示器的分辨率受显示器的尺寸、(显像管点距)、电路特性等方面影响。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7243804.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存