当前位置:首页>Linux>Linux下设备文件的创建命令-mknod

Linux下设备文件的创建命令-mknod

  • 2026-09-08 05:35:37
Linux下设备文件的创建命令-mknod

      mknod 是 Linux 中用于手动创建特殊文件的命令,主要包括设备文件(如硬盘、终端)和命名管道(FIFO)。它通过在文件系统中创建节点,为用户空间程序和内核驱动程序建立桥梁。不过,现在主流 Linux 发行版多使用 udev 自动管理设备文件,因此手动创建的场景较少。

1. 命令格式

      基本语法如下,使用普通用户执行时需要加 sudo 获取 root 权限:

mknod [选项] 名称 类型 [主设备号 次设备号]

· -m MODE:创建时直接设置权限(如 -m 660),默认为 a=rw 减去 umask。

· 名称:设备文件的路径(如 /dev/mydev)。

· 主设备号:标识设备对应的驱动程序。

· 次设备号:标识同一驱动下的具体设备实例。

2. 类型参数

     mknod 支持创建以下三种类型的特殊文件:

类型                 含义说明

b 块设备          带缓存、固定数据块读写(如硬                                  盘), 需指定主、次设备号。

c 或 u 字符设备 无缓存、字符流读写(如键盘、串                              口)。需指定主、次设备号。

p FIFO             即命名管道,用于进程间通信,不需                           要指定设备号。

3. 常见用法示例

· 创建块设备:模拟第一个磁盘 /dev/sda(主设备号8,次设备号0)。

  sudo mknod /dev/sda b 8 0

· 创建字符设备:模拟数据黑洞 /dev/null(主设备号1,次设备号3)。

  sudo mknod /dev/null c 1 3

· 创建命名管道:在当前目录下创建名为 myfifo 的管道。

  sudo mknod myfifo p

· 设置权限:创建字符设备并直接设置权限为 660。

  sudo mknod -m 660 /dev/uart c 4 64

4. 重要注意事项

· 需要 root 权限:因为涉及内核设备交互,必须使用 sudo。

· 设备号要准确:主、次设备号是驱动标识,不能随意指定。可通过 ls -l /dev/sd* 或 /proc/devices 查询已用的设备号。

· 避免与现有文件冲突:若文件已存在,需先删除再创建。

· 文件系统支持:设备文件是 Linux 特性,无法在 FAT32/NTFS 这类文件系统上创建。

· 现代 Linux 替代方案:/dev 目录通常由 devtmpfs 和 udev 自动管理。除非是学习、嵌入式定制或恢复系统,否则极少需要手动执行 mknod。

最新文章

随机文章