udev 怪异:/dev/hda1 已安装但文件不存在

udev 怪异:/dev/hda1 已安装但文件不存在

思考我的问题与 udev 和/或 udisks 有关,但我真的不确定这里发生了什么。首先,我的系统或多或少运行得很好。较少的部分是由于以下事实:在对我的 Debian 安装进行一些升级之后,/dev 文件夹开始表现得很奇怪,这与我以前认为我了解的 unix 驱动器管理有关。为了切入主题,这里有两个命令及其输出:

$ ls /dev/h*
/dev/hidraw0  /dev/hidraw1  /dev/hidraw2  /dev/hpet

$ mount
/dev/hdb1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,size=5242880,mode=755,size=5242880,mode=755)
....

现在,请注意已/dev/hdb1安装(确实如此!)但相应的文件没有出现在/dev目录中?怎么会这样?如果该文件不存在,它/dev/hdb1作为驱动器链接列在哪里?更重要的是,假设我想挂载一张CD。我把它放在驱动器中,但/dev/scd0没有出现,所以我不能这样做,mount /dev/scd0 /media/cdrom因为它给我返回一个File not found错误。然而,经过大量摆弄后,我发现了两种方法:

$ mount /dev/disks/by-id/ata-HL-DT-ST_DVDRAM_GSA-4160B_K3H4A7E1256
$ udisks --mount /dev/scd0 /media/cdrom

上面的两个命令都有效。所以,我的问题是,如何udisks知道如何处理实际上不存在的设备文件,并且可能更重要的是,为什么认为它在文件甚至不存在的情况mount下安装了文件系统?/dev/hdb1

最后,如果这与最近的内核升级有关:

$ uname -srv
Linux 3.1.0-1-686-pae #1 SMP Sun Dec 11 20:40:16 UTC 2011

答案1

Udisks 使用自己的设备命名方案。它遵循与通常遵循的相同的命名规则乌德夫(管理 中条目的程序/dev),但它有自己的这些规则的实现,它不依赖于 中的条目/dev

显示的根文件系统条目mount不可靠,因为根文件系统是在引导时由内核挂载的,引导脚本稍后会尝试填充/etc/mtab(命令读取的文件mount),但无法知道所使用的确切设备名称内核(事实上,从技术上来说,包含根文件系统的设备在 中没有条目,即使通常不会发生/dev)。查看 的内容/proc/mounts,实时查询内核;您可能会看到不同的设备名称/(您的系统上也可能不存在)。

您的系统似乎缺少一些udev规则。这些规则位于udev包中,特别是在/lib/udev/rules.d/60-persistent-storage.rules.要做的第一件事是确保您的udev软件包是最新的,因为旧版本udev有时无法很好地应对新内核。并确保规则文件存在且未损坏。

相关内容