通过Linux设备映射器使用持久内存设备 IO Alignment Considerations 传统的存储设备例如HDD,SSD,nvme,SAN LUNS等以blocks为单位提供存储功能。...Block以字节为单位的可寻址存储单元。传统的硬盘的block大小是512字节。Newer设备通常是4K或者8K,但也可以选择逻辑/模拟的512字节的block。...持久内存设备可以通过虚拟内存系统访问,因此IO可以使用系统页大小进行对齐。位于CPU上的内存管理单元(MMU)决定可能的页面大小。Linux支持两种页大小: Ø 默认页大小,通常4KB。...通常称为页面中间目录(PMD),大页大小通常为2MB 页面大小是内存使用和速度之间的折中: Ø 大页造成空间浪费。...DDR和持久内存模块之间的容量差异相当大,由于上述原因,内存为TB级的系统上使用较小页面可能会对性能带来负面影响。
虽然 lshw 命令( 列出硬件(list hardware),读作 “ls hardware”)远不是每个人最先学会的 50 个 Linux 命令之一,但它可以提供很多系统硬件的有用信息。...注意其中有两个设备被列出了两次,所以我们看到的仍然是五个磁盘设备。...所有 设备,请坐稳了;你会得到一个包含的东西比你通常认为的“设备”要多得多的列表,下面是一个例子,这是一个“简短(short)”(信息很少)的列表: $ sudo lshw -short [sudo]...,并统计每个类别中的设备数量。...你会发现在没有使用 -short 选项的时候,每一个磁盘类设备都会有大约 12 行的输出,包括像是 /dev/sda 这样的逻辑名称,磁盘大小和种类等等。
其实早在之前有一篇关于字符设备驱动的,讲的也是驱动led,大家可以回顾一下:Linux笔记(13)| 字符设备驱动基础入门 Linux笔记(14)| 字符设备驱动基础入门(续) 有朋友可能会产生疑问,...在早期的Linux里面就是像上面那样做的,但是到后来设备越来越多,越来越复杂,维护起来非常不方便,于是发明了设备模型。 那么,设备模型是怎么一回事呢?...简单说设备模型就是让驱动代码分成两个部分,一部分是驱动,一部分是设备,驱动文件里有对设备的驱动,但是并不涉及具体硬件资源,硬件资源由设备文件提供,然后使用总线将两者联系起来。...设备里面主要是提供硬件的信息,驱动里面就是使用probe函数来执行具体的操作。...如果发现build目录不存在,可以使用命令 sudo apt-get install linux-headers-`uname -r` 如果安装失败可能需要先update一下。
Bcache简介 Bcache是Linux内核块设备层cache,支持多块HDD使用同一块SSD作为缓存盘。它让SSD作为HDD的缓存成为了可能。...注:Bcache是从Linux-3.10开始正式并入内核主线的,因此,要使用Bcache,需要将内核升级到3.10及以上版本才行。...bcache-tools的使用 使用磁盘作为Bcache磁盘前,请先确保磁盘是空的,或者磁盘中的数据无关紧要。...注销缓存盘 注销缓存前,请先确保当前缓存盘没有作为缓存使用,即通过lsblk看不到缓存磁盘下面的bcahe设备,如果当前磁盘正在使用,而进行注销操作,可能导致缓存盘的数据不能及时写入后端磁盘,造成数据丢失...Bcache使用之系统配置 配置/etc/fstab /etc/fstab文件保存着Linux系统启动过程中,使用的挂载配置,文件中的每一行都对应着系统中的一个挂载点,有关fstab文件的说明,在此不做介绍
三、设置系统默认的音量 3.1. 使用 alsamixer 图形界面手动设置 打开图形界面之后,按下键盘上的方向键即可设置音量。...使用aplay -l和arecord -l命令可以查看系统的录音设备列表和扬声器设备列表。 为了测试当前我在电脑上插入了一个USB声卡设备。...[USB PnP Sound Device], device 0: USB Audio [USB Audio] 子设备: 0/1 子设备 #0: subdevice #0 使用插入的USB声卡进行录音和放音...字段 开头的进行使用。...配置代码 在上面文件里写入下面配置代码即可生效,其中1表示表示使用的声卡编号。
存储结构与管理硬盘一、添加硬盘设备一、添加硬盘设备添加硬盘设备的操作思路:首先需要在虚拟机中模拟添加入一块新的硬盘存储设备,然后再进行分区、格式化、挂载等操作,最后通过检查系统的挂载状态并真实地使用硬盘来验证硬盘设备是否成功添加...Linux系统会自动把这个硬盘主分区抽象成/dev/sdb1设备文件[root@rhel ~]# parentprobe[root@rhel ~]# parentprobe[root@rhel ~]#...、挂载硬件设备一般的硬盘设备都是以“/dev/sd”UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备挂载硬件设备步骤1....[root@rhel ~]# mount -a 挂载所有在/etc/fstab中定义的文件系统2 [root@rhel ~]# blkid 使用blkid命令来查询设备UUID [root...其中,-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;-n 4参数代表使用4块硬盘来部署这个
可以由linux内核解析,uboot这样的bootloader也可以识别.dtb,有两种使用方式,一种是bootloader启动内核过程中会先读取dtb到文件中;第二种是把dtb和zImage打包在一起做成一个印象文件...字符串即可,Linux内核还约定设备名应写成形如[@]的形式,其中name就是设备名,最长可以是31个字符长度。...unit_address一般是设备地址,用来唯一标识一个节点 Linux中的设备树还包括几个特殊的节点,比如chosen,chosen节点不描述一个真实设备,而是用于firmware传递一些数据给OS...这样就可以实现类似函数调用的效果 3.KEY 在设备树中,键值对是描述属性的方式,比如,Linux驱动中可以通过设备节点中的”compatible”这个属性查找设备节点 inux设备树语法中定义了一些具有规范意义的属性...此外,还有一些Linux内核定义好的,一类设备通用的有默认意义的属性,这些属性一般不能被内核自动解析生成相应的设备信息,但是内核已经编写的相应的解析提取函数,常见的有 “mac_addr”,”gpio”
使用 yum 安装(安装 openssl 32 位版本号) yum –disablerepo=* –enablerepo=c6-media install openssl-devel-1.0.0-
Linux使用nmap工具扫描局域网设备,可扫描到IP、域名等信息 本文以Ubuntu 的docker容器来演示操作 1....使用nmap扫描局域网,并导出到文件 安装nmap工具 apt install nmap 扫描局域网并导出 nmap -sRn 10.42.0.* -oN out.txt 可以看到扫描出了局域网中的其他容器的
一般情况下直接mount 设备路径 目录路径,就可以了。...umount 设备名,就可以卸载这个设备了 使用lsblk -f可以查看挂载的设备,以及这些设备的文件系统。...,如果所被挂载的目录有文件数据,那么挂载完以后原来的数据就不见了,进入这个目录会进入我的移动硬盘,当卸载掉以后原来的文件又出现了。...挂载的时候那个目录必须存在,不存在会报错。...中保存的是自动挂载的目录,如果没有它系统肯定启动不起来,它把我安装linux系统的分区挂载到根目录/ ├─sda5 ext4 e297ae56-7c17-48ea-aac5-f26c1e5cad84
在Linux设备驱动之字符设备(一)中学习了设备号的构成,设备号的申请与释放。在Linux设备驱动之字符设备(二)中学习了如何创建一个字符设备,初始化,已经注册到系统中和最后释放该字符设备。...本节将结合前两节学到的知道,编写一个简单的字符设备驱动。最后总结一下字符设备驱动的模型。...字符设备驱动程序源码 #include linux/module.h> #include linux/kernel.h> #include linux/fs.h> #include linux/...# cat /proc/devices Character devices: .... 189 usb_device 237 char_dev 238 audio_dsp_mem 可以看到系统给分配的主设备号为...237,所以下一步就是根据主设备号创建设备节点。
Linux 常见主设备号设备清单# 在Linux系统中,设备通常通过主设备号和次设备号来标识。主设备号用于区分设备的大类,例如硬盘、字符设备等;次设备号用于在同一大类设备中区分不同的设备。...大多数用户和应用程序不会直接使用这个设备文件,而是使用下面的块设备文件。 /dev/nvme0n1:这是 NVMe 磁盘设备。它的主设备号是 259,表示它是一个块设备(由前面的 ‘b’ 表示)。...这个设备文件对应整个 NVMe 磁盘,你可以通过这个设备文件读写磁盘的任何位置,或者在其上创建文件系统。然而,如果磁盘已经被分区,通常会使用分区设备文件而不是这个设备文件。...Linux 源码定义# 设备号的分配在早期的 Linux 内核版本中是静态的,设备号的列表可以在内核源代码的 Documentation/admin-guide/devices.txt 文件中找到。...如果你需要知道特定设备的设备号,最准确的方式是在运行中的系统上查看 /dev 目录下的设备文件,例如使用 ls -l 命令。
通过上一节Linux设备驱动字符设备(一)了解了Linux设备驱动的分类,设备号的构成,设备号的申请以及设备号的释放。 在Linux内核中使用struct cdev结构来代码字符设备。...struct kobject kobj 内核的内嵌对象,是Linux设备驱动模型的重要成员。...第一个参数p代表加入到系统的字符设备的指针,第二个参数dev代表该设备的设备号,第三个参数count代表次设备的个数。 函数主要的部分kobj_map实现了如何将一个字符设备加入到系统的。...该部分在后面Linux字符设备框架一节会详细分析,目前只要明白主要流程即可。 字符设备的注销 当驱动程序需要从系统卸载的时候,就需要使用cdev_del释放字符设备占用的内存。...目前为止,已经了解了设备号,设备号的构成,字符设备分配,字符设备的初始化,字符设备的注册以及字符设备的注销。将在下一节通过一个简单的字符设备驱动程序来再次熟悉整个流程,然后总结字符设备驱动的编写模型。
Linux中设备驱动的分类 从上图可以看到Linux系统将各异的设备分为三大类:字符设备,块设备和网络设备。内核针对每一类设备都提供了对应驱动模型架构,包括基本的内核设施和文件系统接口。...网络设备: 网络设备不同于字符设备和块设备,它是面向报文的。同时在/dev目录下没有设备节点这样一说,在应用层是用户是通过API的socket函数来使用网络设备的。比如网卡等。...主设备号用来标识对于的设备驱动程序,而次设备号则由驱动程序使用,用来标识它所管理的若干同类设备。 设备号的表示 在linux系统中,设备号用dev_t表示。这是个32位的无符号整数。...随着Linux系统的演变,上述的主次设备号的分发可能在将来会发生变化,所以设备驱动程序开发者应该避免直接使用主次设备号所占的位宽来获得对于的主设备号或次设备号。...设备号释放 在驱动程序不使用的时候需要释放设备号,因为设备号也是系统的资源,不用的使用需要及时释放资源。已供其他设备使用。
一个开发板 上一节的最后我们讲到设备树的三大作用,其最后一个作用也是最重要的作用:设备信息集合。这一节结合设备信息集合的详细讲解来认识一下设备和驱动是如何绑定的。...我们看到一个开发板有很多的设备,这些设备是如何一层一层展开的呢?设备和驱动又是如何绑定的呢?我们带着这些疑问进入本节的主题。...各级设备的展开 内核启动的时候是一层一层展开地去寻找设备,设备树之所以叫设备树也是因为设备在内核中的结构就像树一样,从根部一层一层的向外展开,为了更形象的理解来看一张图: ?...下面我们按照 platform 设备、i2c 设备、spi 设备的顺序探究设备是如何一层一层展开的。...这样就完成了 spi 设备的注册。 各级设备的展开 学到这里相信应该了解设备的硬件信息是从设备树里获取的,如寄存器地址、中断号、时钟等等。
Linux 常见固定主次设备号设备清单# 在 Unix 或 Linux 系统中,一些设备的主次设备号是固定的。...下面是一些常见的设备及其固定的主次设备号: 设备前缀 设备路径 设备描述 主设备号 次设备号 c /dev/null 空设备,接收且丢弃所有输入,读取时立即返回EOF 1 3 c /dev/zero 零设备...1 1 c /dev/kmem 内核虚拟内存访问设备 1 2 c /dev/full 写入总是返回磁盘已满错误,读取返回null字节 1 7 请注意,上述设备号在大多数Unix和Linux系统上是固定的...,但这是由内核源代码中的设备注册逻辑决定的,因此在一些定制的或者旧版本的系统中可能会有所不同。...此外,设备文件是否存在以及其权限设置也可能会因系统配置和安全策略的不同而变化。 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
设备树的解析 setup_machine_fdt unflatten_device_tree 总结 设备树常用OF操作函数 查找节点的 OF 函数 查找父/子节点的 OF 函数 提取属性值的 OF 函数...其他常用的 OF 函数 设备树的解析 我们来看看内核是如何把设备树解析成所需的device_node。...Linux最底层的初始化部分在HEAD.s中,这是汇编代码,暂且不作过多讨论。...unflatten_device_tree(); } 这两个被调用的函数就是主要的设备树处理函数: setup_machine_fdt:根据传入的设备树dtb的根节点完成一些初始化操作。...unflatten_device_tree:对设备树具体的解析,这个函数中所做的工作就是将设备树各节点转换成相应的 struct device_node 结构体。 下面我们再来通过代码跟踪仔细分析。
Linux设备驱动概述 操作系统内核是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备。 设备驱动程序是操作系统内核和机器硬件之间的接口,系统调用是操作系统内核和应用程序之间的接口。...网络设备:网络是linux内核的一大功能模块,网络设备在内核总独立成为一类设备。提供专用API(socket编程)。...linux如何管理文件 Linux把设备纳入文件系统的范畴来管理。 每个设备在Linux系统上看起来都像一个文件,它们存放在/dev目录中,称为"设备节点"。...Linux下设备的属性 设备的类型:字符设备、块设备、网络设备; 主设备号:标识设备对应的驱动程序。...owner : 指向拥有该结构体的模块的指针,内核使用该指针维护模块使用计数。
领取专属 10元无门槛券
手把手带您无忧上云