Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash.
А как сделать так, чтобы при вставке флэшки эта команда выполнялась сама и флэшка оказывалась уже примонтированной?
При первом обращении к смонтированной флэшке наблюдается некоторая ощутимая (несколько секунд) задержка. С чем это может быть связано и можно ли как-то от нее избавиться?
И еще — можно ли как-то в своей программе (на С, С++) перехватить событие монтирования флэшки и получить какое-то уведомление на это событие?
Re: Как автоматически монтировать usb флэшку при вставке?
Здравствуйте, coder9999, Вы писали:
C>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. C>А как сделать так, чтобы при вставке флэшки эта команда выполнялась сама и флэшка оказывалась уже примонтированной?
Я сделал /etc/udev/rules.d/automount.rules (где то нагуглил):
# automounting usb flash drives
# umask is used to allow every user to write on the stick
# we use --sync in order to enable physical removing of mounted memory sticks -- this is OK for fat-based sticks
# I don't automount sda since in my system this is the internal hard drive
# depending on your hardware config, usb sticks might be other devices than sdb*
ACTION=="add",KERNEL=="sdb*", RUN+="/usr/bin/pmount --sync --umask 000 %k"
ACTION=="remove", KERNEL=="sdb*", RUN+="/usr/bin/pumount %k"
ACTION=="add",KERNEL=="sdc*", RUN+="/usr/bin/pmount --sync --umask 000 %k"
ACTION=="remove", KERNEL=="sdc*", RUN+="/usr/bin/pumount %k"
Ну, точнее, у меня на pmount/pumount свой враппер, который дополнительно перестартует nfs сервер, а то клиент, зараза, не отпускает маунтпоинт, но это детали.
C>При первом обращении к смонтированной флэшке наблюдается некоторая ощутимая (несколько секунд) задержка. С чем это может быть связано и можно ли как-то от нее избавиться? C>И еще — можно ли как-то в своей программе (на С, С++) перехватить событие монтирования флэшки и получить какое-то уведомление на это событие?
Этим не интересовался... Ну раз udev может, то и ты можешь, в принципе то
Re[2]: Как автоматически монтировать usb флэшку при вставке?
По первому вопросу можно autofs. Тут (https://linuxconfig.org/automatically-mount-usb-external-drive-with-autofs) описано хорошо.
А по второму вопросу очень хороший вариант использовать inotify.
Надо открыть каталог куда идет монтирование и ловить события. Вопрос какие события ловить. Тут я бы сделал простенькую тестовую программу,
которая выведет все события при монтировали и выбрать из полученного потока те, которые будут однозначно характеризовать факт монтированния.
Кстати тестовую программку можно и не на С делать, а взять готовый скрипт на Python-е или Perl-е. Тут (https://github.com/rvoicilas/inotify-tools/wiki) можно увидеть варианты (в конце страницы).
Здравствуйте, aik, Вы писали:
aik>Здравствуйте, coder9999, Вы писали:
C>>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. C>>А как сделать так, чтобы при вставке флэшки эта команда выполнялась сама и флэшка оказывалась уже примонтированной?
aik>Я сделал /etc/udev/rules.d/automount.rules (где то нагуглил): aik>
aik># automounting usb flash drives
aik># umask is used to allow every user to write on the stick
aik># we use --sync in order to enable physical removing of mounted memory sticks -- this is OK for fat-based sticks
aik># I don't automount sda since in my system this is the internal hard drive
aik># depending on your hardware config, usb sticks might be other devices than sdb*
aik>ACTION=="add",KERNEL=="sdb*", RUN+="/usr/bin/pmount --sync --umask 000 %k"
aik>ACTION=="remove", KERNEL=="sdb*", RUN+="/usr/bin/pumount %k"
aik>ACTION=="add",KERNEL=="sdc*", RUN+="/usr/bin/pmount --sync --umask 000 %k"
aik>ACTION=="remove", KERNEL=="sdc*", RUN+="/usr/bin/pumount %k"
aik>Ну, точнее, у меня на pmount/pumount свой враппер, который дополнительно перестартует nfs сервер, а то клиент, зараза, не отпускает маунтпоинт, но это детали.
C>>При первом обращении к смонтированной флэшке наблюдается некоторая ощутимая (несколько секунд) задержка. С чем это может быть связано и можно ли как-то от нее избавиться? C>>И еще — можно ли как-то в своей программе (на С, С++) перехватить событие монтирования флэшки и получить какое-то уведомление на это событие?
aik>Этим не интересовался... Ну раз udev может, то и ты можешь, в принципе то
Re: Как автоматически монтировать usb флэшку при вставке?
Здравствуйте, coder9999, Вы писали:
C>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. C>А как сделать так, чтобы при вставке флэшки эта команда выполнялась сама и флэшка оказывалась уже примонтированной?
Здравствуйте, coder9999, Вы писали:
C>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash.
"Готовы для десктопа" (с)
Еще и правила для многократнопокорёженного UDEV приходится зачем-то где-то как-то гуглить.
В тред призываются линуксоиды вроде netch (вот в ЖЖ, если упомянуть особым образом некоего юзера, ему придет уведомление, почему такого нет на КЫВТе?)
Здравствуйте, Слава, Вы писали:
C>>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. С>"Готовы для десктопа" (с)
Чукча писатель?
Matrix has you...
Re: Как автоматически монтировать usb флэшку при вставке?
Здравствуйте, coder9999, Вы писали:
C>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. C>А как сделать так, чтобы при вставке флэшки эта команда выполнялась сама и флэшка оказывалась уже примонтированной?
Здравствуйте, Слава, Вы писали:
C>>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash.
С>"Готовы для десктопа" (с)
С>Еще и правила для многократнопокорёженного UDEV приходится зачем-то где-то как-то гуглить.
Это вера, старик Не насмехайся над ней, у нас статья в УК есть, можно и присесть
Здравствуйте, coder9999, Вы писали:
C>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. C>А как сделать так, чтобы при вставке флэшки эта команда выполнялась сама и флэшка оказывалась уже примонтированной?
Правильно про udev говорят, но это если init. Если systemd, то там вроде есть готовые юниты, навскидку не скажу, лень лезть то покури это и это
C>При первом обращении к смонтированной флэшке наблюдается некоторая ощутимая (несколько секунд) задержка. С чем это может быть связано и можно ли как-то от нее избавиться?
Ну навскидку: подбитая флешка, нестандартная для линупса фс, большая фс с кучей мелочи в себе, длинный шнурок, порт на передней панели...
В логах чо?
C>И еще — можно ли как-то в своей программе (на С, С++) перехватить событие монтирования флэшки и получить какое-то уведомление на это событие?
Похоже тебе надо это
Здравствуйте, Sheridan, Вы писали:
C>>>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. С>>"Готовы для десктопа" (с)
S>Чукча писатель?
Думаю читатель. Потому что знает, что если в чистой системе без DE просто ничего не работает, то в разных дистрах с разными DE возникают варианты: работает, не работает, работает в зависимости от фазы луны. С учетом количества дистров и DE и их версий обычный пользователь остается без шансов найти какую-то информацию, как заставить это работать
Здравствуйте, Marty, Вы писали:
C>>>>Есть линукс, чистая консоль без какого-либо Desktop Environment. При вставке флэшки приходится делать команду вида mount /dev/sdc /media/flash. С>>>"Готовы для десктопа" (с) S>>Чукча писатель? M>Думаю читатель. Потому что знает, что если в чистой системе без DE просто ничего не работает, то в разных дистрах с разными DE возникают варианты: работает, не работает, работает в зависимости от фазы луны. С учетом количества дистров и DE и их версий обычный пользователь остается без шансов найти какую-то информацию, как заставить это работать