Понимание процесса загрузки Linux, инициализация подсистемы и правила udev?
Я создаю правила UDEV для автоматического монтирования внешних дисков на автономном сервере, во многом так же, как Gnome-VFS выполняет автоматическое монтирование во время сеанса пользователя.
Я обеспокоен поведением правила во время загрузки. Есть большая вероятность, что один из этих дисков будет подключен во время загрузки, и я бы предпочел, чтобы все подключенные диски были подключены в нужном месте. Диски могут быть либо USB, либо Firewire, и они монтируются из сценария оболочки, запускаемого UDEV при обнаружении "добавления".
Вот мои вопросы:
Когда UDEV запускает
mount
для этих устройств при загрузке система будет готова к монтированию? Или сценарий будет запущен слишком рано?Если это слишком рано, каков хороший сценарий, чтобы сказать, что система еще не готова (так что поспите, прежде чем проверять снова)?
Правило UDEV соответствует
ACTION=="add"
, Это событие даже срабатывает при загрузке системы?
4 ответа
Только что заполучил udev, чтобы заставить USB-накопитель автоматически монтироваться, когда не работает графический интерфейс (и не используется autofs).
Да, Вероника, Удев бежит очень рано.
Сценарии агента могут с радостью отключаться и запускаться после сна.
Udevadm урегулирования может помочь вам в дополнение к проверке уровня выполнения.
action ="Add" запускается при загрузке, а не просто hotplug.
Если действие ="удалить" выполняется при выключении, теперь это рыба другого цвета.
Вы объединяете две концепции. Вы должны использовать UDEV для назначения постоянных имен устройств накопителям, которые будут постоянными независимо от того, в каком порядке они подключены. Затем вы можете использовать autofs для монтирования их по требованию в тех местах, где вы хотите, чтобы они были доступны.
Нет, UDEV отключит этот сценарий (если он вообще появится) задолго до того, как система будет готова к монтированию; UDEV начинается в
/etc/rcS.d/S03udev
и стандартные fstab монтируются в/etc/rcS.d/S35mountall.sh
,Лучше, чем просто гадать; проверьте /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, которые проще использовать и управлять. В конечном счете, вы беспокоитесь о монтировании доступа (то есть автозаполнения) и наличии предсказуемых механизмов высокого уровня для обнаружения или реагирования на сбой. Если вы работаете на уровне udev, вам снова придется заняться всеми этими проблемами.