Làm cách nào tôi có thể chạy lệnh hdparm sau khi khởi động và tiếp tục trên Fedora 19?


10

Tôi đã mua một HD mới (WD5000BPVT) không may cố ngủ sau mỗi 5-8 giây. Không chỉ có tiếng ồn khi bấm, âm thanh kéo dài 1 giây thêm độ trễ rất đáng chú ý trong sử dụng hàng ngày.

Tôi đã tìm thấy hdparm -B 254 /dev/sdasẽ vô hiệu hóa giấc ngủ rất ngắn nhưng tôi không biết cách thực thi cài đặt này mỗi khi ổ đĩa được bật. Các dconf-editorứng dụng và 'Tùy chọn quản lý nguồn' đều không liên quan gì đến cài đặt HD. Tôi không có bất kỳ /etc/hdparmhoặc /etc/acpicon đường. MATE là người quản lý cửa sổ.

Trên Fedora 19, làm cách nào tôi có thể buộc lệnh này chạy bất cứ khi nào ổ đĩa được kích hoạt?

Câu trả lời:


12

Tôi đã có cùng một vấn đề không có giải pháp nào ở đây phù hợp với nhu cầu của tôi. Sử dụng cron thực sự là một cách giải quyết, không phải là giải pháp, các quy tắc udev được chạy khi nguồn được kết nối / ngắt kết nối nhưng không phải sau khi tạm dừng / nối lại và pm-utilskhông còn được sử dụng theo mặc định trong Fedora 19 khi bạn ví dụ đóng nắp máy tính xách tay.

systemdhiện tại chịu trách nhiệm tạm dừng / ngủ đông, tôi nghĩ rằng cách duy nhất thích hợp để xử lý tình huống này là tạo một systemdđơn vị sẽ chạy cả sau khi khởi động và sau khi tiếp tục tạm dừng.

Ghi chú:

  • Bằng cách sử dụng /dev/disk/by-id/...thay vì /dev/sda, bạn luôn chắc chắn lấy đúng đĩa (sda, b, c tùy thuộc vào thứ tự chúng được phát hiện bởi kernel)
  • Bạn có thể có nhiều ExecStartdòng để bạn có thể cấu hình nhiều đĩa

Đây là đơn vị tôi đã viết:

[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

Lưu tệp này dưới dạng /etc/systemd/system/hdsilence.servicevà sau đó kích hoạt nó bằng cách sử dụng:

systemctl enable hdsilence.service
systemctl daemon-reload

Hoạt động tuyệt vời ở đây trên Fedora 20, quá. Cảm ơn bạn!
Jakob

Vì vậy, điều này làm cho những thay đổi thành /etc/hdparm.conf trở nên lỗi thời?
domih

@domih: Theo như tôi có thể nói với hdparm.conf là một thứ Debian và nó không được hỗ trợ trên Fedora.
Krzysztof Adamski

6

Bạn có thể để hệ thống chạy lệnh trong khi khởi động bằng cách tạo dịch vụ systemd của riêng bạn hoặc thêm lệnh vào /etc/rc.d/rc.local.

Nếu bạn muốn lệnh chạy mỗi khi bạn đánh thức hệ thống sau khi ngủ / ngủ đông, bạn có thể thêm một tập lệnh bắt đầu bằng 2 chữ số vào /etc/pm/s ngủ.d/, hãy xem các tập lệnh khác trong / usr / lib64 / pm-utils / ngủ.d (giả sử x86_64) để biết thêm chi tiết. Về cơ bản, nó cần một tham số tùy thuộc vào trạng thái mà nó đang nhập. Bạn cũng có thể cần thêm một số đăng nhập vào power.d / trong cùng thư mục cha nếu bạn muốn hoạt động khác nhau về năng lượng pin so với khi cắm.


1
creating your own systemd serviceBạn có thể cụ thể hơn không? Tôi không có tệp /etc/rc.d/rc.local.
Pete

1
Các tài liệu systemd giải thích cú pháp của đơn vị sự nghiệp systemd. Các /etc/rc.d/rc.localtập tin chỉ là một kịch bản shell, tạo nó và đảm bảo thực thi nó.
jsbillings

3

Đối với các cài đặt khác nhau khi chạy trên AC / pin, tôi sẽ thực hiện theo udevquy tắc đơn giản , ví dụ
/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"

Điều này sẽ được đặt apmthành 254khi máy tính xách tay được cắm và tương ứng 128khi rút phích cắm. Ngoài ra, nó sẽ luôn hoạt động, ngay cả sau khi nối lại từ việc đình chỉ.


1
Đối với những người thích sao chép nguyên văn, các bản phát hành mới hơn có hdparmtrong /usr/sbin, vì vậy hãy điều chỉnh các đường dẫn.
La Mã

2

Tôi có cùng một đĩa (và cùng một vấn đề). Giải pháp ngu ngốc nhưng hiệu quả của tôi: Tôi đã đưa nó vào /etc/crontab:

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

Điều này không chỉ đơn giản là truy cập vào ổ đĩa cứ sau 12 giây? Tôi đã xem xét một cái gì đó dọc theo dòng đó nhưng tôi muốn có một số mức độ ngủ khi không bị trói buộc.
Pete

Cứ sau năm phút. Bạn có thể viết một tập lệnh bao bọc để kiểm tra trạng thái năng lượng của hệ thống.
Hauke ​​Laging

1

Các quy tắc udev hoạt động tốt trên các sự kiện cắm, nhưng để có được hành vi chính xác sau khi tiếp tục tạm ngưng, tôi cần một cái gì đó như thế này trong /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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.