How is /dev/zero created and how can I make variants like /dev/one?
I read the mknod
man page, which is (as far as I can tell) what you would use to make a character device like /dev/zero
, but I don't see how you would get it to yield an infinite stream of zero bits (or another pattern). What is the procedure for creating such character devices?
Solution 1:
All mknod
does is associate a device file with a device driver. There are device drivers that implement interaction with actual devices, and there are device drivers that just react to read-write requests in useful ways. If you want to you can sit down and write a driver that returns the lyrics of the Star Spangeled Banner. But it's a matter of coding, not finding the right arguments for mknod
.
Solution 2:
mknod
creates the device node, but the VFS detects accesses to the device node and reroutes them to the appropriate driver within the kernel for handling. All device nodes, from /dev/null
to /dev/sdX
to /dev/ttyXX
to /dev/videoX
are handled this way.