侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux mknod命令教程:如何创建字符型或块型设备文件(附案例详解和注意事项)

Linux mknod命令介绍

mknod 是 "make node" 的缩写,用于创建字符型或块型设备文件。这些文件位于/dev目录下,允许程序通过标准的文件I/O系统调用来与硬件设备进行交互。mknod还可以创建FIFO,这是一种特殊类型的文件,用作进程间通信。

Linux mknod命令适用的Linux版本

mknod 命令在大多数Linux发行版中都是可用的,包括Ubuntu, Debian, Fedora, CentOS等。但在某些发行版,如CentOS 7和CentOS 8中,创建设备文件通常需要具有root权限。

对于没有预装 mknod 的系统:

  • CentOS 7 使用 yum 安装:
    [linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux
    ```
    
  • CentOS 8 使用 dnf 安装:
    [linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux
    ```
    

Linux mknod命令的基本语法

基本语法如下:

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

其中,类型可以是 b (块设备), cu (字符设备), p (FIFO)。

Linux mknod命令的常用选项或参数说明

选项说明
-m设置文件模式(权限)
-Z设置安全上下文

Linux mknod命令的实例

实例1:创建一个块设备文件

创建一个块设备文件通常用于存储设备。

[linux@bashcommandnotfound.cn ~]$ mknod /dev/myblock b 7 0

实例2:创建一个字符设备文件

字符设备文件通常用于串口和其他字符型硬件。

[linux@bashcommandnotfound.cn ~]$ mknod /dev/mychar c 5 1

实例3:创建一个带有特定权限的设备文件

使用 -m 选项来设置文件权限。

[linux@bashcommandnotfound.cn ~]$ mknod -m 666 /dev/mychar c 5 1

实例4:创建一个FIFO文件

FIFO用于进程间通信。

[linux@bashcommandnotfound.cn ~]$ mknod /dev/myfifo p

实例5:为串口设备创建字符设备文件

例如,如果要为第一个串口(通常是 /dev/ttyS0)创建设备文件:

[linux@bashcommandnotfound.cn ~]$ mknod /dev/ttyS0 c 4 64

实例6:使用预定义的设备号创建块设备

如果你知道设备的主设备号和次设备号,可以直接指定。假设为一个SCSI磁盘创建设备文件:

[linux@bashcommandnotfound.cn ~]$ mknod /dev/sdb b 8 16

实例7:创建一个带有特定安全上下文的设备文件

使用 -Z 选项来创建一个具有特定SELinux安全上下文的设备文件:

[linux@bashcommandnotfound.cn ~]$ mknod -Z system_u:object_r:device_t:s0 /dev/mychar c 5 1

实例8:创建一个循环设备文件

循环设备通常用于将文件作为块设备挂载:

[linux@bashcommandnotfound.cn ~]$ mknod /dev/loop0 b 7 0

实例9:设置创建文件的默认权限

结合 umask 命令,在创建设备文件时设置默认权限:

[linux@bashcommandnotfound.cn ~]$ umask 022
[linux@bashcommandnotfound.cn ~]$ mknod /dev/example c 5 1

实例10:为网络接口创建字符设备文件

可以为网络接口创建一个字符设备文件,例如为 tun0

[linux@bashcommandnotfound.cn ~]$ mknod /dev/net/tun c 10 200

实例11:使用脚本创建多个设备文件

如果需要创建多个设备文件,可以编写一个脚本来简化这个过程。例如,下面的脚本创建了多个循环设备:

for i in {0..7}
do
  mknod /dev/loop$i b 7 $i
done

实例12:删除并重新创建设备文件

如果设备文件损坏或不正确,您可能需要删除并重新创建它。请谨慎使用以下命令以避免系统不稳定:

[linux@bashcommandnotfound.cn ~]$ rm /dev/ttyS0
[linux@bashcommandnotfound.cn ~]$ mknod /dev/ttyS0 c 4 64

实例13:创建自定义设备文件用于测试

开发人员有时需要创建自定义设备文件以进行测试:

[linux@bashcommandnotfound.cn ~]$ mknod /dev/mytestdevice b 250 0

Linux mknod命令的注意事项

  • 使用mknod创建设备文件时,必须具有root权限。
  • 正确设置主设备号和次设备号,否则设备文件可能无法正确访问硬件。
  • bash: mknod: command not found - 如果遇到此错误,请根据上述安装步骤进行安装。
0

评论区