после долгих изысканий выяснилось что собственно к моменту старта /opt/etc/init.d/S81transmission монтирование дисков со всеми настроечными файлами еще не произошло поэтому ничего и не работает, аналогично и по медиатомбу... вопрос тогда к знатокам при рестарте дюны какие диски уже сразу смонтированы ибо /tmp/mnt/storage тупо не доступен :-) может быть не стоит использовать /tmp/mnt/storage а другие директории надо?
Ох уж это запаздывание подмонтирования нужного диска в момент выполнения загрузочных скриптов Optware...
Недавно эта набившая оскомину проблема надоела мне окончательно и я решил попробовать решить ее раз и навсегда. Как ни странно, учитывая мой ничтожный опыт программирования скриптов командной оболочки под Linux - получилось.
Делюсь рецептом, предполагая, что в /opt/etc/init.d уже лежат нужные загрузочные скрипты (например, S81transmissiond, запускающий Transmission) и есть желание в этих скриптах использовать диск (будем называть его /tmp/mnt/storage/WantedDisk) где хранятся настроечные файлы Transmission, причем этот диск может быть не подмонтирован к моменту запуска скриптов. Тогда, чтобы гарантировать подмонтирование нужного диска до выполнения скриптов, можно сделать следующее:
1. Чтобы не засорять загрузочную папку, желательно переместить из нее в другое место скрипт S81transmissiond, а также все другие скрипты, где есть желание использовать WantedDisk (например, S80swap, монтирующий файл подкачки). Я буду считать, что скрипты перемещены в папку /opt/etc.
2. В загрузочной папке /opt/etc/init.d создать файл (например, S50trigger), в который поместить код:
#!/bin/sh
opt/etc/delayedmounting.sh & exit
Не забудьте сделать файл S50trigger исполняемым.
3. В папке /opt/etc создать файл delayedmounting.sh), в который поместить код:
#!/bin/sh
#
# Log file initialization
#
MOUNT_LOG="/var/log/delayedmounting.log"
touch $MOUNT_LOG
echo `date`" - mounting is waited..." >> $MOUNT_LOG
#
# Waiting until target drive is mounted or specified number of delays is occured
#
TARGET_DRIVE="WantedDisk"
TARGET_PATH="/tmp/mnt/storage/"$TARGET_DRIVE
COUNTER="0"
MAX_DELAYS="48"
DELAY_INTERVAL="5"
until [ -a $TARGET_PATH ]; do
let COUNTER++
if [ $COUNTER -gt $MAX_DELAYS ]; then
echo `date`" - target drive "$TARGET_DRIVE" mounting is failed after "$MAX_DELAYS" delays." >> $MOUNT_LOG
exit
fi
echo `date`" - delay interval "$COUNTER" ("$DELAY_INTERVAL" sec) is started" >> $MOUNT_LOG
sleep $DELAY_INTERVAL
done
echo `date`" - Target drive "$TARGET_DRIVE" is mounted. The complete list of mounted drives:" >> $MOUNT_LOG
ls -la "/tmp/mnt/storage" >> $MOUNT_LOG
#
# Launching user programs
#
/opt/etc/userprograms.sh $TARGET_PATH $MOUNT_LOG
Опять таки, не забудьте сделать файл delayedmounting.sh исполняемым, а также поменять в 13-й строке кода строку WantedDisk на реальное имя нужного диска.
4. В папке /opt/etc создать (еще раз напоминаю, исполняемый!) файл userprograms.sh, в который поместить все нужные вызовы загрузочных скриптов. Например, для автозапуска Transmission файл должен выглядеть следующим образом:
#!/bin/sh
#
# Starting transmission daemon
#
/opt/etc/S81transmissiond start & echo `date`" - transmission daemon start is attempted" >> $2
5. Я лично перед запуском Transmission пытаюсь также подмонтировать файл подкачки, для чего в файл userprograms.sh включил такой код:
#
# Swap file mounting
#
SWAP_FILE=$1/.swapfile
if [ -a $SWAP_FILE ]; then
/sbin/swapon $SWAP_FILE >> $2 && echo `date`" - swap file is mounted" >> $2
else
echo `date`" - swap file is not found" >> $2
fi
При этом предполагается, что файл подкачки подготовлен так, как описывается здесь.
6. Заключительные замечания:
- Если диск WantedDisk не подключен к Дюне или неисправен - его монтирование станет, естественно, невозможным и скрипт userprograms.sh не будет выполнен.
- Лог работы скрипта может быть найден в /var/log/delayedmounting.log.
- Не вздумайте тупо копировать содержимое delayedmounting.sh в S50trigger. Ключевым условием успеха всей процедуры является наличие в S50trigger строки '& exit'. Уберите ее - и sleep любой продолжительности никак не приблизит монтирование нужного диска.
- Указания на ошибки и улучшения с благодарностью принимаются.