USB storage devices (Русский)
В этом документе описываются способы использования различных USB накопителей в Linux. Это также касается и других устройств, таких как цифровые камеры или телефоны, которые распознаются как обычные USB накопители.
Если у вас свежая система со стандартным ядром Arch и современная среда рабочего стола, USB устройство должно автоматически появляться на рабочем столе при подключении, и лезть в консоль не потребуется.
Автоматическое монтирование с помощью udisks
Это самый простой и самый часто используемый метод. Он используется во многих средах рабочего стола, но может применяться и отдельно.
Подробности и вспомогательные программы описаны в статье udisks (Русский).
Монтирование вручную
Где взять ядро, поддерживающее usb_storage
Если не используется самодельное (самосборное) ядро, то делать ничего не требуется, все официальные ядра Arch Linux настроены как нужно. В случае самосборного ядра следует убедиться, что при компиляции была включена поддержка SCSI, SCSI-Disk и usb_storage. Если установлена последняя версия udev, то можно просто подключить носитель, и система автоматически подгрузит все необходимые модули ядра.
Опознавание устройств
Самое первое, что нужно знать об устройстве, так это его идентификатор, присвоенный ядром. Смотрите fstab (Русский)#Определение файловой системы для подробностей.
lsblk -f
(описанный в статье по ссылке) до и после подключения устройства.Монтирование USB флэш-памяти
Для этого нужно создать папку, в которую в дальнейшем будет монтироваться флэшка:
# mkdir /mnt/usbstick
От имени суперпользователя (root)
Монтировать устройство рутом при помощи команды (только нужно заменить device_node найденным устройством, как было показано выше):
# mount device_node /mnt/usbstick
или
# mount -U UUID /mnt/usbstick
Если mount
не распознаёт формат устройства (файловой системы), то можно попробовать с ключом -t <тип файловой системы>
, а также глянуть в mount(8) для просвещения.
Если монтирование не работает и на устройстве нет важных данных, можно попробовать отформатировать его или даже пересоздать таблицу разделов.
Разрешить запись обычным пользователям
Чтобы непривилегированные пользователи могли записывать данные на USB носитель, нужно прописать следующую команду:
# mount -o gid=users,fmask=113,dmask=002 /dev/sda1 /mnt/usbstick
Если это не сработало, убедитесь, что файловая система монтируема и доступна для записи суперпользователю (смотрите предыдущий раздел).
От имени обычного пользователя посредством fstab
Если вы хотите, чтобы обычный пользователь имел право монтировать и размонтировать устройство, смотрите FAT (Русский)#Запись на FAT32 в качестве обычного пользователя.
Инструменты монтирования
Есть множество инструментов, облегчающих монтирование от имени обычного пользователя.
Решение проблем
Никакие устройства хранения USB не распознаются системой
Если вы подключили USB-накопитель к компьютеру, но он не отображается в списке lsblk или dmesg, убедитесь, что в BIOS включена функция XHCI Handoff и EHCI Handoff.
Устройство USB определилось, но его не получается примонтировать
Если вы недавно обновили ядро, модули для USB-накопителя для вашего текущего ядра были удалены и заменены модулями для свежеустановленного ядра. Эти модули не смогут загрузиться, пока вы не перезагрузитесь и не запустите новое ядро или не выполните откат пакета ядра до версии, соответствующей текущей версии ядра.
Устройство не выключается после размонтирования всех разделов
Невыключение питания устройства может привести к тому, что:
- жёсткий диск не припаркует свою головку, издаст слабый царапающий звук при раскручивании и может деградировать [2], или
- твердотельный диск (особенно старый) не сбросит буферы кэша или не обновит таблицы отображения, что может привести к потере данных [3].
После размонтирования разделов устройство всё ещё включено. Чтобы безопасно извлечь его, необходимо сначала попросить систему выключить его: [4]
# echo 1 > /sys/block/имя_диска/device/delete
Если вы используете udisks, можно использовать следующие команды: [5]
$ udisksctl unmount -b /dev/sdXY $ udisksctl power-off -b /dev/sdX