【问题标题】:What is the equivalent of IOCTL_STORAGE_QUERY_PROPERTY on linux?Linux 上的 IOCTL_STORAGE_QUERY_PROPERTY 等价物是什么?
【发布时间】:2013-04-19 21:39:01
【问题描述】:

我正在尝试在不需要 root 访问权限的情况下获取 linux 上的硬盘序列号。这可以通过this source 在 Windows 上实现,本质上它使用IOCTL_STORAGE_QUERY_PROPERTY 执行DeviceIoControl。 ioctl 版本是多少?

【问题讨论】:

  • 您可能需要 root 才能获取该信息,无论您以何种方式获取它。它可能不存在(例如,在chroot-ed 环境或虚拟机中,或者在具有 NFS 文件系统的无盘机器上,就像许多虚拟互联网服务器一样)。您可以strace 显示该信息的 linux 命令...(hdparmfdisk)找出获取它所涉及的系统调用。
  • 查看hdparm 的源代码,因为-i 它正在检索您想要的内容。但它需要为此扎根(可能用SG_IO 做一些ioctl)。因此,如果不是 root,您将无法检索该信息。
  • @BasileStarynkevitch 谢谢,但重点是在不需要 root 权限的情况下获取信息。

标签: c linux windows driver


【解决方案1】:

您可以询问 udev,无需 root 权限。试试这个命令并记下 ID_SERIAL 行:

/sbin/udevadm info --query=property --name /dev/sda

您会以编程方式使用 libudev。

【讨论】:

  • 这是 sysfs 的包装吗?还是 sysfs 背后的逻辑?
  • 据我所知,sysfs 没有这个信息。 udev 通过询问驱动器本身来获得此信息(请参阅 udev 的 ata-id.c 中的代码)。但这需要root,而你没有。
猜你喜欢
  • 2010-12-28
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 2017-04-03
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多