initd/coldplug: create /dev/null before running udevtrigger
When procd_coldplug() runs, it unmounts /dev and mounts a fresh empty
tmpfs before forking udevtrigger to populate device nodes via hotplug
events. Since udevtrigger runs asynchronously, there is a race window
between the fresh mount and when the "null" device uevent is processed.
If any code executes a shell redirect to /dev/null during this window
(e.g., from hotplug handlers or other event processing), the shell
creates /dev/null as a regular file. When the null device uevent is
later processed, makedev()'s mknod() fails silently with EEXIST,
leaving /dev/null as a regular file permanently.
This causes all subsequent redirections to /dev/null to append to the
file instead of discarding output, eventually filling up the tmpfs.
Fix by explicitly creating /dev/null immediately after mounting the
fresh tmpfs, before any other code can run.
Signed-off-by: Steev Klimaszewski <threeway@gmail.com>