메시지 받기 - 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 ioctls 사용을 구체적으로 다루는 커밋이 포함되어 있습니다(참조: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. 호환 인터페이스가 상위 비트를 0으로 만들 수 있도록 커널 5.6.8 이상으로 업그레이드하십시오.
  2. 64비트용 smartctl 및 해당 종속성을 다시 빌드합니다.

관련 정보