Я создаю правила UDEV для автоматического монтирования внешних дисков на безголовом сервере, почти так же, как Gnome-VFS выполняет автоматическое монтирование во время сеанса пользователя.
Меня беспокоит поведение правила во время загрузки. Есть большая вероятность, что один из этих дисков будет подключен во время загрузки, и я бы предпочел, чтобы все подключенные диски монтировались в нужном месте. Диски могут быть либо USB, либо Firewire, и они монтируются из сценария оболочки, запускаемого UDEV при обнаружении «добавления».
Когда UDEV запускает mount
для этих устройств при загрузке система будет готова к их монтированию? Или скрипт сработает слишком рано?
Если еще слишком рано, как скрипт может сказать, что система еще не готова (так что поспите, прежде чем снова проверить)?
Правило UDEV соответствует ACTION=="add"
. Это событие даже срабатывает при загрузке системы?
Просто заполнив udev, чтобы USB-накопитель автоматически монтировался, когда не запуск графического интерфейса (и без использования autofs.)
Да, вероника, удев очень рано бежит.
сценарии агента могут с радостью отключиться и запускаться после сна.
udevadm Set может помочь вам в этом помимо проверки уровня выполнения.
action = "Add" запускается при загрузке, а не только при горячем подключении.
Независимо от того, запускается ли action = "remove" при завершении работы, теперь это рыба другого цвета.
Вы объединяете две концепции. Вы должны использовать UDEV для присвоения постоянных имен устройств дискам, которые будут постоянными независимо от порядка, в котором они подключены. Затем вы можете использовать autofs, чтобы монтировать их по запросу в тех местах, где вы хотите, чтобы они были доступны.
Нет, UDEV отключит этот сценарий (если вообще) задолго до того, как система будет готова к монтированию; UDEV начинается в /etc/rcS.d/S03udev
, а стандартные монтирования fstab происходят в /etc/rcS.d/S35mountall.sh
.
Лучше, чем просто догадываться; check / bin / runlevel (спасибо Brent & rh0dium):
# at boot, system runs /etc/rcS.d/S* scripts,
# then /etc/rcN.d/S* scripts, N is destination runlevel
# runlevel not set at least until we're running /etc/rcN.d scripts
RUNLEVEL=`/sbin/runlevel | cut -d " " -f 2`
until [ $RUNLEVEL -ge 1 ] && [ $RUNLEVEL -le 6 ]; do
sleep 10
RUNLEVEL=`/sbin/runlevel | cut -d " " -f 2`
done
## run the action i want here
Точно сказать не могу.
Я не думаю, что правила udev - лучшее решение для этого. Я думаю, вам будет намного лучше работать с autofs или, возможно, ivman после загрузки системы, udev - это очень низкий уровень, на котором можно подключиться, и есть много инструментов, построенных поверх него, таких как Gnome-VFS в вашем сообщении, которые проще использовать и управлять. В конечном итоге вас беспокоит установка при доступе (например, autofs) и наличие предсказуемых механизмов высокого уровня для обнаружения сбоев или реагирования на них. Если вы работаете на уровне udev, вам снова придется решать все эти проблемы самостоятельно.