- It is difficult to find an entry in a directory that typically have over
1200 files.
- On a typical machine, more than 1000 of these device files aren't needed
because the hardware just doesn't exist on the machine. That's alot of
fat!
- Historically, there is no real use of hierarchy within /dev.
It's a flat filesystem. This aggravates other problems listed here.
- A huge /dev significantly slows down access to devices. The
kernel needs to wade through a huge number of entries and inodes to acess a
single driver. For example, directory lookups are linear on ext2. Every
time a program is allocated a pty (xterm, screen), finds a tty name (SVGA
programs) or accesses /dev/null (just about everything), linear
directory lookups slow things down. Also, whenever you use hardware, the
access time is updated which means more wading through a 1000+ file system.
- With the wealth of drivers out there, the 255 limit on major numbers is
definitely an issue. To stay a modern operating system, Linux MUST get
past the 8 bit limit on major numbers. devfs doesn't use major/minor
numbers!
- Even minor numbers can get sparse -- SCSI devices are perfect example.
- Device files are still files; they use disk space. On my system,
/dev is 1.8MB.
- Confusion: A newbie can think that, say, the modem has been detected and
configured because /dev/modem always exists in /dev.
That's wrong of course, but it's not a dumb mistake either. While it may
be fun, we shouldn't torture the newbies.
- If a device file was created only for hardware that has been correctly
installed and configured, it would be way easier to see what works on a
system and what needs to be worked on.
- The FSSTND (Linux filesystem standard document) suggests the possibility
of a read-only root filesystem for security and stability reasons. This
can't be done because /dev must allow read-write to interface with
hardware. This causes trouble for Linux embedded in ROM. A devfs
filesystem can be read-only.
- Easier maintenace: Once created, /dev requires no maintenace.
Distos (like Slackware) have been known to screw up major/minor numbers on
the IDE devices. With devfs, Linux device names are more standardized, so
there's no guesswork or look-up work.
- With devfs, you can use NTFS as the root filesystem, since this is the
way NT deals with device files.
- The devfs can appear to contain only those devices that a user has
permission to use. This is good for security and configuration issues.
- devfs might be able to share code already used for the /proc
filesystem.