如何在没有 udev 的情况下在嵌入式 Linux 中创建设备节点?

How are device nodes created in Embedded Linux without udev?

我有一个 linux 使用 Beaglebone 无线板的 buildroot 构建。在根文件系统中,当它还在主机上,还没有复制到目标中时,在/dev文件夹中,只有设备文件fd、log、stderr、stdin、stdout。当我在目标上加载这个根文件系统并启动目标时,有更多的设备——许多 tty、zero、urandom 等。它们是在 Linux 引导过程中创建的。 Buildroot 使用简单的 busybox init 程序构建系统。在初始化脚本中我没有看到创建设备节点的过程,谁创建了这个设备节点?

如果您的目标是 运行 busybox,您可能拥有 mdev 小程序。用busybox --help.

查看安装的小程序

mdev 使用配置文件:/etc/mdev.conf

您的系统可能正在使用 devtmpfs。它是一个伪文件系统,安装在 /dev 上,内核将在其中为它知道的设备填充设备节点。 udev 依赖于 devtmpfs 自提交 220893b3cbdb(“删除 mknod() 逻辑并依赖 'devtmpfs'”)以来已有 9 年历史了。