1. It is difficult to find an entry in a directory that typically have over 1200 files.
  2. 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!
  3. Historically, there is no real use of hierarchy within /dev. It's a flat filesystem. This aggravates other problems listed here.
  4. 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.
  5. 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!
  6. Even minor numbers can get sparse -- SCSI devices are perfect example.
  7. Device files are still files; they use disk space. On my system, /dev is 1.8MB.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. With devfs, you can use NTFS as the root filesystem, since this is the way NT deals with device files.
  13. The devfs can appear to contain only those devices that a user has permission to use. This is good for security and configuration issues.
  14. devfs might be able to share code already used for the /proc filesystem.