插件窝 干货文章 linux 设备有哪些类型

linux 设备有哪些类型

设备 dev 查看 Devices 902    来源:    2025-05-01

Linux 设备类型主要分为 字符设备块设备网络设备 三大类,每种类型对应不同的硬件交互方式。以下是详细分类和说明:


1. 字符设备(Character Devices)

  • 特点:以字节流形式顺序读写,不支持随机访问,通常无需缓冲。
  • 典型设备
    • 终端(/dev/tty*
    • 键盘(/dev/input/*
    • 鼠标
    • 串口设备(/dev/ttyS*
    • 打印机(/dev/lp*
    • 声卡(/dev/snd/*
  • 操作命令bash ls -l /dev/tty* # 查看字符设备

2. 块设备(Block Devices)

  • 特点:以固定大小的数据块(如 512B/4KB)读写,支持随机访问,通常带缓存。
  • 典型设备
    • 硬盘(/dev/sd*/dev/nvme*
    • SSD
    • U盘(/dev/sd*
    • 分区(/dev/sda1
    • 光盘(/dev/sr0
    • 虚拟块设备(如 /dev/loop0
  • 操作命令bash ls -l /dev/sd* # 查看块设备 stat -c "%t %T" /dev/sda # 查看设备的主/次设备号

3. 网络设备(Network Devices)

  • 特点:通过套接字(Socket)接口访问,无 /dev 下的设备节点,由内核直接管理。
  • 典型设备
    • 以太网卡(eth0ens33
    • 无线网卡(wlan0
    • 虚拟网卡(tun/tapveth*
  • 操作命令bash ip link show # 查看网络设备 ifconfig -a # 传统方式查看(需安装 net-tools)

其他特殊设备类型

  • 伪设备(Pseudo Devices)
    • 不关联实际硬件,由内核模拟(如 /dev/null/dev/zero/dev/random)。
  • 设备总线(Bus Devices)
    • PCI 设备(lspci 查看)、USB 设备(lsusb 查看)。
  • 杂项设备(Misc Devices)
    • 无法归类到上述类型的设备(如 /dev/fuse)。

如何区分设备类型?

  1. 通过 ls -l /dev 查看

    • 字符设备:标记为 c(如 crw-rw----)。
    • 块设备:标记为 b(如 brw-rw----)。
    ls -l /dev/sda /dev/tty1
    
    • 输出示例: brw-rw---- 1 root disk 8, 0 /dev/sda # 块设备 crw-rw---- 1 root tty 4, 1 /dev/tty1 # 字符设备
  2. 通过 stat 命令

    stat -c "%F" /dev/sda  # 显示 "block special file"
    
  3. 通过 /proc/devices

    cat /proc/devices      # 查看已注册的字符/块设备
    

应用场景

  • 字符设备:实时性要求高(如键盘输入)。
  • 块设备:需要高效存储(如磁盘读写)。
  • 网络设备:数据包传输(如网卡通信)。

理解这些类型有助于系统调试(如 dmesg 查设备驱动问题)或开发底层驱动。