暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Linux /dev 目录揭秘

watson 2024-08-04
498

1. 引言

    Linux 是一个类 Unix 操作系统,其中一项重要的特性就是一切皆文件。/dev 目录是 Linux 文件系统的重要组成部分,用于存放设备文件。设备文件代表系统中的硬件设备,通过这些文件,用户可以以文件的方式访问硬件。

    这个目录中包含了所有 Linux 系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和 windows,dos 操作系统不一样。它实际上是一个访问这些外部设备的端口

2. /dev 文件系统的原理

    /dev 目录是一个伪文件系统,称为设备文件系统(Device Filesystem)。每个设备文件都对应一个硬件设备或系统资源。设备文件分为两类:字符设备文件和块设备文件。字符设备文件一次处理一个字符,而块设备文件一次处理一个数据块。

2.1 字符设备文件

    字符设备文件用于按字符方式处理数据。常见的字符设备文件包括终端设备(如 /dev/tty)、串行端口(如 /dev/ttyS0)等。

2.2 块设备文件

    块设备文件用于按块方式处理数据。常见的块设备文件包括硬盘驱动器(如 /dev/sda)、光驱(如 /dev/cdrom)等。

3. /dev 目录结构

    /dev 目录下包含多个子目录和设备文件,每个子目录和设备文件都有其特定用途。

3.1 常见设备文件和子目录

3.1.1 IDE 设备

  • /dev/hd[a-t]:IDE 设备。例如,/dev/hda 代表第一个 IDE 硬盘。

3.1.2 SCSI 设备

  • /dev/sd[a-z]:SCSI 设备。例如,/dev/sda 代表第一个 SCSI 磁盘设备。

3.1.3 标准软驱

  • /dev/fd[0-7]:标准软驱。例如,/dev/fd0 代表第一个软盘驱动器。

3.1.4 软 RAID 设备

  • /dev/md[0-31]:软 RAID 设备。例如,/dev/md0 代表第一个软 RAID 设备。

3.1.5 本地回环设备

  • /dev/loop[0-7]:本地回环设备。例如,/dev/loop0 代表第一个回环设备,常用于挂载镜像文件

3.1.6 内存设备

  • /dev/ram[0-15]:内存设备。例如,/dev/ram0 代表第一个 RAM 盘。

3.1.7 “空”设备

  • /dev/null:写入的数据会被丢弃,读取则返回 EOF。

3.1.8 “零”设备

  • /dev/zero:读取时返回连续的零字节。

3.1.9 虚拟终端

  • /dev/tty[0-63]:虚拟终端。例如,/dev/tty0 代表第一个虚拟终端。

3.1.10 串口

  • /dev/ttyS[0-3]:串口设备。例如,/dev/ttyS0 代表第一个串行端口。

3.1.11 并口

  • /dev/lp[0-3]:并口设备。例如,/dev/lp0 代表第一个并行端口。

3.1.12 控制台

  • /dev/console:系统控制台设备。

3.1.13 伪终端

  • /dev/pty:伪终端主设备。

3.1.14 虚拟终端

  • /dev/pts:伪终端从设备,通常用于终端仿真器。

3.1.15 Framebuffer 设备

  • /dev/fb[0-31]:帧缓冲设备。例如,/dev/fb0 代表第一个帧缓冲设备。

3.1.16 光盘设备

  • /dev/cdrom:通常是一个符号链接,指向实际的光盘设备,如 /dev/hdc。

3.1.17 调制解调器设备

  • /dev/modem:通常是一个符号链接,指向实际的调制解调器设备,如 /dev/ttyS[0-9]。

3.1.18 随机数设备

  • /dev/random:提供高质量随机数。

  • /dev/urandom:提供伪随机数,速度较快。

3.2 /dev/disk

    /dev/disk 目录下包含多个子目录,用于组织存储设备的符号链接。例如 /dev/disk/by-id、/dev/disk/by-label、/dev/disk/by-uuid 等,这些符号链接提供了以不同标识方式访问存储设备的便捷方式。

3.3 /dev/input

    /dev/input 目录下包含输入设备文件,如键盘、鼠标等。常见的文件有 /dev/input/mice、/dev/input/event* 等。

3.4 /dev/net

    /dev/net 目录下包含网络设备文件,主要用于虚拟网络设备配置。例如 /dev/net/tun 用于配置 TUN/TAP 虚拟网络接口。

4. 常见使用场景

4.1 丢弃命令输出

  将 some_command 的输出丢弃。
$ some_command > /dev/null

4.2 创建空文件

    创建一个 1MB 的空文件。

$ dd if=/dev/zero of=emptyfile bs=1M count=1
4.3 挂载 ISO 镜像


  使用环回设备挂载 ISO 镜像文件。

$ sudo mount -o loop image.iso /mnt


4.4 生成随机数

生成一个 16 字节的随机密钥。

$ head -c 16 /dev/urandom > random_key

4.5 访问存储设备

    对第一个 SCSI 磁盘设备进行分区管理。

$ sudo fdisk /dev/sda

5. 结论

    Linux 的 /dev 文件系统为用户提供了统一的硬件设备访问接口,通过理解和利用 /dev 目录下的各种设备文件,用户可以更灵活和高效地与系统硬件进行交互。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论