使用 smartctl 命令时收到消息 - 读取 NVMe 识别控制器失败:NVME_IOCTL_ADMIN_CMD:错误地址 -

使用 smartctl 命令时收到消息 - 读取 NVMe 识别控制器失败:NVME_IOCTL_ADMIN_CMD:错误地址 -

我正在尝试检查未安装操作系统的计算机上硬盘的某些规格。我正在使用 Knoppix 可启动磁盘 (v8.6.1) 来运行包含以下行的 bash 脚本

smartctl -i /dev/nvme0

然而,我不断收到同样的消息:

读取 NVMe 识别控制器失败:NVME_IOCTL_ADMIN_CMD:错误地址

我可以在另一台已安装不同 Linux 发行版的计算机(相同型号)上正常运行此命令,但由于某种原因,该命令在 Knoppix 磁盘上运行时失败。

注意:我可以运行如下命令

smartctl -d nvme --scan

输出

/dev/nvme0 -d nvme # /dev/nvme0,NVMe 设备

但我无法运行 smartctl 命令,例如

smartctl -i /dev/nvme0
smartctl -x /dev/nvme0
smartctl -a /dev/nvme0
smartctl -H /dev/nvme0

或任何其他应该实际返回硬盘信息的命令。它们都产生上述相同的“坏地址”消息。

答案1

Knoppix 过去曾发布过 32 位用户空间和可选的 64 位内核。Linux Kernel 5.6.8 的变更日志包含一个提交,专门解决了 64 位内核上 32 位 smartctl 中 NVME_IOCTL_ADMIN_CMD ioctl 的使用问题(参考:https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.6.8提交 51750ad35f266751e14d6c7e8839b85c8069e27f)。此外,Knoppix 8.6.1 附带了 Linux Kernel 5.3.5(参考:https://www.knopper.net/knoppix/knoppix861-en.html。这显然是在补丁发布之前,因此会导致这种类型的错误。

因此,你有两个解决方案:

  1. 升级到内核 5.6.8 或更高版本,以便兼容接口将高位清零。
  2. 为 64 位重建 smartctl 及其依赖项。

相关内容