Назад | Перейти на главную страницу

Понимаете процесс загрузки Linux, инициализацию подсистемы и правила & udev?

Я создаю правила UDEV для автоматического монтирования внешних дисков на безголовом сервере, почти так же, как Gnome-VFS выполняет автоматическое монтирование во время сеанса пользователя.

Меня беспокоит поведение правила во время загрузки. Есть большая вероятность, что один из этих дисков будет подключен во время загрузки, и я бы предпочел, чтобы все подключенные диски монтировались в нужном месте. Диски могут быть либо USB, либо Firewire, и они монтируются из сценария оболочки, запускаемого UDEV при обнаружении «добавления».

Вот мои вопросы:

  1. Когда UDEV запускает mount для этих устройств при загрузке система будет готова к их монтированию? Или скрипт сработает слишком рано?

  2. Если еще слишком рано, как скрипт может сказать, что система еще не готова (так что поспите, прежде чем снова проверить)?

  3. Правило UDEV соответствует ACTION=="add". Это событие даже срабатывает при загрузке системы?

Просто заполнив udev, чтобы USB-накопитель автоматически монтировался, когда не запуск графического интерфейса (и без использования autofs.)

  1. Да, вероника, удев очень рано бежит.

    сценарии агента могут с радостью отключиться и запускаться после сна.

  2. udevadm Set может помочь вам в этом помимо проверки уровня выполнения.

  3. action = "Add" запускается при загрузке, а не только при горячем подключении.

Независимо от того, запускается ли action = "remove" при завершении работы, теперь это рыба другого цвета.

Вы объединяете две концепции. Вы должны использовать UDEV для присвоения постоянных имен устройств дискам, которые будут постоянными независимо от порядка, в котором они подключены. Затем вы можете использовать autofs, чтобы монтировать их по запросу в тех местах, где вы хотите, чтобы они были доступны.

  1. Нет, UDEV отключит этот сценарий (если вообще) задолго до того, как система будет готова к монтированию; UDEV начинается в /etc/rcS.d/S03udev, а стандартные монтирования fstab происходят в /etc/rcS.d/S35mountall.sh.

  2. Лучше, чем просто догадываться; 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
    
  3. Точно сказать не могу.

Я не думаю, что правила udev - лучшее решение для этого. Я думаю, вам будет намного лучше работать с autofs или, возможно, ivman после загрузки системы, udev - это очень низкий уровень, на котором можно подключиться, и есть много инструментов, построенных поверх него, таких как Gnome-VFS в вашем сообщении, которые проще использовать и управлять. В конечном итоге вас беспокоит установка при доступе (например, autofs) и наличие предсказуемых механизмов высокого уровня для обнаружения сбоев или реагирования на них. Если вы работаете на уровне udev, вам снова придется решать все эти проблемы самостоятельно.