Meldung wird angezeigt – Lesen des NVMe-Identifizierungscontrollers ist fehlgeschlagen: NVME_IOCTL_ADMIN_CMD: Ungültige Adresse – bei Verwendung des Smartctl-Befehls

Meldung wird angezeigt – Lesen des NVMe-Identifizierungscontrollers ist fehlgeschlagen: NVME_IOCTL_ADMIN_CMD: Ungültige Adresse – bei Verwendung des Smartctl-Befehls

Ich versuche, bestimmte Spezifikationen einer Festplatte auf einem Computer zu überprüfen, auf dem kein Betriebssystem installiert ist. Ich verwende eine bootfähige Knoppix-Diskette (v8.6.1), um ein Bash-Skript mit der Zeile auszuführen

smartctl -i /dev/nvme0

Ich erhalte jedoch immer die gleiche Meldung:

Lesen des NVMe-Identifikationscontrollers fehlgeschlagen: NVME_IOCTL_ADMIN_CMD: Ungültige Adresse

Ich kann diesen Befehl problemlos auf einem anderen Computer (dasselbe Modell) ausführen, auf dem bereits eine andere Linux-Distribution installiert ist, aber aus irgendeinem Grund schlägt der Befehl fehl, wenn er auf der Knoppix-Diskette ausgeführt wird.

Hinweis: Ich kann Befehle wie

smartctl -d nvme --scan

welche Ausgänge

/dev/nvme0 -d nvme # /dev/nvme0, NVMe-Gerät

aber ich kann keine Smartctl-Befehle ausführen wie

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

oder ein beliebiger anderer Befehl, der eigentlich Informationen über die Festplatte zurückgeben sollte. Sie alle erzeugen die gleiche „falsche Adresse“-Meldung wie oben.

Antwort1

Knoppix wurde bisher mit einem 32-Bit-Userspace und einem optionalen 64-Bit-Kernel ausgeliefert. Das Changelog für Linux Kernel 5.6.8 enthält ein Commit, das sich speziell mit der Verwendung von NVME_IOCTL_ADMIN_CMD ioctls von einem 32-Bit-Smartctl auf einem 64-Bit-Kernel befasst (siehe:https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.6.8Commit 51750ad35f266751e14d6c7e8839b85c8069e27f). Darüber hinaus wurde Knoppix 8.6.1 mit Linux Kernel 5.3.5 ausgeliefert (Referenz:https://www.knopper.net/knoppix/knoppix861-de.html. Das war deutlich vor der Veröffentlichung des Patches und würde daher diesen Fehlertyp verursachen.

Sie haben also zwei Lösungen:

  1. Aktualisieren Sie auf Kernel 5.6.8 oder höher, sodass die kompatible Schnittstelle die oberen Bits auf Null setzt.
  2. Erstellen Sie smartctl und seine Abhängigkeiten für 64-Bit neu.

verwandte Informationen