sysfs linux?LinuX下载
linux设备驱动程序——sysfs用户接口的使用
自2.6版本开始,Linux内核引入了sysfs文件系统,用以将设备和驱动程序的信息呈现给用户空间,便于用户读取设备信息,并支持修改和调整。sysfs与ext系列、fat等文件系统不同,它是一个在启动时构建于内存中的虚拟文件系统,通常挂载于/sys目录下,因此在断电时信息不会保存,不用于存储用户数据。
sysfs的出现解决了procfs的混乱问题,procfs虽然能提供内核与用户系统信息的交互,但并未专门针对设备和驱动程序设计。内核开发者认为,鉴于驱动代码在内核代码中占比大且内容复杂,需要一个清晰的、独立的抽象接口来描述设备和驱动信息。sysfs的目录结构通常包含多个子目录,它们从不同角度描述设备信息,同一设备信息可能存在于多个子目录中。
通过ls/sys命令查看sysfs的内容时,会发现目录下的设备信息并非独立的,而是从不同角度呈现。例如,加载create_dev_node.ko模块后,可以在/sys目录下看到与该驱动相关的子目录。
在sysfs中添加描述文件的步骤包括在内核中创建文件。Linux设备模型的核心是使用Bus、Class、Device、Driver四个核心数据结构,将硬件设备及其驱动以树状结构进行归纳和抽象,方便内核统一管理。
在sysfs中添加属性则需要通过特定的接口操作kobject结构体。kobject和kset是Linux内核中用于管理设备信息的重要数据结构。kobject主要提供基本功能,kset则可视为kobject的集合。示例代码展示了如何创建kobject和kset对象,并添加属性,最后在sysfs中生成相应的目录结构。
通过编写示例代码kobject_create_with_attrs,可以进一步理解kobject、kset和sysfs的使用。此示例展示了如何为指示灯添加属性,通过sysfs创建目录和文件来控制指示灯的状态。
kobject和kset的注意事项包括如何正确添加属性、理解ktype和sysfs_ops结构体以及遵循官方文档的指导。学习Linux内核的途径包括官方文档、大牛的博客、技术交流群等资源。推荐Linux内核技术交流群【977878001】,提供学习资料和实战项目代码。
总之,sysfs文件系统在Linux内核中扮演着关键角色,通过它,内核与用户空间之间建立了高效的信息交互机制,使得设备管理和驱动程序的调试、维护变得更加直观和便捷。
linux查看磁盘挂载的三种方法
第一种方法:使用df命令,例如:
复制代码
代码如下:
orientalson:/home# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15213032 8043668 7169364 53%/
udev 514496 104 514392 1%/dev
/dev/mapper/vg_test-lv_test
511980 32840 479140 7%/home/mt
orientalson:/home#
上面显示的挂载点/home/mt和她挂载的卷不在同一行,使用shell脚本分析非常麻烦。
第二种方法:使用mount命令,mount-l,这种方法的缺陷在于没有卷的大小,但是挂载点和挂载的卷在同一行。例如:
复制代码
代码如下:
orientalson:/home# mount-l
/dev/sda2 on/ type reiserfs(rw,acl,user_xattr) []
proc on/proc type proc(rw)
sysfs on/sys type sysfs(rw)
debugfs on/sys/kernel/debug type debugfs(rw)
udev on/dev type tmpfs(rw)
devpts on/dev/pts type devpts(rw,mode=0620,gid=5)
securityfs on/sys/kernel/security type securityfs(rw)
/dev/mapper/vg_test-lv_test on/home/mt type reiserfs(rw) []
orientalson:/home#
第三种方法:查看文件/etc/mtab。原理是,每新挂载一个卷基本上都会更新这个文件的,那么自然可以通过这个文件来查看挂载点和挂职的卷。这种方法比mount-l稍微清晰了一点,但是,有时候是不可靠的。
复制代码
代码如下:
orientalson:/home# cat/etc/mtab
/dev/sda2/ reiserfs rw,acl,user_xattr 0 0
proc/proc proc rw 0 0
sysfs/sys sysfs rw 0 0
debugfs/sys/kernel/debug debugfs rw 0 0
udev/dev tmpfs rw 0 0
devpts/dev/pts devpts rw,mode=0620,gid=5 0 0
securityfs/sys/kernel/security securityfs rw 0 0
/dev/mapper/vg_test-lv_test/home/mt reiserfs rw 0 0
orientalson:/home#
上面已经说了基本上会更新这个文件,但是并不总是更新这个问题。如果挂载时使用了-n选项,那么/etc/mtab文件里面就不会新挂载卷的信息。
复制代码
代码如下:
orientalson:/home# umount/home/mt
orientalson:/home# mount-n/dev/vg_test/lv_test/home/mt
orientalson:/home# cat/etc/mtab
/dev/sda2/ reiserfs rw,acl,user_xattr 0 0
proc/proc proc rw 0 0
sysfs/sys sysfs rw 0 0
debugfs/sys/kernel/debug debugfs rw 0 0
udev/dev tmpfs rw 0 0
devpts/dev/pts devpts rw,mode=0620,gid=5 0 0
securityfs/sys/kernel/security securityfs rw 0 0
orientalson:/home#
linux sensors 温度原理
利用物质各种物理性质随温度变化的规律把温度转换为可用输出信号。sensors处理器核心平均温度在39°C左右。这两个温度都是正常的。新内核对IntelCPU的支持其实是很好的。
温度传感器是指能感受温度并转换成可用输出信号的传感器。温度传感器是温度测量仪表的核心部分,对于环境温度的测量非常准确,广泛应用于农业、工业、车间、库房等领域。按测量方式可分为接触式和非接触式两大类。
lmsensors简介
lmsensors是一款linux的硬件监控的软件,可以帮助我们来监控主板,CPU的工作电压,风扇转速、温度等数据。这些数据我们通常在主板的BIOS也可以看到。当我们可以在机器运行的时候通过lmsensors随时来监测着CPU的温度变化,可以预防和保护因为CPU过热而会烧掉。
支持许多子功能被添加到libsensors和传感器。Sysfs检测是固定后继续工作在即将到来的内核Sysfs实现改变。印刷的功率传感器是改进。