Как примонтировать флешку в Linux
В наши дни очень большую популярность у пользователей набрали USB флешки. Они используются для обмена файлами, различными фильмами и документами, установки операционных систем, а также восстановления системы после сбоя. Чтобы работать с флешкой в Linux ее нужно примонтировать в корневую файловую систему.
Дело в том, что организация файловой системы Linux немного отличается от того, что мы привыкли видеть в Winodws. Здесь нет никаких дисков C,D,E и так далее, есть только корень, самая верхняя точка файловой системы, в подкаталоги которой подключаются все жесткие диски и внешние носители.
Если в системе используется окружение рабочего стола, то оно, как правило, берет на себя всю низкоуровневую работу чтобы выполнить монтирование флешки в linux. Система обнаруживает подключенную флешку и в системном лотке всплывает уведомление о подключенном устройстве. Дальше остается кликнуть по значку флешки, чтобы система выполнила все нужные для ее монитрования действия. Но если окружение рабочего стола не запущенно или вам нужно работать в консоли можно выполнить все действия по монтированию флешки вручную.
В этой инструкции мы рассмотрим монтирование usb флешки в linux через терминал, а также настройку автоматического монтирования для оконных менеджеров, которые не поддерживают такую возможность.
Монтирование флешки в Linux
Самое первое, что нужно сделать после того, как вы подключили флешку — узнать имя ее файла в системе. В Unix все устройства имеют свои файлы и именно через эти файлы система и программное обеспечение взаимодействуют с ними.
Файлы флешек и других устройств хранения данных находятся в каталоге /dev. Устройства нумеруются по алфавиту sda, sdb, sdc, sdd и т д. Так как флешка подключается последней у нее будет старшая буква. Например, sdb или sdc. Имя sda принадлежит жесткому диску. Можно, конечно, просто посмотреть содержимое каталога /dev/, но такой способ ненадежный. Мы воспользуемся утилитой fdisk.
Подключите флешку и выполните:
Как видите, здесь мы можем посмотреть детальную информацию об устройстве. Имя файла, список разделов, формат таблицы разделов, список разделов. А главное для нас, размер раздела и его файловую систему. Теперь не сложно понять какая из них флешка. В этом примере это /dev/sdc1
Создаем папку для монтирования:
Теперь монтируем флешку с помощью команды mount:
sudo mount /dev/sdc1 /mnt/usb
Если знаете файловую систему флешки, то лучше ее указать с помощью опции -t. Чаще всего используется FAT, так как ее легко открывают как Windows так и Linux системы:
sudo mount -t vfat /dev/sdc1 /mnt/usb
Монтирование осуществляется от суперпользователя, но если нужно чтобы отмонитровать флешку мог любой нужно указать опцию users:
sudo mount -t vfat -o users /dev/sdc1 /mnt/usb
По умолчанию владельцем файлов на флешке при монтировании устанавливается root, поэтому если вы захотите работать с флешкой через файловый менеджер, то нужно будет его запускать с правами суперпользователя или же сразу примонтировать флешку в linux таким образом, чтобы владельцем был ваш пользователь. Для этого укажите группу и id своего пользователя в опциях uid и gid:
sudo mount -o users,uid=1000,gid=1000 /dev/sdc1 /mnt/usb
Удостовериться что флешка подключена можно посмотрев содержимое каталога, в который мы ее монтировали:
Или выполнив команду mount:
После завершения работы с флешкой не забудьте ее отмонтировать. Потому что иначе данные могут быть не сохранны или вообще повреждена файловая система флешки:
Автоматическое монтирование флешки в Linux
Популярные окружения рабочего стола выполняют монтирование флешки linux автоматически, как только она подключена к системе или по клику на ярлыке. Мы можем это реализовать с помощью службы udisks2.
Udisks — это служба dbus, позволяющая другим программам и пользователю взаимодействовать с udev. Мы можем получать сообщения о только что подключенных устройствах, выполнять их монтирование и отключение. Окружения рабочего стола используют именно этот сервис для монтирования устройств.
Мы тоже можем использовать его для ручного монтирования. Здесь даже есть несколько плюсов. Во-первых, мы можем монтировать без прав суперпользователя, во-вторых, не нужно создавать папку.
Для монтирования используется такая команда:
udisksctl mount -b /dev/sdc1
Здесь /dev/sdc1 — файл нашей флешки, а опция -b указывает, что нужно монтировать блочное устройство. Так же как и в mount здесь можно задать опции монтирования -o и файловую систему -t. Флешка будет примонтирована в папку /run/имя_пользователя/uuid-флешки/
Для размонтирования используется аналогичная команда:
udisksctl unmount -b /dev/sdc1
Автоматическое монтирование usb флешки в linux можно настроить с помощью утилиты udiskie. Все новые подключенные флешки будут автоматически подключаться, после подключения устройства будет всплывать окно с предложением открыть файловый менеджер, а также значок, с помощью которого можно получить доступ к каждому из устройств.
Устанавливается утилита в Ubuntu командой:
Дальше остается запустить программу:
Теперь все подключаемые устройства будут автоматически монтироваться с помощью udisks. Рассмотрим что значат опции:
- -a — выполнять автоматическое монтирование
- -n — показывать всплывающее уведомление
- -t — показывать значок в трее.
Выводы
Теперь монтирование флешки linux не вызовет у вас проблем. Даже если у вас не будет работать окружение рабочего стола и придется делать все вручную. Если остались еще вопросы, спрашивайте в комментариях.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
автоматическое монтирование подключаемых устройств через udev
Задача автоматического монтирования флешек решается довольно просто в KDE или GNOME — эти среды можно настроить так, что они сами всё смонтируют, откроют файловый менеджер и покажут значок в трее. Но что делать, если у вас только консоль или стоит, например, awesome? Или вы не хотите разбираться с конкретным DE, а ищите универсальное решение?
Независимое от DE решение есть — udev.
Создаём новый файл /etc/udev/rules.d/automount.rules со следующим содержанием:
ACTION=="add" KERNEL=="sd[c-z]4" RUN+="/bin/mkdir -p /mnt/%E_%E_%n" ACTION=="add" KERNEL=="sd[c-z]9" RUN+="/bin/mount -o uid=1000 /dev/%k /mnt/%E_%E_%n" ACTION=="remove" KERNEL=="sd[c-z]2" RUN+="/bin/rmdir /mnt/%E_%E_%n"
Укажем udev-у, что появилось новое правило:
sudo udevadm control —reload-rules
Результат
Вставляю флешку и вижу каталог /mnt/KINGMAX_Flash_Disk_1, в котором содержимое флешки. Размонтирую и вынимаю — каталог пропал.
Замечания
1. KERNEL==«sd[c-z]1» — значит, что будет срабатывать на все устройства вида /dev/sdc1 /dev/sdc2, /dev/sdg7. У меня 2 жестких диска: sda и sdb, поэтому я начал regex с «с».
2. mount -o uid=1000 — зашит id пользователя, который будет owner-ом. Если у вас не стандартный, то подправьте (проверка id -u). Конечно, можно действовать через группы и маски, но я выбрал наиболее простое решение.
umount
Проблему размонтирования (нужны права суперпользователя) я решил так:
1. sudo visudo
2. добавить строчку %wheel ALL= NOPASSWD: /bin/umount
upd
Как заметил darkk, ID_VENDOR=»; /bin/rm -rf /;» — потенциальная дыра в безопасности, поэтому лучше перестраховаться в ущерб наглядности:
ACTION=="add" KERNEL=="sd[c-z]5" RUN+="/bin/mkdir -p /mnt/%k" ACTION=="add" KERNEL=="sd[c-z]4" RUN+="/bin/mount -o uid=1000 /dev/%k /mnt/%k" ACTION=="remove" KERNEL=="sd[c-z]9" RUN+="/bin/rmdir /mnt/%k"