mount
mount
— утилита командной строки в UNIX-подобных операционных системах. Применяется для монтирования файловых систем.
В статье приведено описание и примеры для операционной системы GNU/Linux.
Часто mount
используется для SD-карты, USB-накопителя, DVD и других съемных носителей. Команда также доступна в оболочке EFI[1].
Использование
[править | править код]mount /dev/cdrom /mnt/cdrom
Устройство /dev/cdrom монтируется в каталог /mnt/cdrom, если он существует. Начиная от момента монтирования и пока пользователь не отмонтирует файловую систему (или туда не будет смонтировано что-то иное) в каталоге /mnt/cdrom будет содержаться дерево каталогов устройства /dev/cdrom; те файлы, и подкаталоги, которые раньше находились в /mnt/cdrom, сохранятся, но будут недоступны до размонтирования устройства /dev/cdrom.
Размонтирование командой umount
[править | править код]Для размонтирования достаточно указать точку монтирования или имя устройства.
umount /dev/cdrom
Монтирование USB-дисков
[править | править код]Для распространённого случая, когда USB-диск имеет файловую систему FAT32, команда монтирования выглядит так:
mount -t vfat -o codepage=866,iocharset=utf8 /dev/sda1 /mnt
Параметр codepage необходим, чтобы имена созданных файлов корректно отображались в старых ОС (например, DOS). Если дистрибутив использует в качестве кодировки системной локали не UTF-8, то её необходимо указать в параметре iocharset так:
mount -t vfat -o codepage=866,iocharset=koi8-r /dev/sda1 /mnt
Реально используемую кодировку можно определить, выполнив команду locale
.
Полезными опциями при монтировании Flash-дисков являются sync
и flush
. Первая приводит к постоянному сбросу на диск буфера записи, так что данные не теряются при отсоединении flash-диска без размонтирования. Побочный эффект такого монтирования — значительное уменьшение в скорости записи. Вторая опция (доступна только в новых ядрах Linux) ведёт к сбросу буфера на диск после записи последнего файла. Это также способствует сохранению данных в случае удаления диска без размонтирования, но не приводит к падению скорости записи.
Монтирование NTFS дисков/разделов
[править | править код]mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,locale=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp
Монтирование образов дисков
[править | править код]Если имеется образ диска в виде iso-файла, то для его монтирования нужно указать параметр -o loop
и, обычно, тип файловой системы -t iso9660
(необязательно) (file.iso
— это имя файла образа, а /mnt/iso
— точка монтирования):
mount -o loop -t iso9660 file.iso /mnt/iso
Монтирование образов в форматах, отличных от iso потребует преобразования в iso-образ или использования эмулятора. Для преобразования можно использовать утилиты командой строки (см. ниже) или утилиту kiso с графическим интерфейсом. Монтирование образов дисков в Linux
Образы bin/cue
[править | править код]Для преобразования образа bin/cue в iso-образ можно воспользоваться конвертером bchunk:
bchunk image.bin image.cue image.iso
Монтирование сетевых дисков NFS
[править | править код]mount 172.22.2.1:/mnt/iso/ /mnt/iso/
Монтирование сетевых дисков SMB
[править | править код]Пример монтирования сетевых SMB-ресурсов :
mount -t smbfs -o username=user,password=pass //server/dir /mnt/localdir/
mount -t cifs -o username=user,password=pass //server/dir /mnt/localdir/
(Утилита smbfs заменилась в ядре linux на совместимую с ней cifs.) примечания:
- «-t cifs» можно иногда не указывать, если имя монтируемого устройства вида «//server/dir»
mount //server/dir /mnt/localdir/ -o username=user,password=pass
- если для авторизации необходимо указать доменное имя пользователя, то в параметрах команды mount оно указывается как «-o username=domain\\user», однако при указании монтируемого ресурса в /etc/fstab имя пользователя указывается как «domain/user»:
//server/dir /mnt/localdir/ cifs user=domain/user,password=pass 0 0
Монтирование FTP серверов
[править | править код]curlftpfs -v -o iocharset=UTF-8 ftp://user:password@ftp.domain.ru/ /mnt/ftp
Монтирование каталога файловой системы с другого компьютера через ssh
[править | править код]Модуль ядра Fuse (был принят в официальную ветку ядра начиная с 2.6) позволяет непривилегированным пользователям монтировать различные файловые системы.
Для работы необходимо добавить пользователя в группу fuse, сделать это можно вот так:
usermod -G -a fuse user
или
adduser user fuse
или вручную отредактировав файл /etc/group. Ещё необходимо, чтобы загружен был модуль ядра fuse:
modprobe fuse
После этого, можно смонтировать каталог другого компьютера с помощью sshfs:
sshfs user@udalenniy_server:/tmp ~/udalennaya_papka
Для отмонтирования нужно ввести команду:
fusermount -u ~/udalennaya_papka
Параметры монтирования
[править | править код]В случае необходимости при выполнении команды mount
можно указать дополнительные параметры монтирования.
-t Тип файловой системы
[править | править код]Обычно при монтировании определяется автоматически или берётся из файла конфигурации (см. ниже). Но в отдельных случаях нужно указывать тип файловой системы явно. Например при монтировании DVD диска с файловой системой UDF.
mount /dev/cdrom /mnt/dvd -t udf
Если неправильно указать тип файловой системы, то команда mount
выдаст сообщение об ошибке
mount: wrong fs type, bad option, bad superblock on /dev/cdrom, missing codepage or other error In some cases useful info is found in syslog - try dmesg | tail or so
и посоветует посмотреть в конец файла системных сообщений.
Unable to identify CD-ROM format.
В случае успешного монтирования обычно сообщается, что компакт диск монтируется (по умолчанию) в режиме «только для чтения».
mount: block device /dev/cdrom is write-protected, mounting read-only
-o Атрибуты доступа
[править | править код]- Доступ «только для чтения» (ro) или на «чтение и запись» (rw)
- Разрешение или запрещение запуска программ (noexec)
Пример 1 (для образца, взято монтирование USB диска):
mount -t vfat -o rw,noexec,iocharset=utf8,codepage=866 /dev/sda1 /mnt/usb
Пример 2 (для образца, взято монтирование ntfs раздела с установленной Windows XP):
mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,locale=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp
Пример 3 (перемонтировать устройство с доступом на «чтение и запись» (rw))
mount -o remount,rw /dev/sda2
mount --bind
[править | править код]Команда mount
с ключом --bind
или с коротким ключом -B
применяется в системах на ядре Linux (начиная с 2.4.0) для создания синонима каталога в дереве файловой системы. К примеру, команда:
mount --bind /mnt/cdrom/Files /var/ftp/cdrom
позволит обращаться к файлам из /mnt/cdrom/Files через путь /var/ftp/cdrom, где /var/ftp/cdrom — некий уже существующий (возможно, пустой) каталог (его настоящее содержимое будет недоступно до момента размонтирования). Можно также вместо отдельной опции --bind
написать -o bind
, что будет иметь аналогичное действие. Также это позволяет добавить правило в файл /etc/fstab
для монтирования при старте системы:
/olddir /newdir none bind
Преимуществом данного способа создания ссылок на каталоги над символьными ссылками является возможность обходить ограничения доступа к файловой системе, возникающие перед процессами, запущенными в среде chroot или серверами, применяющими принцип chroot. Например, FTP-сервер proftpd делает недоступными символьные ссылки, указывающие на файлы и каталоги вне определённого каталога. Действие команды mount --bind напоминает DOS-овский subst.
Список смонтированных файловых систем
[править | править код]При запуске команды mount без параметров выводится список смонтированных файловых систем:
/dev/md/5 on / type reiserfs (rw,noatime) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec) udev on /dev type tmpfs (rw,nosuid) devpts on /dev/pts type devpts (rw,nosuid,noexec) /dev/md/4 on /files type xfs (rw,noatime) /dev/sda3 on /mnt/a type ext3 (rw,noatime) /dev/sdd2 on /mnt/docs type reiserfs (rw,noatime) shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev) usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) nfsd on /proc/fs/nfs type nfsd (rw,noexec,nosuid,nodev) //ax2/i on /mnt/smb type smbfs (0) 172.22.2.1:/files on /mnt/files type nfs (rw,addr=172.22.2.1)
В этом примере показывается много смонтированных файловых систем (ФС).
- в первой строке сообщается, что в качестве корневой ФС выступает RAID-массив, с ФС типа reiserfs и параметрами монтирования: доступ на чтение и запись (rw) и указанием не обновлять атрибут времени последнего доступа (noatime)
sysfs, udev, devpts
— это стандартные (для систем Linux) виртуальные ФС/dev/sda3
— это раздел SATA дискаusbfs
— это виртуальная файловая система для работы с USB устройствами//ax2/i
— это путь к сетевому диску SMB172.22.2.1:/files
— путь к сетевому диску NFS, находящемся на сервере с IP-адресом 172.22.2.1
Файл конфигурации
[править | править код]
Чтобы облегчить процедуру монтирования, можно внести в файл конфигурации /etc/fstab
соответствующие строки. Примерное содержимое для этого файла:
# <fs> <mountpoint> <type> <opts> <dump/pass> # NOTE: If your BOOT partition is ReiserFS, add the notail option to opts. #/dev/BOOT /boot ext2 noauto,noatime 1 2 /dev/sda5 / reiserfs noatime 0 1 /dev/sda1 none swap sw 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0 #/dev/fd0 /mnt/floppy auto noauto 0 0 # NOTE: The next line is critical for boot! proc /proc proc defaults 0 0 # glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for # POSIX shared memory (shm_open, shm_unlink). # (tmpfs is a dynamically expandable/shrinkable ramdisk, and will # use almost no memory if not populated with files) shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
В дальнейшем можно будет указывать в команде mount
только имя устройства или точку монтирования — все дополнительные параметры будут браться из файла конфигурации. Например, применительно к данной конфигурации, команда mount /mnt/cdrom
будет эквивалентна выполнению команды
mount /dev/cdrom /mnt/cdrom -t iso9660 -o noauto,ro
Другое назначения файла конфигурации — автоматическое монтирование файловых систем при загрузке системы. Если не требуется монтировать определённые файловые системы, то для них в файле конфигурации нужно указать параметр noauto
.
Примечания
[править | править код]- ↑ Mikael Olsson. Loops // PHP Quick Scripting Reference. — Berkeley, CA: Apress, 2013. — С. 25–28. — ISBN 978-1-4302-6283-1, 978-1-4302-6284-8.