리눅스 커널이 드라이브를 회전시킵니다. drivers / ata / libata-core.c (커널 소스 코드)에서 다음 행을 살펴보십시오.
if (!tried_spinup && (id[2] == 0x37c8 || id[2] == 0x738c)) {
tried_spinup = 1;
/*
* Drive powered-up in standby mode, and requires a specific
* SET_FEATURES spin-up subcommand before it will accept
* anything other than the original IDENTIFY command.
*/
err_mask = ata_dev_set_feature(dev, SETFEATURES_SPINUP, 0);
if (err_mask && id[2] != 0x738c) {
rc = -EIO;
reason = "SPINUP failed";
goto err_out;
}
/*
* If the drive initially returned incomplete IDENTIFY info,
* we now must reissue the IDENTIFY command.
*/
if (id[2] == 0x37c8)
goto retry;
}
이 행을 주석 처리하고 커널을 재 컴파일하면 드라이브가 회전하지 않습니다.
그런 다음, hdparm이 PUIS를 비활성화 할 때 드라이브를 회전시키는 것과 같이 그들을 회전시키는 명령이 필요합니다.
이것 좀 봐 링크.
그것이 내가 푸시에 대해 아는 전부입니다.
편집하다: 나는 당신의 드라이브가 GRUB 화면 전에 스핀 업하는 것을 보았습니다 : 이것은 마더 보드가 드라이브를 회전시키고 있음을 의미합니다. BIOS / UEFI 구성에서 해당 sata 포트를 사용 불가능으로 설정 한 후 다시 시도해 볼 수 있습니다. 작동중인 경우, 드라이브는 커널이 회전 할 때까지, grub 화면 이후, 사용자 로그인 프롬프트 전에 계속 남아있을 것이며 dmesg에서 찾을 수 있습니다
ataX.00: failed to IDENTIFY (SPINUP failed, err_mask=0x4)
ataX.00: revalidation failed (errno=-5)
ataX: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
이 시점에서 커널을 해킹하면 이전에 설명한 것처럼 드라이브가 전혀 회전하지 않습니다.
편집 2 : 나는 디스크를 회전시키는 더 좋은 명령을 발견했다 :
sg_sat_set_features --feature=7 /dev/sdX
sg3_utils 패키지의 일부이며 루트 권한이 필요하지만 디스크를 멋지게 회전합니다. arch Linux 포럼에서 업데이트 된 게시물 , 그것은 지금 내 마지막 해결책이다.
그 게시물의 작은 요약 :
- 부트 로더 화면 전에 PUIS 사용 가능 디스크가 스핀 업되면
해당 sata 포트를 비활성화하거나 PCI-ex sata를 시도하십시오
컨트롤러 카드
- PUIS 상태에서 디스크를 회전시키는 명령을 비활성화하려면 커널을 다시 컴파일하십시오
- sg_sat_set_feature를 사용하여 디스크를 회전시킵니다.
- 파티션에 액세스하려면 sata 포트를 다시 스캔하십시오.