Bagaimana saya bisa menjalankan perintah hdparm setelah boot dan melanjutkan pada Fedora 19?


10

Saya membeli HD baru (WD5000BPVT) yang sayangnya mencoba untuk tidur setiap 5-8 detik. Tidak hanya suara klik yang cukup terdengar, waktu putar 1 detik menambahkan latensi yang sangat nyata dalam penggunaan sehari-hari.

Saya menemukan hdparm -B 254 /dev/sdaakan menonaktifkan tidur yang sangat singkat tetapi saya tidak tahu bagaimana menegakkan pengaturan ini setiap kali drive dihidupkan. Aplikasi dconf-editordan 'Preferensi Manajemen Daya' keduanya tidak melakukan apa-apa sehubungan dengan pengaturan HD. Saya tidak memiliki /etc/hdparmatau /etc/acpijalur. MATE adalah manajer jendela.

Pada Fedora 19, bagaimana saya bisa memaksa perintah ini untuk berjalan setiap kali drive diaktifkan?

Jawaban:


12

Saya memiliki masalah yang sama tidak ada solusi di sini yang sesuai dengan kebutuhan saya. Menggunakan cron benar-benar merupakan solusi, bukan solusi, aturan udev dijalankan ketika daya terhubung / terputus tetapi tidak setelah ditangguhkan / dilanjutkan dan pm-utilstidak lagi digunakan secara default di Fedora 19 ketika Anda misalnya menutup laptop Anda.

Karena systemdsekarang bertanggung jawab untuk menangguhkan / berhibernasi, saya pikir satu-satunya cara yang tepat untuk menangani situasi ini adalah dengan membuat systemdunit yang akan berjalan baik setelah boot dan setelah melanjutkan dari suspend.

Catatan:

  • Dengan menggunakan /dev/disk/by-id/...alih-alih /dev/sda, Anda selalu yakin untuk mendapatkan disk yang tepat (sda, b, c tergantung pada urutan mereka terdeteksi oleh kernel)
  • Anda dapat memiliki banyak ExecStartbaris sehingga Anda dapat mengonfigurasi beberapa disk

Inilah unit yang saya tulis:

[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

Simpan file ini sebagai /etc/systemd/system/hdsilence.servicedan kemudian aktifkan menggunakan:

systemctl enable hdsilence.service
systemctl daemon-reload

Berfungsi besar di sini di Fedora 20, juga. Terima kasih!
— Jakob

Jadi ini membuat perubahan ke /etc/hdparm.conf usang?
— domih

@domih: Sejauh yang saya tahu hdparm.conf adalah hal Debian dan tidak didukung pada Fedora.
— Krzysztof Adamski

6

Anda dapat meminta sistem menjalankan perintah saat boot dengan membuat layanan systemd Anda sendiri atau menambahkan perintah ke /etc/rc.d/rc.local.

Jika Anda ingin perintah dijalankan setiap kali Anda membangunkan sistem setelah tidur / hibernasi, Anda dapat menambahkan skrip yang dimulai dengan 2 digit ke /etc/pm/sleep.d/, lihat skrip lain di / usr / lib64 / pm-utils / sleep.d (dengan anggapan x86_64) untuk detail lebih lanjut. Pada dasarnya, dibutuhkan parameter tergantung pada negara mana yang dimasukkan. Anda mungkin juga perlu menambahkan beberapa login ke power.d / di direktori induk yang sama jika Anda ingin beroperasi secara berbeda pada daya baterai dibandingkan dengan ketika dicolokkan.


1
creating your own systemd serviceBisakah Anda lebih spesifik? Saya tidak punya file /etc/rc.d/rc.local.
— Pete

1
The dokumentasi systemd menjelaskan sintaks dari unit pelayanan systemd. The /etc/rc.d/rc.localfile hanya shell script, membuat dan pastikan yang executable.
— jsbillings

3

Untuk pengaturan yang berbeda saat menggunakan AC / baterai, saya akan melakukannya melalui udevaturan sederhana , misalnya
/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"

Ini akan diatur apmke 254saat laptop dicolokkan dan masing-masing 128saat dicabut. Juga, itu harus selalu bekerja, bahkan setelah melanjutkan dari penangguhan.


1
Bagi mereka yang seperti menyalin kata demi kata, rilis baru memiliki hdparmdi /usr/sbin, jadi sesuaikan jalan.
— Roman

2

Saya memiliki disk yang sama (dan masalah yang sama). Solusi bodoh tapi berhasil saya: Saya telah memasukkan itu ke dalam /etc/crontab:

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

Bukankah ini hanya mengakses drive setiap 12 detik? Saya mempertimbangkan sesuatu di sepanjang garis itu, tetapi saya agak ingin tidur pada tingkat tertentu ketika tidak terisi.
— Pete

Setiap lima menit. Anda dapat menulis skrip wrapper yang memeriksa status daya sistem.
— Hauke ​​Laging

1

Aturan udev bekerja dengan baik pada peristiwa plug, tetapi untuk mendapatkan perilaku yang benar setelah melanjutkan dari penangguhan, saya perlu sesuatu seperti ini di /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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.