就此而言,.net 中的一堆静态文件到底有什么问题/dev?对于开发人员来说,我现在重新发明这个轮子 3 次(devfs-> udev + HAL-> udev)显然不够令人满意,现在显然它也进入了 Grand Unified Init Program,所以四次。
我记得几年前我第一次开始使用 Linux 时感到惊讶,尽管声称“一切都是文件”,但没有/dev/eth0(后来是有道理的,因为它不是字符或块设备——尽管是“数据包”设备类型会很有趣...)。鉴于此,为什么处理字符和块设备文件树的程序还要负责网络设备?我已经看到对“灵活性”的模糊引用,但是这对 ifconfig(8) 仅通过查看所做的事情有何补充/proc/net/dev?例如,我知道 NetworkManager 不会很快出现在 Net 或 OpenBSD 中,因为它依赖于udev,这两个团队都不想编写;我不知道的/dev内核已经以多种方式公开了它们(并且它们都没有/dev!)。
仅仅是因为热插拔吗?内核只是侦听物理总线并在“添加设备”消息上加载适当的模块是否存在问题?或者,上帝保佑,实际管理员这样做?我确实记得早在 2000 年代初期,我的服务器有时会以意想不到的顺序初始化它们的网卡,我认为在用户空间中决定命名是有意义的(尽管当时修复并不是非常困难),但是这对蟑螂来说似乎是一把大锤。(或者,这个问题可能会影响到我认为比机架式服务器或 PC 更难的用例,这是我的经验。)
所以,简单地说一下我的问题:udev 实际解决了什么问题,devfs、HAL 和/或普通旧文件如何无法解决这些问题?许多不同的东西(热插拔、通用设备管理、网络设备管理、设备命名、驱动程序优先级等)都成为一个程序是否有特殊原因?
我有几个 USB 记忆棒,都是用它制作的mkfs.vfat -n FOO,我想重新标记文件系统,而不必抓取其中的所有文件,重新格式化,然后将文件放回去。我没有看到 mkfs.vfat 的选项或其他工具可以做到这一点吗?