メッセージを取得しています - 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 カーネル 5.6.8 の変更ログには、64 ビット カーネル上の 32 ビット smartctl からの NVME_IOCTL_ADMIN_CMD ioctl の使用に特に対処したコミットが含まれています (参照:https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.6.8commit 51750ad35f266751e14d6c7e8839b85c8069e27f)。さらに、Knoppix 8.6.1 は Linux カーネル 5.3.5 を搭載して出荷されました (参照:https://www.knopper.net/knoppix/knoppix861-en.htmlこれはパッチがリリースされるかなり前のことなので、このタイプのエラーが発生します。

したがって、解決策は 2 つあります。

  1. 互換インターフェースが上位ビットをゼロにするように、カーネル 5.6.8 以降にアップグレードします。
  2. smartctl とその依存関係を 64 ビット用に再構築します。

関連情報