Як я можу запустити команду hdparm після завантаження та відновити на Fedora 19?


10

Я купив новий HD (WD5000BPVT), який, на жаль, намагається спати кожні 5-8 секунд. Мало того, що шум клацання досить чутний, 1-секундний проміжок часу додає дуже помітну затримку при щоденному використанні.

Я виявив hdparm -B 254 /dev/sda, що вимкне дуже короткий сон, але я не знаю, як застосувати цю настройку щоразу, коли привід увімкнено. І програми dconf-editor"Налаштування керування живленням", і інше нічого не стосується налаштувань HD. У мене немає якоїсь - або /etc/hdparmчи /etc/acpiшляху. MATE - менеджер вікон.

На Fedora 19, як я можу змусити цю команду запускатися кожного разу, коли активований диск?

Відповіді:


12

У мене була така ж проблема, жодне з рішень тут не відповідало моїм потребам. Використання cron - це справжнє рішення, а не рішення, правила udev запускаються, коли живлення підключено / відключено, але не після призупинення / відновлення і pm-utilsбільше не використовується за замовчуванням у Fedora 19, коли ви, наприклад, закриваєте кришку свого ноутбука.

Оскільки systemdзараз відповідальний за призупинення / сплячку, я вважаю, що єдиним правильним способом вирішення цієї ситуації є створення systemdпідрозділу, який працюватиме як після завантаження, так і після відновлення з призупинення.

Примітки:

  • Використовуючи /dev/disk/by-id/...замість /dev/sda, ви завжди обов'язково отримаєте потрібний диск (sda, b, c залежить від порядку їх виявлення ядром)
  • Ви можете мати кілька ExecStartрядків, щоб ви могли налаштувати кілька дисків

Ось блок, який я написав:

[Unit]
Description=Silence HD
After=suspend.target

[Service]
Type=oneshot
# Disable automatic head parking for the main disk
ExecStart=/sbin/hdparm -B 254 /dev/disk/by-id/ata-ST3250824AS_4N127FD1
# Enable automatic spin down after 30 seconds for the second, infrequently used disk
ExecStart=/sbin/hdparm -S 6 /dev/disk/by-id/ata-ST31000528AS_BVP5H5X1

[Install]
WantedBy=suspend.target basic.target

Збережіть цей файл як, /etc/systemd/system/hdsilence.serviceа потім увімкніть його, використовуючи:

systemctl enable hdsilence.service
systemctl daemon-reload

Тут чудово працює і Fedora 20. Дякую!
Якоб

Отже, це робить зміни в /etc/hdparm.conf застарілими?
domih

@domih: Наскільки я можу сказати, hdparm.conf - це Debian, і це не підтримується у Fedora.
Кшиштоф Адамський

6

Ви можете дозволити системі запускати команду під час завантаження, створивши власну системну службу або додавши команду до /etc/rc.d/rc.local.

Якщо ви хочете, щоб команда виконувалася щоразу, коли ви будите систему після сну / сплячки, ви можете додати скрипт, який починається з двох цифр, до /etc/pm/sleep.d/, подивитися інші сценарії в / usr / lib64 / pm-utils / sleep.d (припускаючи x86_64) для отримання детальної інформації. В основному, він приймає параметр залежно від того, в який стан він вводиться. Можливо, вам також знадобиться додати трохи входу до power.d / у тому самому батьківському каталозі, якщо ви хочете працювати по-іншому від заряду акумулятора порівняно з тим, коли підключено.


1
creating your own systemd serviceти можеш бути більш конкретним? У мене немає /etc/rc.d/rc.local файлу.
Піт

1
Systemd документація пояснює синтаксис Systemd сервісного блоку. /etc/rc.d/rc.localФайл тільки сценарій оболонки, створіть його і переконайтеся , що його виконуваним.
jsbillings

3

Для різних налаштувань під час роботи від змінного струму / акумулятора я б це робив за допомогою простого udevправила, наприклад
/etc/udev/rules.d/98-apmsettings.rules:

SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/usr/bin/hdparm -B 128 /dev/sda"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/sda"

Це було встановлено , apmщоб , 254коли ноутбук підключений до мережі і , відповідно , 128коли відключений. Крім того, він повинен працювати завжди, навіть після відновлення з призупинення.


1
Для тих , хто любить копіювати дослівно, нові випуски мають hdparmв /usr/sbinтак налаштувати шляху.
Роман

2

У мене той самий диск (і та ж проблема). Моє дурне, але робоче рішення: я вклав це /etc/crontab:

-*/5  * * * *   root  hdparm -B 254 /dev/sda

Це не просто отримує доступ до накопичувача кожні 12 секунд? Я щось розглядав по цій лінії, але мені якось хотілося б деякого рівня сну, коли його не розмикають.
Піт

Кожні п’ять хвилин. Ви можете написати сценарій обгортки, який перевіряє стан живлення системи.
Hauke ​​Laging

1

Правила udev добре працюють на модулях подій, але щоб отримати правильну поведінку після резюме від призупинення, мені потрібно щось таке /etc/pm/sleep.d:

#!/bin/sh

case "${1}" in
    resume|thaw)
    if grep -q 1 /sys/class/power_supply/ADP1/online; then
      /usr/sbin/hdparm -B 254 /dev/sda
    else
      /usr/sbin/hdparm -B 128 /dev/sda
    fi
;;
esac
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.