㈠ 如何使用Linux lsblk命令列出块设备信息
lsblk命令默认情况下将以树状列出所有块设备:lsblk
默认选项不会列出所唯高有空设备。要查看这些空设备:lsblk -a
只获取指定设备的信息:lsblk -b /dev/sda
以列表形式列出不带头的设备:lsblk -nl
列出SCSI设备:lsblk -S
其它的参指好尺袜做数作用可以看手册:man lsblk
㈡ linux中什么是块设备和字符设备
块设备是I/O设备中的一类,是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在设备的任意位置读取一定长度的数据。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立胡橡于其它块而读写。
字符设备是在I/O传输裤棚旁过程中以字符为单位进行传输的设备。在linux系统中,字符设备以特和改别文件方式在文件目录树中占据位置并拥有相应的结点。结点中的文件类型指明该文件是字符设备文件。可以使用与普通文件相同的文件操作命令对字符设备文件进行操作。
(2)linux如何访问块设备扩展阅读:
在大多数的linux操作系统中,块设备只支持以块为单位的访问方式,如磁盘等。KYLIN支持以字符方式来访问块设备,即支持以字符为单位来读写磁盘等块设备。所以在/dev目录中的块设备,如磁盘等,均以字符设备的外观出现。
当一台字符型设备在硬件上与主机相连之后,必须为这台设备创建字符特别文件。linux操作系统的mknod命令被用来建立设备特别文件。
参考资料来源:
网络——块设备
网络——字符设备
㈢ 简述LINUX驱动中字符设备和块设备的区别
在Linux驱动中,字符设备和块设备是两种不同的设备类型,它们则虚的区别主要在于数据传输的方式和设备访问的方式。
字符设备
字符设备是一种按字符为单位进行数据传输的设备,例如串口、键盘、鼠标等。它们通常以流的形式传输数据,每次读写操作都只能读写一个字符。字符设备的访问方式是困磨随机访问,即可以在任何位置读孙尺燃写数据。在Linux中,字符设备通常使用文件系统的方式进行访问,即将字符设备映射为文件,然后通过文件操作函数进行访问。
块设备
块设备是一种按块为单位进行数据传输的设备,例如硬盘、U盘等。它们通常以块的形式传输数据,每次读写操作可以读写多个块。块设备的访问方式是顺序访问,即必须按照块的顺序进行读写操作。在Linux中,块设备通常使用块设备驱动程序进行访问,驱动程序将块设备映射为块设备文件,然后通过块设备操作函数进行访问。
总的来说,字符设备和块设备的主要区别在于数据传输的方式和设备访问的方式。字符设备以字符为单位进行数据传输,支持随机访问;块设备以块为单位进行数据传输,支持顺序访问。在Linux驱动中,字符设备和块设备通常使用不同的驱动程序进行访问。
㈣ linux里什么是块设备
分类: 电脑/网团厅络 >> 操作系统/系统故障
解析:
所谓块设备是指对其信息的存取以“块”为单位,如通常的光盘、硬磁盘、软磁盘、磁带等,块长取512字节或1024字节或4096字节。块设备可以直接通过块设备特别文件来访问。为了提高数据传输效率,块设备驱动程序内部采用块缓冲枯州技术。
盘、带设备既可采用块方式,又可采用字符方式访问,因此这类设备没或蔽既是块设备又是字符设备。正因为如此,在上节的字符设备开关表中配备了一套用于盘、带的字符驱动程序。在概念上,我们倾向于一台设备以一种类型进行访问,例如对磁带机而言,采用块方式即把磁带机划入块设备类型 。如果对磁带机采用字符方式,尽管可行但存储等量的数据要比块方式占用更多的磁带空间,实际上是很不合算的。
㈤ linux中什么是块设备和字符设备
| 字符设备
字符设备是能够像字节流一样被访问的设备,当对字符设备发出读写请求,相应的IO操作立即发生。Linux系统中很多设备都是字符设备,如字符终端、串口、键盘、鼠标等。在嵌入式Linux开发中,接触最多的就是字符设备以及驱动。
| 块设备
块设备是Linux系统中进行TO操作时必须以块为单位进行访问的设备,块设备能够安装文件系统。块设备驱动会利用一块系统内存作为缓冲区,因此对块设备发出读写访问,并不一定立即产生硬件I/O操作。Linux系统中常见的块设备有如硬盘、软驱等等。
| 网络设备
网络设备既可以是网卡这样的硬件设备,也可以是一个纯软件设备如回环设备。网络设备由Linux的网络子系统驱动,负责数据包的发送和接收,而不是面向流设备,因此在Linux系统文件系统中网络设备没有节点。对网络设备的访问是通过socket调用产生,而不是普通的文件操作如
open/closc和 read/write等。
㈥ linux内核怎么访问设备节点
设备节复点代表是每个机算机硬件,制那个软件要用那个硬件,它就会打开那设备节点嘛。。。 /dev/ttyS0这个是串口0 也就是windows 里面的com1 ,只有要用到串口0的程序才会打开这个设备节点。 个人愚见,仅供参考,望及时采纳
㈦ linux下怎么查找usb对应的设备,比如鼠标....
1、首先Linux 系统使用 /dev 目录下特定的设备文件来标识插入的设备。会发现该目录下的某些文件,包括 /dev/sda 或者 /dev/hda 表示第一个主设备,每个分区使用一个数字来表示,比如 /dev/sda1 或 /dev/hda1 表示主设备的第一个分区等。
㈧ 在linux系统中以什么方式访问设备
1.字符设备 字符设备是能够像字节流(比如文件)一祥缺首样访问的设备,由字符设备驱动从程序来实现这种特性,通过/dev下的字符设备文件来访问。字符谨数设备驱动程序通常至少需要实扮宏现open、close、read和write等系统调用所对...
2.块设备 块设备通常是按照块为单位来访问数据,比如一块为512KB。 块设备也是通过/dev目录下的文件系统
㈨ 在linux中是不是能看到设备节点就说明设备可以被访问了解决思路
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。内核能够识别的所有设备都记录在原码树下的 Documentation/devices.txt 文件中。在 /dev 目录下除了字符设备和块设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西没有主/次设备号。
了解这些设备的最基本要求就是对 每个设备文件的含义了如指掌,下面就医列表的形式列出常见的设备文件以及相应的含义(比较偏僻的就省略了):
----------------------------------------------------------------------
主设备号 设备类型
次设备号=文件名 简要说明
----------------------------------------------------------------------
0 未命名设备(例如:挂载的非设备)
0 = 未空设备号保留
1 char 内存设备
1 = /dev/mem 直接存取物理内存
2 = /dev/kmem 存取经过内核虚拟之后的内存
3 = /dev/null 空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。
4 = /dev/port 存取 I/O 端口
5 = /dev/zero 零字节源,只能读取到无限多的零字节。
7 = /dev/full 满设备。任何写入都将失败,并把errno设为ENOSPC以表示没有剩余空间。
8 = /dev/random 随机数发生器。完全由用户的输入来产生随机数。
如果用户停止所有动作,则停止产生新的随机数。
9 = /dev/urandom 更快,但是不够安全的随机数发生器。尽可能由用户的输入来产生随机数,
如果用户停止所有动作,则把已经产生的随机数做为种子来产生新的随机数。
10 = /dev/aio 异步 I/O 通知接口
11 = /dev/kmsg 任何对该文件的写入都将作为 printk 的输出
1 block RAM disk
0 = /dev/ram0 第1个 RAM disk (initrd只能使用ram0)
1 = /dev/ram1 第2个 RAM disk
...
200 = /dev/ram200 第200个 RAM disk
4 char TTY(终端)设备
0 = /dev/tty0 当前虚拟控制台
1 = /dev/tty1 第1个虚拟控制台
...
63 = /dev/tty63 第63个虚拟控制台
4 block 如果根文件系统以是以只读方式挂载的,那么就不可能创建真正的设备节点,
此时就使用该设备作为动态分配的主(major)设备的别名
0 = /dev/root
5 char 其他 TTY 设备
0 = /dev/tty 当前 TTY 设备
1 = /dev/console 系统控制台
2 = /dev/ptmx 所有 PTY master 的复用器
7 char 虚拟控制台捕捉设备(这些设备既允许读也允许写)
0 = /dev/vcs 当前虚拟控制台(vc)的文本内容
1 = /dev/vcs1 tty1 的文本内容
...
63 = /dev/vcs63 tty63 的文本内容
128 = /dev/vcsa 当前虚拟控制台(vc)的文本/属性内容
129 = /dev/vcsa1 tty1 的文本/属性内容
...
191 = /dev/vcsa63 tty63 的文本/属性内容
7 block 回环设备(用一个普通的磁盘文件来模拟一个块设备)
对回环设备的绑定由 mount(8) 或 losetup(8) 处理
0 = /dev/loop0 第1个回环设备
1 = /dev/loop1 第2个回环设备
...
8 block SCSI 磁盘(0-15)
0 = /dev/sda 第1个 SCSI 磁盘(整个磁盘)
16 = /dev/sdb 第2个 SCSI 磁盘(整个磁盘)
32 = /dev/sdc 第3个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdp 第16个 SCSI 磁盘(整个磁盘)
分区表示方法如下(以第3个 SCSI 磁盘为例)
33 = /dev/sdc1 第1个分区
34 = /dev/sdc2 第2个分区
...
47 = /dev/sdc15 第15个分区
对于Linux/i386来说,分区1-4是主分区,5-15是逻辑分区。
9 block Metadisk(RAID)设备
0 = /dev/md0 第1组 metadisk
1 = /dev/md1 第2组 metadisk
...
metadisk 驱动用于将同一个文件系统分割到多个物理磁盘上。
10 char 非串口鼠标,各种杂项设备和特性
1 = /dev/psaux PS/2鼠标
131 = /dev/temperature 机器内部温度
134 = /dev/apm_bios APM(高级电源管理) BIOS
135 = /dev/rtc 实时时钟(Real Time Clock)
144 = /dev/nvram 非易失配置 RAM
162 = /dev/smbus 系统管理总线(System Management Bus)
164 = /dev/ipmo Intel的智能平台管理(Intelligent Platform Management)接口
173 = /dev/ipmikcs 智能平台管理(Intelligent Platform Management)接口
175 = /dev/agpgart AGP图形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr 性能监视计数器
183 = /dev/hwrng 通用硬件随机数发生器
184 = /dev/cpu/microcode CPU微代码更新接口
186 = /dev/atomicps 进程状态数据的原子快照
188 = /dev/smbusbios SMBus(系统管理总线) BIOS
200 = /dev/net/tun TAP/TUN 网络设备(TAP/TUN以软件的方式实现了网络设备)
TAP模拟了以太网帧(第二层),TUN模拟了IP包(第三层)。
202 = /dev/emd/ctl 增强型 Metadisk RAID (EMD) 控制器
220 = /dev/mptctl Message passing technology (MPT) control
223 = /dev/input/uinput 用户层输入设备驱动支持
227 = /dev/mcelog X86_64 Machine Check Exception driver
228 = /dev/hpet HPET driver
229 = /dev/fuse Fuse(用户空间的虚拟文件系统)
231 = /dev/snapshot 系统内存快照
232 = /dev/kvm 基于内核的虚构机(基于AMD SVM和Intel VT硬件虚拟技术)
11 block SCSI CD-ROM 设备
0 = /dev/scd0 第1个 SCSI CD-ROM
1 = /dev/scd1 第2个 SCSI CD-ROM
...
13 char 核心输入设备
32 = /dev/input/mouse0 第1个鼠标
33 = /dev/input/mouse1 第2个鼠标
...
62 = /dev/input/mouse30 第31个鼠标
63 = /dev/input/mice 所有鼠标的统一
64 = /dev/input/event0 第1个事件队列
65 = /dev/input/event1 第2个事件队列
...
95 = /dev/input/event1 第32个事件队列
21 char 通用 SCSI 设备(通常是SCSI光驱)
0 = /dev/sg0 第1个通用 SCSI 设备
1 = /dev/sg1 第2个通用 SCSI 设备
...
29 char 通用帧缓冲(frame buffer)设备
0 = /dev/fb0 第1个帧缓冲设备
1 = /dev/fb1 第2个帧缓冲设备
...
31 = /dev/fb31 第32个帧缓冲设备
30 char iBCS-2 兼容设备
0 = /dev/socksys 套接字访问接口
1 = /dev/spx SVR3 本地 X 接口
32 = /dev/inet/ip 网络访问接口
33 = /dev/inet/icmp
34 = /dev/inet/ggp
35 = /dev/inet/ipip
36 = /dev/inet/tcp
37 = /dev/inet/egp
38 = /dev/inet/pup
39 = /dev/inet/udp
40 = /dev/inet/idp
41 = /dev/inet/rawip
此外,iBCS-2 还需要下面的连接必须存在
/dev/ip -> /dev/inet/ip
/dev/icmp -> /dev/inet/icmp
/dev/ggp -> /dev/inet/ggp
/dev/ipip -> /dev/inet/ipip
/dev/tcp -> /dev/inet/tcp
/dev/egp -> /dev/inet/egp
/dev/pup -> /dev/inet/pup
/dev/udp -> /dev/inet/udp
/dev/idp -> /dev/inet/idp
/dev/rawip -> /dev/inet/rawip
/dev/inet/arp -> /dev/inet/udp
/dev/inet/rip -> /dev/inet/udp
/dev/nfsd -> /dev/socksys
/dev/X0R -> /dev/null
36 char Netlink 支持
0 = /dev/route 路由, 设备更新, kernel to user
3 = /dev/fwmonitor Firewall packet 复制
59 char sf 防火墙模块
0 = /dev/firewall 与 sf 内核模块通信
65 block SCSI 磁盘(16-31)
0 = /dev/sdq 第17个 SCSI 磁盘(整个磁盘)
16 = /dev/sdr 第18个 SCSI 磁盘(整个磁盘)
32 = /dev/sds 第19个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdaf 第32个 SCSI 磁盘(整个磁盘)
66 block SCSI 磁盘(32-47)
0 = /dev/sdag 第33个 SCSI 磁盘(整个磁盘)
16 = /dev/sdah 第34个 SCSI 磁盘(整个磁盘)
32 = /dev/sdai 第35个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdav 第48个 SCSI 磁盘(整个磁盘)
89 char I2C 总线接口
0 = /dev/i2c-0 第1个 I2C 适配器
1 = /dev/i2c-1 第2个 I2C 适配器
...
98 block 用户模式下的虚拟块设备(分区处理方式与 SCSI 磁盘相同)
0 = /dev/ubda 第1个用户模式块设备
16 = /dev/udbb 第2个用户模式块设备
...
103 block 审计(Audit)设备
0 = /dev/audit 审计(Audit)设备
128-135 char Unix98 PTY master
这些设备不应当存在设备节点,而应当通过 /dev/ptmx 接口访问。
136-143 char Unix98 PTY slave
这些设备节点是自动生成的(伴有适当的权限和模式),不能手动创建。
方法是通过使用适当的 mount 选项(通常是:mode=0620,gid=<"tty"组的gid>)
将 devpts 文件系统挂载到 /dev/pts 目录即可。
0 = /dev/pts/0 第1个 Unix98 PTY slave
1 = /dev/pts/1 第2个 Unix98 PTY slave
...
153 block Enhanced Metadisk RAID (EMD) 存储单元(分区处理方式与 SCSI 磁盘相同)
0 = /dev/emd/0 第1个存储单元
1 = /dev/emd/0p1 第1个存储单元的第1个分区
2 = /dev/emd/0p2 第1个存储单元的第2个分区
...
15 = /dev/emd/0p15 第1个存储单元的第15个分区
16 = /dev/emd/1 第2个存储单元
32 = /dev/emd/2 第3个存储单元
...
240 = /dev/emd/15 第16个存储单元
180 char USB 字符设备
96 = /dev/usb/hiddev0 第1个USB人机界面设备(鼠标/键盘/游戏杆/手写版等人操作计算机的设备)
...
111 = /dev/usb/hiddev15 第16个USB人机界面设备
180 block USB 块设备(U盘之类)
0 = /dev/uba 第1个USB 块设备
8 = /dev/ubb 第2个USB 块设备
16 = /dev/ubc 第3个USB 块设备
...
192 char 内核 profiling 接口
0 = /dev/profile Profiling 控制设备
1 = /dev/profile0 CPU 0 的 Profiling 设备
2 = /dev/profile1 CPU 1 的 Profiling 设备
...
193 char 内核事件跟踪接口
0 = /dev/trace 跟踪控制设备
1 = /dev/trace0 CPU 0 的跟踪设备
2 = /dev/trace1 CPU 1 的跟踪设备
...
195 char Nvidia 图形设备(比如显卡)
0 = /dev/nvidia0 第1个 Nvidia 卡
1 = /dev/nvidia1 第2个 Nvidia 卡
...
255 = /dev/nvidiactl Nvidia 卡控制设备
202 char 特定于CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr CPU 0 的 MSRs
1 = /dev/cpu/1/msr CPU 1 的 MSRs
...
203 char CPU CPUID 信息
0 = /dev/cpu/0/cpuid CPU 0 的 CPUID
1 = /dev/cpu/1/cpuid CPU 1 的 CPUID
...
===================================================================
这部分详细说明一些应该或可能存在于 /dev 目录之外的文件。
链接最好使用与这里完全相同的格式(绝对路径或相对路径)。
究竟是使用硬链接(hard)还是软连接(symbolic)取决于不同的设备。
必须的链接
必须在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/fd /proc/self/fd symbolic 文件描述府
/dev/stdin fd/0 symbolic 标准输入文件描述府
/dev/stdout fd/1 symbolic 标准输出文件描述符
/dev/stderr fd/2 symbolic 标准错误文件描述符
/dev/nfsd socksys symbolic 仅为 iBCS-2 所必须
/dev/X0R null symbolic 仅为 iBCS-2 所必须
[注意] /dev/X0R 是 <字母 X>-<数字 0>-<字母 R>
推荐的链接
推荐在所有的系统上都存在这些连接:
链接 目标 链接类型 简要说明
/dev/core /proc/kcore symbolic 为了向后兼容
/dev/ramdisk ram0 symbolic 为了向后兼容
/dev/ftape qft0 symbolic 为了向后兼容
/dev/bttv0 video0 symbolic 为了向后兼容
/dev/radio radio0 symbolic 为了向后兼容
/dev/i2o* /dev/i2o/* symbolic 为了向后兼容
/dev/scd? sr? hard 代替 SCSI CD-ROM 的名字
本地定义的链接
下面的链接很可能需要根据机器的实际硬件配置创建其中的一部分甚至全部。
这些链接仅仅是为了迎合习惯用法,它们既非必须也非推荐。
链接 目标 链接类型 简要说明
/dev/mouse mouse port symbolic 当前鼠标
/dev/tape tape device symbolic 当前磁带
/dev/cdrom CD-ROM device symbolic 当前CD-ROM
/dev/cdwriter CD-writer symbolic 当前CD-writer
/dev/scanner scanner symbolic 当前扫描仪
/dev/modem modem port symbolic 当前调制解调器
/dev/root root device symbolic 当前根文件系统所在设备
/dev/swap swap device symbolic 当前swap所在设备
/dev/modem 不应当用于能够同时支持呼入和呼出的modem,因为往往会导致锁文件问题。
如果存在 /dev/modem ,那么它应当指向一个恰当的主 TTY 设备。
对于SCSI设备,
/dev/tape 和 /dev/cdrom 应该分别指向"cooked"设备 /dev/st* 和 /dev/sr* ;
而 /dev/cdwriter 和 /dev/scanner 应当分别指向恰当的 /dev/sg* 。
/dev/mouse 可以指向一个主串行 TTY 设备、一个硬件鼠标、
或者一个对应鼠标驱动程序的套接字(例如 /dev/gpmdata)。
套接字和管道
持久套接字和命名管道可以存在于 /dev 中。常见的有:
/dev/printer socket lpd 本地套接字
/dev/log socket syslog 本地套接字
/dev/gpmdata socket gpm 鼠标多路复用器(multiplexer)
/dev/gpmctl socket (LFS-LiveCD中出现)
/dev/initctl fifo pipe init 监听它并从中获取信息(用户与 init 进程交互的通道)
挂载点
以下名称被保留用于挂载特殊的文件系统。
这些特殊的文件系统只提供内核界面而不提供标准的设备节点。
/dev/pts devpts PTY slave 文件系统
/dev/shm tmpfs 提供对 POSIX 共享内存的直接访问
===================================================================
终端(或TTY)设备是一种特殊的字符设备。终端设备是可以在会话中扮演控制终端角色的任何设备,
包括:虚拟控制台、串行接口(已废弃)、伪终端(PTY)。
所有的终端设备共享一个通用的功能集合:line discipline,
它既包含通用的终端 line discipline 也包含SLIP和PPP模式。
所有的终端设备的命名都很相似。这部分内容将解释命名规则和各种类型的TTY(终端)的使用。
需要注意的是这些命名习惯包含了几个历史遗留包袱。
其中的一些是Linux所特有的,另一些则是继承自其他系统,
还有一些反映了Linux在成长过程中抛弃了原来借用自其它系统的一些习惯。
井号(#)在设备名里表示一个无前导零的十进制数。
虚拟控制台(Virtual console)和控制台设备(console device)
虚拟控制台是在系统视频监视器上全屏显示的终端。
虚拟控制台被命名为编号从 /dev/tty1 开始的 /dev/tty# 。
/dev/tty0 是当前虚拟控制台。
/dev/tty0 用于在不能使用帧缓冲设备(/dev/fb*)的机器上存取系统视频卡,
注意,不要将 /dev/console 用于此目的。
/dev/console 由内核管理,系统消息将被发送到这里。
单用户模式下必须允许 login 使用 /dev/console 。
串行接口(已废弃)
这里所说的"串行接口"是指 RS-232 串行接口和任何模拟这种接口的设备,
不管是在硬件(例如调制解调器)还是在软件(例如ISDN驱动)中模拟。
在linux中的每一个串行接口都有两个设备名:
主设备或呼入(callin)设备、交替设备或呼出(callout)设备。
设备类型之间使用字母的大小写进行区分。
比如,对于任意字母X,"tty"设备名为 /dev/ttyX# ,而"cu"设备名则为 /dev/cux# 。
由于历史原因,/dev/ttyS# 和 /dev/ttyC# 分别等价于 /dev/cua# 和 /dev/cub# 。
名称 /dev/ttyQ# 和 /dev/cuq# 被保留为本地使用。
伪终端(PTY)
伪终端用于创建登陆会话或提供其它功能,
比如通过 TTY line discipline (包括SLIP或者PPP功能)来处理任意的数据生成。
每一个 PTY 都有一个master端和一个slave端。按照 System V/Unix98 的 PTY 命名方案,
所有master端共享同一个 /dev/ptmx 设备节点(打开它内核将自动给出一个未分配的PTY),
所有slave端都位于 /dev/pts 目录下,名为 /dev/pts/# (内核会根据需要自动生成和删除它们)。
一旦master端被打开,相应的slave设备就可以按照与 TTY 设备完全相同的方式使用。
master设备与slave设备之间通过内核进行连接,等价于拥有 TTY 功能的双向管道(pipe)。
===============================
你可能会很奇怪,为什么没有 /dev/hda 这样的设备,难道不常用么?
原因在于从 2.6.19 开始,内核引入了新的ATA驱动,将SATA/IDE硬盘同意使用 /dev/sd? 来表示了,所以 /dev/hd? 就没有存在的必要了