首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux中检测到硬盘时得到通知

如何在Linux中检测到硬盘时得到通知
EN

Stack Overflow用户
提问于 2011-09-07 21:38:35
回答 3查看 1.7K关注 0票数 0

我们有一个嵌入式Linux构建,它从休眠模式的HDD开始(硬件)。然后,软件启动并启用驱动器的电源。Linux检测到驱动器正常:

代码语言:javascript
复制
ata1: exception Emask 0x10 SAct 0x0 SErr 0x4050000 action 0x42 frozen
ata1: soft resetting port
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl F0000)
ata1.00: ATA-8, max UDMA/133, 976773168 sectors: LBA48 NCQ (depth 0/32)
ata1.00: ata1: dev 0 multi count 0
ata1.00: configured for UDMA/133
ata1: EH complete
  Vendor: ATA       Model: Hitachi HCS5C105  Rev: JC2O
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 976773168 512-byte hdwr sectors (500108 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
SCSI device sda: 976773168 512-byte hdwr sectors (500108 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write back
 sda: sda1 sda2
sd 0:0:0:0: Attached scsi disk sda
sd 0:0:0:0: Attached scsi generic sg0 type 0

不幸的是,在上述SCSI检测发生之前,软件会尝试访问驱动器。我们可以添加睡眠,但这不是一个可靠的机制,因为我们已经注意到检测所用的时间是不确定的。

有没有办法让内核/热插拔等系统在检测到硬盘时进行报告?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-07 21:51:39

我想答案就在udev设备管理器(wikipedia page)的某个地方。它在嵌入式环境中完全可用。

它允许您的write rules,能够启动脚本/程序时,一些设备被检测到。

像这样的东西可以做这些事情:

代码语言:javascript
复制
KERNEL=="sda", RUN+="/usr/bin/my_program"

如果你有一个旧的内核,你可以激活hotplug系统。

最后一次机会是让您监视文件系统中的任何内容(甚至是/dev inotify:)的目录工具。

票数 3
EN

Stack Overflow用户

发布于 2011-09-08 15:26:17

您有一组选项可以做到这一点,从最简单到最复杂:

  • Manual polling。只需编写一个shell脚本,在实际使用硬盘之前进行轮询,直到硬盘可用。诚然,这不是最好的解决方案,但它是有效的,而且是simple.
  • mdev.如果您的嵌入式Linux系统是基于Busybox的(我希望是这样!),那么Busybox集成了mdev程序。它的用法非常简单,在http://git.buildroot.net/busybox/tree/docs/mdev.txt上有文档。当检测到设备时,mdev将非常容易地允许您运行外壳脚本。如果你已经在你的嵌入式Linux系统中安装了Busybox,这绝对是我recommend.
  • udev,别人提出的解决方案。这是在成熟的桌面/服务器系统中使用的解决方案。它比mdev有更多的依赖项,并且更难设置。如果您只有硬盘检测问题要解决,我想说使用udev有点过分,但是如果您打算将它用于其他目的,为什么not.
  • udev +使用+ dbus,这实际上是在成熟的系统上使用的。udisks是一个守护进程,它使用udev来通知系统中出现了新的存储设备,它会获得一些关于这些存储设备的附加信息,然后通过D-Bus发送消息。它允许提供D-Bus服务来操作存储设备。

我希望这能让你对可能的解决方案有一个大概的了解。

票数 2
EN

Stack Overflow用户

发布于 2011-09-22 09:54:54

您可以监听uevent netlink套接字-您将获得与udevd相同的事件

请参阅http://lwn.net/Articles/242046/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7334807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档