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:
- Aktualisieren Sie auf Kernel 5.6.8 oder höher, sodass die kompatible Schnittstelle die oberen Bits auf Null setzt.
- Erstellen Sie smartctl und seine Abhängigkeiten für 64-Bit neu.