매우 공격적인 전원 관리 기능을 갖춘 하드 드라이브가 있습니다. 로드 사이클이 심각한 수준으로 상승하는 것을 방지하기 위해 udev 규칙을 작성했습니다.
SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}=="TOSHIBA MK2555GS", RUN+="/usr/bin/hdparm -B 200 /dev/%k"
문제는 노트북을 절전 모드에서 깨울 때 규칙이 실행되지 않는다는 것입니다. 그래서 다음과 같은 시스템 서비스가 있습니다.
[Unit]
Description=root resume actions
After=suspend.target
[Service]
Type=simple
ExecStart=/bin/hdparm -B 200 /dev/sda
[Install]
WantedBy=suspend.target
나는 ExecStart
명령이 /bin/udevadm trigger --subsystem-match="block"
. 이 명령을 수동으로 실행하면 전원 관리가 올바르게 조정되지만 systemd 서비스를 통해 작동하지 않습니다. 이를 수행할 수 있는 방법이 있습니까? 그런데 나는 아치 리눅스를 사용하고 있습니다
답변1
/usr/lib/systemd/systemd-sleep
hdparm을 실행하는 스크립트를 넣을 수 있습니다. /dev/disk/by-uuid/
대신 hdparm을 사용할 수 있습니다/dev/sda...
아니면 사용해 보세요/bin/sh -c "/bin/hdparm -B 200 /dev/disk/by-uuid/XY"
답변2
나는 거의 같은 상황에 있으며 Google에서의 유명세 systemd udevadm trigger
와 이러한 드라이브의 터무니없는 기본값을 길들이는 방법에 대한 일반적인 요약으로 인해 이 질문에 더 많은 정보를 추가하고 싶었습니다.
내 Western Digital Blue 하드 드라이브가 거만하고 비생산적이며 반SMART 건강, 전력을 가지고 있다는 것을 깨달았을 때쓰레기넌센스는 기본적으로 활성화되어 있으며 OP와 거의 동일한 프로세스를 따랐습니다. 펌웨어 기능을 비활성화했지만 다음 명령을 사용하여 APM 및 대기 기능도 비활성화해야 했습니다 hdparm
. 이 세 가지가 없으면 만연한 로드 사이클링이 계속해서 발생합니다.
첫 번째 차이점은 내 장치가 hdparm.rules
장치 추가(부팅) 시에만 호출되도록 설정되어 있기 때문에 udevadm trigger
내가 지시하지 않으면 작동하지 않는다는 것입니다.어느를 추가하여 애플리케이션을 트리거합니다 --action=add
. 이는 복구 중에 HD를 분리/다시 연결하는 것을 효과적으로 시뮬레이션합니다. 이것이 바로 제가 필요한 것입니다.
그러나 나는 OP와 비슷한 혼란 udevadm trigger
에 빠졌고 왜 hdparm rule
.systemd service
- 우리 시스템에서는 유닛 파일이 그것을 모르기 때문에
service
실행 파일의 위치를 명시적으로 지정해야 합니다 .ExecStart /bin/udevadm
$path
- 그리고아마도....설치했는데
systemd/user
아마도 나처럼 실행 중이었기 때문에root
필요한 권한을 얻지 못했을 것입니다/sbin/hdparm
.
(나는 Debian 8을 실행하고 있지만 이것이 배포판에만 국한된 것은 아니라고 생각합니다.)