Почему мое приспособление на udev не остается на месте?

У меня есть компьютер, на котором работает CentOS 7. Я пытаюсь настроить правило udev для автоматической установки USB-накопителя (с именем 'sdb1') в / mnt / flash всякий раз, когда он подключен.

Сценарий udev не работал (см. Ниже), поэтому вместо этого я поставил свои команды в сценарий bash и имел udev запуск сценария bash, чтобы я мог видеть, что происходит.

Проблема №1: Если я пытаюсь напрямую создать / mnt / flash из моего сценария bash, это не удается из-за того, что корневая файловая система доступна только для чтения. Я могу подтвердить, что корневая файловая система НЕ доступна только для чтения. Моя система уже загружена. Однако, если я вставляю свой USB-накопитель, пусть udev запускает мой скрипт, конечно, когда я запускаю «mount | logger 'в моем скрипте показывает, что root читается только.

Я работал над этой проблемой, запустив «mount -o remount, rw /» в верхней части моего скрипта.

Проблема №2: Я могу создать / mnt / flash и смонтировать / dev / sdb1 в / mnt / flash успешно. Я запускаю 'mount | logger "после этого и увидеть, что он установлен в / var / log / messages. Однако, когда все сказано и сделано, / dev / sdb1 не монтируется. Я даже поставил 5-секундную задержку в моем скрипте и запустил «mount | logger "второй раз. Оба раза показывают, что / dev / sdb1 установлен на / mnt / flash. Однако, если я запускаю «mount» из другого терминала, пока все это происходит, я никогда не вижу / dev / sdb1, смонтированного где угодно.

Я схожу с ума, или udev делает какие-то странные вещи в файловых системах, пока он работает?

скрипт udev: /etc/udev/rules.d/99-usb-automount.rules

#Only operate on sdb1 KERNEL!="sdb1", GOTO="usb-automount-end" ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="usb-automount-end" #import useful variables from blkid program IMPORT{program}="/sbin/blkid -o udev -p %N" #ignore anything other than vfat filesystems ACTION=="add", ENV{ID_FS_TYPE}!="vfat", GOTO="usb-automount-end" #remount root as read-write. Not sure why we have to do this! #ACTION=="add", RUN+="/bin/mount -o remount,rw /" #mount to /mnt/flash #ACTION=="add", RUN+="/bin/mkdir -p /mnt/flash" #ACTION=="add", RUN+="/bin/mount -t vfat -o dmask=000,fmask=111 /dev/%k /mnt/flash" ACTION=="add", RUN+="/root/test_run.sh", OPTIONS="last_rule" #clean up after removal #ACTION=="remove", RUN+="/bin/umount -l /mnt/flash" #label for goto end LABEL="usb-automount-end" 

Вот /root/test_run.sh:

 #!/bin/bash -x logger "running mount" mount | logger logger "remounting root" mount -o remount,rw / 2>&1 | logger logger "remount done" mount | logger logger "Running script. Adding dir" mkdir -p /mnt/flash2 2>&1 | logger logger "Directory added... mounting." mount -t vfat -o dmask=000,fmask=111 /dev/sdb1 /mnt/flash2 2>&1 | logger logger "Mounted" mount | logger logger "Sleeping 5 then re-checking" sleep 5 mount | logger 

Редактирование 1: Отключение проблемы с установкой SELinux # 1. Тем не менее, я все еще не могу заставить / dev / sdb1 оставаться установленным после udev. По-прежнему появляется почти вторая таблица монтирования, которая поддерживается из контекста udev.

  • udev для устройства USB и игнорирование других
  • Правила Udev для устройства с несколькими интерфейсами
  • Существует ли единый способ обнаружения информации об устройствах?
  • Программа не заканчивается при вызове из udev
  • sysfs и devtmpfs
  • udev клавиатура переназначения с hwdb для дополнительных клавиатур
  • Инструмент для автоматического применения конфигурации RandR при подключении внешнего дисплея
  • Как создать правило udev для подключения только USB-накопителя?
  • One Solution collect form web for “Почему мое приспособление на udev не остается на месте?”

    Проблема №1 была вызвана SELinux. Поскольку я не нуждаюсь в этом для этой системы, я просто отключил ее.

    Проблема №2 была вызвана установкой udev (указанной в сценарии systemd), которая заставляет пространство имен udev сохранять «подчиненную» копию флагов монтирования. Изменение этого параметра на «общий» устраняло проблему. См. Более подробный ответ здесь: https://unix.stackexchange.com/a/154318/41988

    Interesting Posts

    Причина использования startproc, killproc и checkproc в сценариях инициализации типа Sys-V в OpenSUSE

    Эквивалент Unix / Linux для проверки обхода байпаса Windows

    Как отключить SSLv2 и SSLv3 в ssl.conf от Apache на CENTOS 6.5?

    Заменить строку 1 только при наличии строки 2, 3 или 4

    Как настроить сервер для использования сети IPv6

    можно ли запустить ядро ​​ubuntu на корневую файловую систему fedora?

    Почему procmail отправляет копию входящего сообщения отправителю, если он встречает код выхода?

    Печать интерфейса-ipaddress с помощью одной команды (по каналам)

    Используйте специальную пару ключей SSH при подключении через ssh и временно игнорируйте все остальные клавиши?

    Отменить фиксацию и передать их ветке?

    Как запустить цепочку процессов из оболочки

    Ограничить размер окна при максимизации в Xfce

    связывать монтаж и выход df

    Настройка электронной почты GMX с помощью SSMTP

    Дата входа пользователя и время входа в систему

    Linux и Unix - лучшая ОС в мире.