Search code examples
linuxembedded-linuxinitbuildrootbusybox

How are device nodes created in Embedded Linux without udev?


I have a linux built with a buildroot for a Beaglebone wireless board. In the root file system, when it is still on the host and has not been copied to the target, in the /dev folder, there are device files fd, log, stderr, stdin, stdout only. When I load this root file system on the target and launch the target, there are many more devices - many tty, zero, urandom etc. They are created during the Linux boot process. Buildroot built the system using simple busybox init program. In init scripts i do not see the process of creating device nodes, who creates this device nodes?


Solution

  • Your system is probably using devtmpfs. It is a pseudo filesystem that is mounted on /dev where the kernel will populate device nodes for devices it knows about. udev relies on devtmpfs since commit 220893b3cbdb ("remove mknod() logic and rely on 'devtmpfs'") which is 9 years old now.