мне кажется нет, просто скачено туда.
если я ошибаюсь, то как ее использовать?
например при установке
ipkg install hdparm
загружается и устанавливается свежайшая версия проги, которая хоть и успешно устанавливается но не видит диски на старом ядре.
Printable View
Hohmach, я очень благодарен вам за помощь!
и хотя я все сделал как вы писали, hdparm не найден:(
вытягивать из вас по строчке уже стыдно, поэтому решил плюнуть на старое ядро.
пожалуйста помогите с первым вопросом:
1) DIR-320-3.0.5-r4923M + ЖД + hdparm.
ядро 2.6.22
команда
hdparm -B ххх /dev/sda
вручную выполняется и работает как требуется, но нужно ее поставить на автоматическое выполнение.
делал это: (спс dlukanidin)
1. Создаёте папку /tmp/local/sbin
2. Создаёте файл post-mount
3. Меняете у созданного файла атрибут на исполняемый
4. Сохраняете флэш рам
5. Перезагружаетесь
нет эффекта:(
это
http://wl500g.info/showthread.php?18...992#post128992
и это
http://vectormm.net/routers/routery-...a-routera.html
не работает.:mad:
пожалуйста, для совсем идиота, напишите полностью как должен выглядеть скрипт и куда его положить чтобы выполнялась одна единственная команда:
hdparm -B ххх /dev/sda
Code:mkdir /usr/local/sbin
echo "#!/bin/sh" > /usr/local/sbin/post-boot
echo "hdparm -B ххх /dev/sda" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
flashfs save && flashfs commit && flashfs enable && reboot
Скорее всего на момент выполнения post-mount ещё не смонтировался внешний диск
Сделайте чуть по другому - из post-mount или post-boot запустите скрипт который сначала проверяет наличие диска, а потом уже запускает hdparam. Что то типа такого:
Не уверен, что (ls -d /tmp/mnt/*/*) это правильно, писал это для совершенно другой ситуации где было важно наличие на диске определённого каталога, а попробовать сейчас не на чем, в общем это должна быть команда которая выдаёт не пустую строку если диск подключен и пустую в обратном случае.Code:post-mount:
#!/bin/sh
hdparamstart &
hdparamstart:
#!/bin/sh
max_time=20
# wait for disk mount to $max_time sec
for i in $(seq $max_time); do
dir=$(ls -d /tmp/mnt/*/*)
[ "$dir" != "" ] && break
sleep 1
done
hdparm -B ххх /dev/sda
Возможно (mount | grep sda) ???
По идее не может, но мне не приходят на ум другие причины, по которым не выполняется после ребута, а выполняется из putty. Отличие ИМХО скорее всего в таймауте, а это в свою очередь означает, что не закончились некоторые переходные процессы с диском.
Возможно это и не монтирование, а диск просто не готов остановиться сразу после монтирования. Может достаточно и просто sleep 3 вставить например перед запуском hdparam, но это уже - такие костыли из брёвен (если причину не определить, то такой таймаут может зависеть от слишком большого числа факторов и работать только для Вашей конфигурации аппаратуры). Ищите и пробуйте.
P.S. Вот ещё мысль пришла, Диск смонтировался, Вы его останавливаете, а после этого ещё какая то операция с диском производится системой (например какое то отложенное чтение корневого каталога файловой системой, это только предположение), как результат он снова запускается сразу, а Вы этого даже не успеваете увидеть, но команда остановки отменяется.
Может всё таки использовать скрипты с первых страниц этой темы, которые останавливают диск, если в течении некоторого времени не было обращений к нему?
снится мне сон...
post-boot - слишком рано
post-mount - допустим не корректно отрабатывает, странно но допустим,
но pre-shutdown то железно должен отработать!
проснулся, сделал, не работает.:)
получается диск и монтирование не при чем, это в принципе не рабатает, либо не пашут стартовые скрипты либо команда "кривая".
нет никаких сомнений что вся проблема от "неровности" моих рук и недостатке опыта в деле "линоксо-укрощения", но с другой стороны все делаю под зорким руководством старших опытных товарищей, и вы бы заметили явную лажу.
что еще пробовал:
не помогло,
пихал слипы куда надо и куда не надо разной продолжительности
не отпустило,
делал исключительно в vi и в putty т.к. по другому просто не умею.
какие пути не полные? что исправить?
пробовал поновей прошивку r5010M,
перекидывал все "хозяйство" на флешку, а ЖД чистый в холостом ходу - прежняя ситуация.
пробовал на лету:
подключаю ЖД и начинаю вручную запускать команду, примерно на 5 секунде она уже проходит и применяется.
вывод: не умею заставить работать стартовые скрипты.
может что-то еще кроме этого
нужно чтобы они работали?Quote:
mkdir /usr/local/sbin
echo "#!/bin/sh" > /usr/local/sbin/post-boot
echo "hdparm -B ххх /dev/sda" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
flashfs save && flashfs commit && flashfs enable && reboot
уже не знаю какую еще исполнить пляску с ударными инструментами!:confused:
П.С. часто пишут про каретку windows, ее вообще можно увидеть глазами? в vi она видна?
Чело
Чтобы убедится в отработке post-mount, добавь туда
После ребута посмотришь появился /tmp/local/test или нет.Code:echo "post-mount started" > /tmp/local/test
Я думаю post-mount при загрузки не отрабатывает.
пропиши свой код в post-boot, все должно отработать.Quote:
/usr/local/sbin/pre-boot - исполняется до основной инициализации, в момент, когда ещё не подгружены никакие модули ядра, но уже развёрнут flashfs и скопирован начальный образ для /etc из /usr/etc.
/usr/local/sbin/post-boot - исполняется после того, как устройство закончило загрузку и запустило все сервисы, за исключением связанных с веб-камерой и usb дисками (они запустятся примерно через 10 секунд после этого при "обработке" hot plug событий, когда АСУСовский обработчик до них доберётся)
/usr/local/sbin/post-mount - отрабатывает, когда устройство завершает монтирование usb дисков, с тем чтобы Вы могли запустить свои сервисы, которые эти диски используют
/usr/local/sbin/pre-shutdown - работает перед перезагрузкой системы
/usr/local/sbin/post-firewall - исполняется всякий раз, после того как устройство меняет внутренние правила с помощью команд iptables, с тем, чтобы Вы могли внести свои изменения в firewall
И еще тут
укажи полный путь до hdparm, например /tmp/local/hdparm (я не знаю где он у тебя находится).Quote:
hdparm -B ххх /dev/sda
1. В Putty ->
2. Копируем hdparm в папку /usr/local/sbinCode:mkdir /usr/local/sbin
3. В Putty ->
Попробуйте так что ли. Посмотрите, приблизительно через 7 сек после перезагрузки роутера, в логе должна появиться соответствующая строка.Code:echo "#!/bin/sh" > /usr/local/sbin/post-boot
echo "/usr/local/sbin/stophd &" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
echo "#!/bin/sh" > /usr/local/sbin/stophd
echo "sleep 7" >> /usr/local/sbin/stophd
echo "logger \"HD stopped\"" >> /usr/local/sbin/stophd
echo "/usr/local/sbin/hdparm -B ххх /dev/sda" >> /usr/local/sbin/stophd
chmod +x /usr/local/sbin/stophd
flashfs save && flashfs commit && flashfs enable
reboot
Если не появится, то вручную запустите stophd и посмотрите что напишет. Проверьте также параметр XXX должен быть или xxx. Для работы с файлами в роутере удобно использовать программу WINSCP.
Ребята, вы все тут просто волшебники, Оно заработало!
Спасибо за помощь всем.
в общем проверка показала, что post-mount прекрасно работает, а вот команда
hdparm -B ххх /dev/sda,
которая отлично выполняется вручную в Putty там не срабатывает, как и подозревалось с самого начала.:rolleyes:
#!/bin/sh
/opt/sbin/hdparm -B ххх /dev/sda - то что нужно, если hdparm устанавливался ipkg install hdparm.
в итоге: периодическая коррекция параметра АРМ ЖД и контроллер диска сам выполняет всю работу, что является идеальным и изящным решением.
Первый вопрос решен, но пока все не разошлись вернусь ко второму. :D
осилив, наконец, использование более ранней версии hdparm
ситуация не изменилась, диски не видит, в лучшем случае неверные аргументы.
может кто помнит, как это побеждалось?