取得訊息 - 讀取 NVMe 識別控制器失敗:NVME_IOCTL_ADMIN_CMD:錯誤位址 - 使用 smartctl 指令時

取得訊息 - 讀取 NVMe 識別控制器失敗:NVME_IOCTL_ADMIN_CMD:錯誤位址 - 使用 smartctl 指令時

我正在嘗試檢查未安裝作業系統的電腦上硬碟的某些規格。我正在使用 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 或更高版本,以便 compat 介面將高位元清除。
  2. 重新建構 64 位元 smartctl 及其相依性。

相關內容