Linux设备管理——sysfs、udev】的更多相关文章

What is the use of Sysfs sysfs is a pseudo file system provided by the Linux kernel that exports information about various kernel subsystems, hardware devices, and associated device drivers from the kernel's device model to user space through virtual…
linux发展第一阶段 01devfs(linux2.6之前) 02udev(用户空间) 03sysfs(linux2.6之后,描述设备属性) linux发展第二阶段 01sysfs+udev(udev用户空间) 02devfs(内核空间) 03proc:在用户态检查内核状态的机制 各个内容简介: 01 sysfs特性: 同比devfs而言:linux2.6之后 作用:表示设备结构,属性 在驱动中用到函数: /*------------------------------------------…
我们在Linux设备管理(一)_kobject, kset,ktype分析一文中介绍了kobject的相关知识,在Linux设备管理(二)_从cdev_add说起和Linux设备管理(三)_总线设备的挂接举例介绍了内核中是如何进行设备管理的,并在Linux设备管理(四)_从sysfs回到ktype一文中结合sysfs机制和kobject对内核的设备管理机制进行一定深度的讨论,从中可以看出,字符设备的cdev本身的kobject是没有初始化的,也没有在sysfs中创建任何目录,平台设备是将设备挂接…
sysfs是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内核对象(kernel object)的数据.属性到用户空间.与同样用于查看内核数据的proc不同,sysfs只关心具有层次结构的设备信息,比如系统中的总线,驱动以及已经加载的模块等,而诸如PID等信息还是使用proc来管理.本质上,sysfs文件的层次结构就是基于内核中kset与kobject逻辑结构来组织的.从驱动开发的角度,sysfs为我们提供了除了虚拟字符设备的read/write/ioctl和proc系统之外的另外…
转自:https://www.cnblogs.com/xiaojiang1025/archive/2016/12/21/6202298.html sysfs是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内核对象(kernel object)的数据.属性到用户空间.与同样用于查看内核数据的proc不同,sysfs只关心具有层次结构的设备信息,比如系统中的总线,驱动以及已经加载的模块等,而诸如PID等信息还是使用proc来管理.本质上,sysfs文件的层次结构就是基于内核中kset与…
我在Linux字符设备驱动框架一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了cdev结构,注册了驱动的操作方法集,最后进行cdev_add()的时候,究竟是将哪些内容告诉了内核,内核又是怎么管理我的cdev结构的,这就是本文要讨论的内容.我们知道,Linux内核对设备的管理是基于kobject的(参见Linux设备管理(一)_kobject_kset_kobj_type),这点从我们的…
Linux内核大量使用面向对象的设计思想,通过追踪源码,我们甚至可以使用面向对象语言常用的UML类图来分析Linux设备管理的"类"之间的关系.这里以4.8.5内核为例从kobject,kset,ktype的分析入手,进而一探内核对于设备的管理方式 container_of宏 这个宏几乎是linux数据结构的基础,Linux中的链表与传统的链表不同,其链表的节点本身并不包含任何数据,任何想要插入到链表的数据只需要包含一个事先写好的节点 //include/linux/types.h 1…
扒完了字符设备,我们来看看平台总线设备,平台总线是Linux中的一种虚拟总线,我们知道,总线+设备+驱动是Linux驱动模型的三大组件,设计这样的模型就是将驱动代码和设备信息相分离,对于稍微复杂一点的驱动,都要使用这种结构,我在"Linux设备管理(一)_kobject, kset,kobj_type分析"一文中提到过将一个设备或驱动挂载到总线就是将这个设备或驱动的kobject挂接到相应的总线kset下的设备kset或驱动kset中,本文就扒一扒内核中注册一个平台设备的源码,验证一下…
主设备号和次设备号 一个字符设备或者块设备都有一个主设备号和次设备号.主设备号和次设备号统称为设备号.主设备号用来表示一个特定的驱动程序.次设备号用来表示使用该驱动程序的其他设备.(主设备号和控制这类设备的驱动是一一对应的)通俗的说就是主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动…
转自:http://blog.csdn.net/skyflying2012/article/details/11783847 "sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel data structures, their attributes, and the linkages between them to userspace.” --- documen…
是一小部分例子,如果你的系统采用了udev方式,那你应该可以看到更多的规则.如果你想修改设备的权限或者创建信的符号连接,那么你需要熟读这些规则,特别是要仔细注意你修改的那些与之相关的设备. 修改你的udev配置 在修改udev配置之前,我们一定要仔细,通常的考虑是:你最好不要修改系统预置的那些规则,特别不要指定影响非常广泛的配置,比如上面例子中的第一行.不正确的配置可能会导致严重的系统问题或者系统根本就无法这个正确的访问设备. 而我们正确的做法应该是在/etc/udev/rules.d/下创建一…
转:http://www.360doc.com/content/11/0415/21/1317564_109924863.shtml 早期的linux的/dev目录下有一大堆设备文件,不管你的主机上是否有这些设备,相当于提供一个标准接口,比如 /dev/sda 一般表示 SISC 盘第一块磁盘,但你主机上即使没有这种磁盘,/dev/sda还是存在于是,这就有个问题:/dev/下会有很多实际上并不需要的文件,尽管这些文件占用不了多少空间(都是一字节的大小) 后来linux只在/dev上保留一些必要…
最开始的时候,linux预先定义了很多种设备文件,(不管这种设备是否存在), 在/dev/下 但是即使这些设备文件不存在, 这样/dev下的文件就会很多, 而且像upan在插拔顺序不同, 所对应的映射文件也不相同. 于是, 在后来的linux内核中 就只保留了一些必要的设备文件, 如:/dev/console表示控制台文件. 而其他的设备文件, 由udev在系统启动时检测并加载, 比如, 如果扫描到你有增加一个scsi设备(如U盘), 就会在 /dev下增加一个设备文件: .dev/sda, 就…
参考:Oracle Linux 7: Udev rule for ASM Cannot Place the ASM Disk in a Directory under /dev (Doc ID 2217951.1) 适用于: Linux OS - Version Oracle Linux 7.0 and laterOracle Cloud Infrastructure - Version N/A and laterLinux x86-64 现象: asm磁盘配置在/dev/asm下,用以下的ud…
sysfs 文件系统有通常的树结构, 反映它代表的 kobjects 的层次组织. 但是内核中对象 间的关系常常比那个更加复杂. 例如, 一个 sysfs 子树 (/sys/devices )代表所有的系 统已知的设备, 而其他的子树( 在 /sys/bus 之下 )表示设备驱动. 这些树, 但是, 不代 表驱动和它们所管理的设备间的关系. 展示这些附加关系需要额外的指针, 指针在 sysfs 中通过符号连接实现. 创建一个符号连接在 sysfs 是容易的: int sysfs_create_l…
在ubuntu中怎样启动类似windows中的 设备管理器 sudo apt-get install hardinfo lspci sudo lshw everestubuntu下的"设备管理器"#1 帖子 由 gezhaowan » 2010-07-23 14:56HardInfo 可以用来采集系统硬件和操作系统方面的相关信息.执行标准检查程序,并能够生成可供打印的HTML或者纯文本格式报告.目前程序能够识别 PCI.ISA PnP.USB.IDE.SCSI.串口和并口设备. 在Ub…
对于使用ASM管理的磁盘来说,需要一种能够用于一致性标识磁盘设备及其正确的所属关系和权限的手段.在Linux系统中,可以使用ASMLib来执行这项任务,但是这样做的缺点是在操作系统上增加了额外的一层,从而导致了管理的复杂性,使用ASMLib配置ASM的方式现在已经不再流行. 一种替代的解决方案是:使用Linux设备管理器“udev”来完成这项任务.自2.6内核开始,就可以使用udev协助管理系统中各设备名称,udev能动态地在/dev目录里产生自定义的.标识性强的设备文件或设备链接.本文概述了如…
Linux调试文件系统 1.1.procfs 早期的Linux内核中,内核通过procfs输出调试信息,可以在用户态通过读写procfs节点与内核进行交互,用来获取处理器.内存.设备驱动.进程等各种信息.但是随着Linux的普及,Linux驱动开发者往procfs中添加了大量的设备驱动相关的节点,因此,sysfs应运而生. mount -t proc nondev /procfs 1.2.sysfs sysfs基于kobject实现,而kobject是Linux内核设备驱动模型的基础,因此,sy…
    Linux 下对设备的管理方式主要有/dev和sysfs两种,前者是将设备注册为设备节点放入/dev目录下,而后者是在linux2.6内核后引入的新的文件系统. ➤/dev方式 关于/dev的管理方式,也经历了几代,下面介绍/dev管理方式的发展: ➣静态/dev文件:        在Linux中,老的设备管理方式是将设备通过设备节点放入/dev目录下,每个设备节点是/dev根目录下的一个文件,那么.如何区分这些设备节点,为了对这些设备节点进行命名,Linux通过主次设备号来指定不同的…
自2.6 核心开始,就可以使用udev 协助管理系统中各设备名称.例如,磁盘设备排序.网卡设备排序等.udev能动态地在/dev 目录里产生自定义的.标识性强的设备文件或设备链接.本文即以红旗Asianux 3.0 平台,给新加载的U盘设备自定义一个链接为例进行简要说明. 一.关于udev2.4 内核使用devfs(设备文件系统)在设备初始化时创建设备文件,设备驱动程序可以指定设备号.所有者.用户空间等信息,devfs 运行在内核环境中,并有不少缺点:可能出现主/辅设备号不够,命名不灵活,不能指…
裸设备概述 裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备.裸设备可以绑定一个分区,也可以绑定一个磁盘.字符设备:对字符设备的读写不需要通过OS的buffer.它不可被文件系统mount.块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中. 这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux 4下做多可以绑定81Array2个裸设备.但是在linux下,最多只能有255个分区…
UDEV SCSI Rules Configuration for ASM in Oracle Linux 5 and 6 For Oracle Automatic Storage Manager (ASM) to use disks, it needs to be able to identify the devices consistently and for them to have the correct ownership and permissions. In Linux you c…
http://www.ibm.com/developerworks/cn/linux/l-cn-udev/[root@localhost ~]# uname -r2.6.32-431.el6.x86_64udev-147-2.51.el6.x86_64此版本的udev变动较大 什么是 udev?udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具.udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev…
PF_NETLINK应用实例NETLINK_KOBJECT_UEVENT具体实现--udev实现原理 相对于linux来说,udev还是一个新事物.然而,尽管它03年才出现,尽管它很低调(J),但它无疑已经成为linux下不可或缺的组件了.udev是什么?它是如何实现的?最近研究Linux设备管理时,花了一些时间去研究udev的实现.    udev是什么?u 是指user space,dev是指device,udev是用户空间的设备驱动程序吗?最初我也这样认为,调试内核空间的程序要比调试用户空…
相对于linux来说,udev还是一个新事物.然而,尽管它03年才出现,尽管它很低调(J),但它无疑已经成为linux下不可或缺的组件了.udev是什么?它是如何实现的?最近研究Linux设备管理时,花了一些时间去研究udev的实现.    udev是什么?u 是指user space,dev是指device,udev是用户空间的设备驱动程序吗?最初我也这样认为,调试内核空间的程序要比调试用户空间的程序复杂得多,内核空间的程序的BUG所引起的后果也严重得多,device driver是内核空间中…
参考转载博客:http://blog.chinaunix.net/uid-26833883-id-4369060.html https://www.cnblogs.com/xiaojiang1025/p/6181833.html http://blog.csdn.net/yueqian_scut/article/details/45938557 http://www.cnblogs.com/geneil/archive/2011/12/03/2272869.html http://blog.cs…
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, 驱动开发中设计到的硬件: * 数字电路知识 * ARM硬件知识 * 熟练使用万用表和示波器 * 看懂芯片手册和原理图 4, linux内核源代码目录结构: * arch/: arch子目录包括了所有和体系结构相关的核心代码.它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel c…
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和Linux API进行应用软件的编写: 从事这方面的开发工作,主要需要学习:符合linux posix标准的API函数及系统调用,linux的多任务编程技巧:多进程.多线程.进程间通信.多任务之间的同步互斥等,嵌入式数据库的学习,UI编程:QT.miniGUI等. (2)Linux固件工程师(Fir…
1.什么是udev udev--就是动态设备管理 udev 能够处理设备事件.管理设备文件的权限.在/dev目录中创建额外的符号链接.重命名网络接口,等等. 内核通常仅根据设备被发现的先后顺序给设备文件命名,因此很难在设备文件与物理硬件之间建立稳定的对应关系.而根据设备的物理属性或配置特征创建有意义的符号链接名称或网络接口名称,就可以在物理设备与设备文件名称之间建立稳定的对应关系. udev守护进程(systemd-udevd.service(8) Ubuntu中ps -aux | grep s…
示例定义的 mytest或者test 用户 mygroup 用户组 cat /etc/group 查看组 groupname:x:groupId:其他成员 组名:x(加密):组ID:组成员cat /etc/passwd 查看用户 用户名:x:用户ID:组ID:shell解析器 useradd mytest 添加用户 passwd mytest 设置密码 groupadd mygroup 添加组groupdel mygroup 删除用户组 示例:groupadd mygroup 添加组userad…