В Пнд, 02/03/2009 в 06:06 +0300, George Shuklin пишет: > 02.03.09, 02:02, "Mishustin Alexey" <shum...@shumkar.ru>: > > > Инструкция по отключению частой парковки головок харддиска на ноутбуке, > > приведенная на http://forums.debian.net/viewtopic.php?t=32794 , не > > работает. Я сделал все, что там написано, и даже больше (отключил > > Laptop-mode, правил /etc/hdparm.conf и др.), но головки паркуются > > по-прежнему, а hdparm -I /dev/sda | grep Advanced выдает: > > Advanced power management level: 128 > > * Advanced Power Management feature set > > Пробовал уже, от безысходности, класть в кронтаб ежеминутно скрипт > > следующего содержания: > > IFCLICK=`hdparm -I /dev/sda | grep "Advanced Power" | grep '*'` > > if [ -n $IFCLICK ]; then > > hdparm -B 255 /dev/sda > > hdparm -S 0 /dev/sda > > sudo -u shumkar -H /usr/bin/zenity --display=:0.0 --warning > > --title="/usr/local/bin/hdparmer.sh" --text='HDD\ hdparm\ options\ have\ > > been\ reset' & > > fi > > Так этот скрит выводит сообщение при каждом своем запуске - каждую > > минуту. И каждую минуту что-то упорно перенастраивает hdparm обратно на > > 128. > > Только сли я делаю hdparm -B 255 /dev/sda и hdparm -S 0 /dev/sda > > вручную, это остается до следующей перезагрузки/просыпания/ > > подключения/отключения от сети. Но мне неудобно выполнять эти команды > > вручную постоянно. > > Заменил уже все вхождения 'hdparm -B 128' на 'hdparm -B 255' в /etc/acpi > > - не помогло. Все по-прежнему. > > Описанная проблема имеет место быть в Lenny. > > > Опция -k у hdparm'а использовалась?
Применил опцию -k в /etc/hdparm.conf. Не помогло. После любого acpi-события apm по-прежнему включается, hdparm выставляется в -B 128. От батареи ли я работаю, от сети ли - без разницы. Наверное, я где-то накосячил в конфигах, другого объяснения у меня пока нет. Помогите, пожалуйста, разобраться! Прикладываю листинги (в файле). -- С уважением, Алексей Мишустин
======= Листинг 1 ======= # cat /etc/hdparm.conf | sed -n '/[#]/!p' | sed -n '/.\+/p' quiet /dev/sda { apm = 255 spindown_time = 0 dma = on keep_settings_over_reset = on } ======= Листинг 2 ======= # cat /etc/apm/event.d/20hdparm | sed -n '/[#]/!p' | sed -n '/.\+/p' set -e APMD_DRIVES=sda APMD_SPINDOWN=18 HDPARM=/sbin/hdparm [ -x "${HDPARM}" ] || exit 0 [ -n "${APMD_DRIVES}" ] || exit 0 for DRIVE in $APMD_DRIVES; do [ -b "${DRIVE}" ] || exit 0 done [ "${APMD_SPINDOWN}" -gt 0 ] || exit 0 power_conserve () { for DRIVE in $APMD_DRIVES; do "${HDPARM}" -q -S 0 -B 255 "${DRIVE}" || true done } power_performance () { for DRIVE in $APMD_DRIVES; do "${HDPARM}" -q -S 0 -B 255 "${DRIVE}" || true done } choose_power () { if on_ac_power > /dev/null then power_performance else power_conserve fi } if [ "${1}" = "start" ]; then choose_power elif [ "${1}" = "resume" ] && [ "${2}" != "standby" ]; then choose_power elif [ "${1},${2}" = "change,power" ]; then choose_power elif [ "${1}" = "stop" ]; then power_performance fi exit 0 ======= Листинг 3 ======= # cat /etc/acpi/ac.d/90-hdparm.sh | sed -n '/[#]/!p' | sed -n '/.\+/p' . /usr/share/acpi-support/power-funcs DO_HDPARM=y if [ -e /usr/sbin/laptop_mode ] ; then LMT_CONTROL_HD_POWERMGMT=$(. /etc/laptop-mode/laptop-mode.conf && echo "$CONTROL_HD_POWERMGMT") if [ "$LMT_CONTROL_HD_POWERMGMT" != 0 ] ; then DO_HDPARM=n fi fi if [ $DO_HDPARM = y ] ; then getState; for dev in /dev/sd? /dev/hd? ; do if [ -b $dev ] ; then if hdparm -i $dev 2> /dev/null | grep -q 'AdvancedPM=yes' ; then if [ $STATE = "BATTERY" ] ; then hdparm -B 255 $dev else hdparm -B 255 $dev fi fi fi done fi ======= Листинг 4 ======= # cat /etc/acpi/resume.d/90-hdparm.sh | sed -n '/[#]/!p' | sed -n '/.\+/p' . /usr/share/acpi-support/power-funcs DO_HDPARM=y if [ -e /usr/sbin/laptop_mode ] ; then LMT_CONTROL_HD_POWERMGMT=$(. /etc/laptop-mode/laptop-mode.conf && echo "$CONTROL_HD_POWERMGMT") if [ "$LMT_CONTROL_HD_POWERMGMT" != 0 ] ; then DO_HDPARM=n fi fi if [ $DO_HDPARM = y ] ; then getState; for dev in /dev/sd? /dev/hd? ; do if [ -b $dev ] ; then if hdparm -i $dev 2> /dev/null | grep -q 'AdvancedPM=yes' ; then if [ $STATE = "BATTERY" ] ; then hdparm -B 255 $dev else hdparm -B 255 $dev fi fi fi done fi ======= Листинг 5 ======= # cat /etc/laptop-mode/laptop-mode.conf | sed -n '/[#]/!p' | sed -n '/.\+/p' VERBOSE_OUTPUT=0 ENABLE_LAPTOP_MODE_ON_BATTERY=0 ENABLE_LAPTOP_MODE_ON_AC=0 ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=0 MINIMUM_BATTERY_CHARGE_PERCENT=0 DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=0 HD="/dev/[hs]d[abcdefgh]" PARTITIONS="auto /dev/mapper/*" ASSUME_SCSI_IS_SATA=1 LM_BATT_MAX_LOST_WORK_SECONDS=600 LM_AC_MAX_LOST_WORK_SECONDS=360 CONTROL_READAHEAD=1 LM_READAHEAD=3072 NOLM_READAHEAD=128 CONTROL_NOATIME=0 USE_RELATIME=1 CONTROL_HD_IDLE_TIMEOUT=0 LM_AC_HD_IDLE_TIMEOUT_SECONDS=0 LM_BATT_HD_IDLE_TIMEOUT_SECONDS=0 NOLM_HD_IDLE_TIMEOUT_SECONDS=0 CONTROL_HD_POWERMGMT=1 BATT_HD_POWERMGMT=255 LM_AC_HD_POWERMGMT=255 NOLM_AC_HD_POWERMGMT=255 CONTROL_HD_WRITECACHE=0 NOLM_AC_HD_WRITECACHE=1 NOLM_BATT_HD_WRITECACHE=0 LM_HD_WRITECACHE=0 CONTROL_MOUNT_OPTIONS=1 LM_DIRTY_RATIO=60 NOLM_DIRTY_RATIO=40 LM_DIRTY_BACKGROUND_RATIO=1 NOLM_DIRTY_BACKGROUND_RATIO=10 DEF_UPDATE=5 DEF_XFS_AGE_BUFFER=15 DEF_XFS_SYNC_INTERVAL=30 DEF_XFS_BUFD_INTERVAL=1 DEF_MAX_AGE=30 XFS_HZ=100 LM_SECONDS_BEFORE_SYNC=2 То есть Laptop_mode у меня отключен: #cat /proc/sys/vm/laptop_mode 0 ========================= Те же строчки, что и в листингах 3-4 ( if [ $STATE = "BATTERY" ] ; then hdparm -B 255 $dev else hdparm -B 255 $dev fi ), выставлены у меня и в /etc/acpi/battery.d/90-hdparm.sh , /etc/acpi/start.d/90-hdparm.sh , /etc/acpi/suspend.d/90-hdparm.sh . Я уж не стал их сюда тоже лепить. Еще я наделал, сам не знаю зачем ;), в каждой из папок /etc/acpi/ac.d|battery|start|resume|suspend по такому файлу 99-hdd-fix.sh: #! /bin/bash hdparm -B 255 /dev/sda hdparm -S 0 /dev/sda А еще создал пустой файл /etc/pm/power.d/laptop-tools (с единственной строчкой #! /bin/bash), т.к. он был частью успешно сработавшего рецепта от той же самой проблемы на соседнем ноуте с убунтой. В общем, чего только не перепробовал... Плиз хэлп!