Рано или поздно пользователи Linux сталкиваются с таким понятием как монтирование разделов и дисков в Linux. Многие, особенно бывшие пользователи Windows, испытывают трудности с монтированием разделов, хотя если задуматься, то всё очень просто и логично. Ниже приводятся описание процесса монтирования в UNIX-like системах и разбор наиболее типичных случаев. И даже если вы окружены графическим интерфейсом, знание консольных команд может очень пригодиться. Кроме того, узнав пару-тройку полезных команд UNIX, вы приобщитесь к этой чёрной магии и, может быть, начнёте её использовать. Монтирование разделов в Linux - общие слова Если ядро Linux опознало ваше устройство-носитель данных, то оно должно предоставить какой-то внешний интерфейс пользователю для работы с устройством. Этим интерфейсом является создание файлов-устройств в каталоге /dev Пример: Устройствам, подключённым к IDE, будут соответствовать файлы-устройства /dev/hda, /dev/hdb и так далее. Устройствам типа SCSI, а также близкие им по духу SATA-устройства и USB-флешки, будут иметь файлы-устройства /dev/sda, /dev/sdb и тому подобное. Если на диске есть разделы, то цифра в имени файла-устройства будет соответствовать номеру раздела. Пример: если на USB-флешке есть два раздела, то первый будет называться /dev/sda1, а второй /dev/sda2 Монтирование разделов = объяснение системе, как добраться до ваших данных и сделать их доступными для использования. Системе нужно объяснить три простые вещи: 1. какая файловая система на разделе; 2. какой файл-устройство вам нужно; 3. куда его подключить для просмотра = точка монтирования; Каталог, в котором вы будете просматривать содержимое ваших разделов, называется точкой монтирования (mount point). Поэтому нужно объяснить системе - командой или через графический интерфейс - что вы хотите смонтировать, куда и что за файловая система на этом разделе. В переводе на язык UNIX, это звучит так: mount -t vfat /dev/hda3 /mnt/storage Если нужно часто монтировать одни и те же разделы, занесите их в /etc/fstab - это общесистемный конфиг, в котором указаны все необходимые разделы для монтирования. Редактировать этот файл может не абы кто, а только root. Так что разживитесь рутовыми полномочиями и редактируйте /etc/fstab Файл /etc/fstab состоит из колонок, разделителями между которыми являются символы табуляции (клавиша TAB). Вот пример содержимого файла /etc/fstab: # /etc/fstab: static file system information. # # /dev/hda2 / reiserfs notail,noatime 0 1 /dev/hdb /mnt/cdrom iso9660 ro,user,noauto 0 0 /dev/sda1 /mnt/flash vfat iocharset=koi8-r,codepage=866,rw,user,auto 0 0 Формат колонок такой: * Монтируемое устройство (файл-устройство, он же раздел, который вы хотите примонтировать). * Точка монтирования (в какую директорию в файловой системе монтировать). * Тип монтируемой файловой системы. * Опции монтирования (кодировка языка, необходимость монтирования при старте). * Dump (обычно 0). * Pass (обычно 0). Важно, чтобы вы вставляли Тab после каждой колонки при редактировании /etc/fstab Ниже приводятся уточнения для каждого случая файловой системы, но идея монтирования разделов в Linux одна и та же. mount -t vfat /dev/hda1 /home/vasya/tempdir ^^^^ ^^^ ^^^^ ^^^^^^^^^^^ прикрутить тип FAT что прикрутить куда это прикрутить Пишем буквально то, чего хотим: от имени суперпользователя, прикрутить логическую структуру с файловой системой FAT, находящуюся в файле /dev/hda1, к каталогу /home/vasya/tempdir. После всех операций раздел следует размонтировать, чтобы данные на него записались из памяти - точно так же, как при работе с флешками в Windows. Для этого следует дать команду: # umount /mnt/XX или $ sudo umount /mnt/XX где /mnt/XX - точка монтирования. Если ни одно приложение не работает с разделом, то раздел размонтируется, отключится и данные на него полностью запишутся. После этого устройство можно безопасно извлечь. Чтобы посмотреть, что можно смонтировать, и увидеть информацию о разделах, можно воспользоваться командой (запуск от root): # fdisk -l Увидите что-то вроде: Disk /dev/hda: 60.0 GB, 60011642880 bytes 255 heads, 63 sectors/track, 7296 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 1 36 289138+ 82 Linux swap / Solaris /dev/hda2 * 37 7296 58315950 83 Linux Всё очень просто и логично. Как и многое другое в UNIX. Предварительные действия перед монтированием Прежде, чем монтировать разделы, нужно создать точки монтирования. Точки монтирования следует создавать в каталогах /mnt или /media. Для этого даём команду: $ sudo mkdir /mnt/win или # mkdir /mnt/win и даём каталогу права доступа для обычных пользователей: $ sudo chmod 777 /mnt/win или # chmod 777 /mnt/win Это позволит считывать и записывать данные не только суперпользователю-руту, но и обычному пользователю. Даже если в системе вы - единственный пользователь. Свою точку монтирования в директории /mnt нужно создать для каждого раздела. Далее приводятся описания нескольких типичных случаев монтирования разделов и файлов. Как примонтировать раздел с файловой системой FAT в Linux Самое главное здесь - кодировка. Замечательная корпорация Microsoft изобрела свою собственную кодировку CP866 для MS DOS, CP1251 для Windows и только в последнее время прозрела до UTF8. Благодарим Microsoft за изобретение велосипеда с треугольными колёсами и приступаем к монтированию. Однократное монтирование FAT Временное, однократное монтирование, например, флешки, выглядит в командной строке так: $ sudo mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=866 или # mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=866 Пример: монтирование типичной флешки выглядит так $ sudo mount -t vfat /dev/sda1 /mnt/flash -o iocharset=utf8,codepage=866 То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash Постоянное монтирование FAT Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку: /dev/XX /mnt/YY vfat iocharset=utf8,codepage=866,user,rw 0 0 Пример: та же типичная флешка в /etc/fstab смотрится так /dev/sda1 /mnt/flash vfat iocharset=utf8,codepage=866,user,rw 0 0 То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash После этого раздел FAT в Linux будет доступен. Отмонтирование по команде umount /mnt/flash Как правильно говорят в комментариях, iocharset совпадает с текущей локалью - например, iocharset=utf8. Как примонтировать раздел с файловой системой NTFS в Linux Кодировка в NTFS нормальная, но здесь нас ждёт другая засада. Замечательная корпорация Microsoft изобрела не просто новый велосипед с треугольными колёсами, а ещё и закрыла его, треугольноколесатого велокактуса, описание. Да так, что пришлось очень долго его взламывать и создавать драйвера обратной разработкой. О сложности проблемы даёт понять описание дефрагментации NTFS, что, как говорится, внушает. Монтировать и записывать на NTFS в Linux, тем не менее, возможно благодаря героическим усилиям ребят, создавших драйвер NTFS-3g. Этот драйвер можно установить командой: aptitude install ntfs-3g или поискать пакет ntfs-3g в графической оболочке установки программ вашего любимого дистрибутива. Однократное монтирование NTFS Временное, однократное монтирование, например, раздела с данными Windows, выглядит так: $ sudo mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf8 или # mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf8 Пример: монтирование раздела Windows с NTFS разделом выглядит так $ sudo mount -t ntfs-3g /dev/sda1 /mnt/flash -o umask=0,nls=utf8 То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования /mnt/flash Постоянное монтирование NTFS Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку: /dev/XX /mnt/YY ntfs-3g umask=0,nls=utf8,user,auto,rw 0 0 Пример: та же типичная флешка в /etc/fstab смотрится так /dev/sda1 /mnt/windows ntfs-3g umask=0,nls=utf8,user,auto,rw 0 0 То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования /mnt/windows После этого раздел NTFS в Linux будет доступен. Отмонтирование по команде umount /mnt/windows Как примонтировать CD/DVD диск в Linux Всё проще - скорее всего, это уже сделано в вашем дистрибутиве. Тем не менее, привожу это здесь для примера. Однократное монтирование CD/DVD Временное, однократное монтирование, например, DVD-диска с данными в Linux, выглядит так: $ sudo mount -t iso9660 /dev/XX /mnt/YY или # mount -t iso9660 /dev/XX /mnt/YY Пример: монтирование DVD-диска с данными выглядит так $ sudo mount -t iso9660 /dev/cdrom /mnt/dvd То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/dvd Постоянное монтирование CD/DVD Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку: /dev/XX /mnt/YY iso9660 user,ro 0 0 Пример: та же типичная флешка в /etc/fstab смотрится так /dev/cdrom /mnt/cdrom iso9660 user,ro 0 0 То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/cdrom После этого оптический диск в Linux будет доступен. Отмонтирование по команде umount /mnt/cdrom Как примонтировать ISO-файл или другой файл в Linux Вы откуда-то скачали ISO-файл и хотите просмотреть его содержимое. Для этого в Windows есть такой костыль под названием Alcohol. В Linux и вообще в UNIX такие костыли не требуются, так как монтирование ISO-образа ничем для системы не отличается от монтирования CD/DVD-диска. Нужно только передать один параметр -o loop чтобы сообщить системе, что монтировать мы собираемся на петлевое устройство (loopback). Если делать это надо много и часто, можно воспользоваться программой GmountISO, описанной тут. Для монтирования ISO-образа в командной строке даём команду: $ sudo mount -t iso9660 file.iso /mnt/YY -o loop или # mount -t iso9660 file.iso /mnt/YY -o loop Пример: монтирование DVD-диска с данными выглядит так $ sudo mount -t iso9660 file.iso /mnt/dvd -o loop То есть монтируем файл file.iso типа iso9660 в точку монтирования /mnt/dvd на петлевое устройство loop Точно так же можно монтировать любой CD/DVD образ, а также файл-образы сжатых\зашифрованных\экзотических файловых систем типа SquashFS. Отмонтирование по команде umount /mnt/dvd Как примонтировать раздел с файловой системой EXT2/EXT3/ReiserFS/XFS/JFS... в Linux Монтирование нормальных файловых систем проблем не создаёт. Приведу пример только с ext3, остальные файловые системы в Linux монтируются точно так же, только вместо ext3 подставьте буквально: ext2, reiserfs, xfs, jfs в зависимости от вашей файловой системы. Однократное монтирование Временное, однократное монтирование, например, флешки, выглядит в командной строке так: $ sudo mount -t ext3 /dev/XX /mnt/YY или # mount -t ext3 /dev/XX /mnt/YY Пример: монтирование раздела с данными выглядит так $ sudo mount -t ext3 /dev/sda1 /mnt/data То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/data Постоянное монтирование Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку: /dev/XX /mnt/YY ext3 user,auto,rw 0 0 Пример: та же типичная флешка в /etc/fstab смотрится так /dev/sda1 /mnt/data ext3 user,auto,rw 0 0 То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/data После этого раздел EXT3 в Linux будет доступен. Отмонтирование по команде umount /mnt/data Что делать, если устройство в Linux не хочет размонтироваться!? Вы пытаетесь размонтировать раздел с данными (флешка, CD/DVD диск...) и получаете сообщение с ошибкой - устройство занято. Например, при выполнении команды umount /mnt/windows получаете сообщение вида: umount /mnt/windows umount: /mnt/windows: device is busy umount: /mnt/windows: device is busy Ну и что делать, если раздел в Linux не размонтируется!? Очень просто - посмотреть, какой процесс держит раздел или файл и не даёт отмонтировать его. Дальше либо закрыть это приложение, либо придушить его с помощью команды kill. Даём команду: lsof | grep /mnt/windows Вертикальная черта означает передачу вывода команды lsof программе grep и фильтрации по слову /mnt/windows После этого вы получите ответ вида: $ lsof | grep /mnt/windows lsof: WARNING: can't stat() reiserfs file system /dev/.static/dev Output information may be incomplete. mc 14134 beast cwd DIR 8,1 4096 1 /mnt/windows Стало быть, ваш раздел держит MC (Midnight Commander), который вы скорее всего открыли на другом рабочем столе и просто забыли о нём. Найдите это приложение, закройте его и отмонтируйте раздел снова - теперь проблема должна быть решена.
Источник: http://mydebianblog.blogspot.com/2008/09/linux.html |