Монтирование и fstab
В самом начале, при описании установки, я рассказывал про механизм монтирования дисков в Linux и объяснял его основы. Если вы забыли, что такое монтирование и для чего оно нужно, прочитайте снова статью про организацию файловой системы в Ubuntu. Ниже я попробую заполнить некоторые оставшиеся белые пятна.
Если вы с нетерпением ждали шаманств с терминалом и правки конфигурационных файлов, поздравляю, вы дождались! Вообще мне кажется, что скоро терминалом и конфигами впору будет пугать маленьких детей — столь отталкивающее мнение об этих инструментах присутствует у некоторых в принципе далёких от понимания упомянутых терминов людей. На самом деле обычно всё, конечно, очень просто, элегантно и логично. И у вас сейчас будет возможность в этом убедиться.
Монтирование и пункты меню «Переход»
Сначала немного общей теории. Она не очень лёгкая, но надеюсь вы уловите основную суть. Итак, я рассказывал, что все подключаемые устройства автоматически монтируются в подкаталоги папки /media . Возможно, вы даже не преминули проверить это и убедиться в том, что и на самом деле всё обстоит именно так.
А вот с разделами винчестера ситуация несколько иная. Я говорил вам указать точки монтирования для всех разделов при установке, но не объяснил, зачем это нужно и что будет, если вы так не сделаете. Теперь постараюсь ликвидировать это упущение, попутно разложив по полочкам весь механизм монтирования.
В Ubuntu существует специальный файл, /etc/fstab , в котором хранятся настройки монтирования различных разделов, включая корень и swap. Существенная информация из этого файла заключается в первую очередь в соответствии точек монтирования разделам. При каждой загрузке Ubuntu читает этот файл и монтирует все перечисленные в нём диски в указанные для них места. Больше нигде никакой информации и точках монтирования в системе не хранится. Соответственно при установке в /etc/fstab записывается вся указанная вами информация о монтировании ваших разделов.
Различные флешки, внешние диски, плееры и прочие устройства монтируются автоматически при подключении к вашему компьютеру. Точкой монтирования в этом случае служит один из подкаталогов /media , обычно — с именем, соответствующим метке устройства 1) . За выдлением точек монтирования, определением файловой системы и решением других проблем следит Ubuntu — вам ничего делать не надо. Кроме того, все внешние устройства автоматически попадают в меню «Переход» и на рабочий стол, так что вы всегда можете легко получить к ним доступ 2) .
Проблемы начинаются только тогда, когда какое-то устройство было присоединено к компьютеру до загрузки Ubuntu, но для него нету записи в /etc/fstab . В этом случае оно будет смонтировано только при вашем первом к нему обращении. Естественно, по всё тем же правилам подключения внешних источников, то есть в автоматически созданный подкаталог директории /media . В случае с флешками это некритично — в конце концов при первом вашем обращении к флешке вы всё равно сразу же получите доступ к её содержимому и вам вообще не нужно задумываться не то, что о всяких /etc/fstab , а даже просто о значении термина «монтирование». Но дело в том, что Ubuntu ровно так же будет обрабатывать и неуказанные в /etc/fstab разделы винчестера. И в чём же проблема, спросите вы?
Проблема в том, что зачастую получить доступ к содержимому винчестера нужно сразу после загрузки и до того, как вы вручную зайдёте на нужный диск. Это связано с тем, что многие программы работают с файлами без вашего непосредственного участия. Например, различные торрент-клиенты, плееры и прочие приложения, которые постоянно обращаются к файлам на винчестере, просто не смогут работать, пока вы не перейдёте на нужный диск. Кроме того, при автоматическом назначении точки монтирования в момент первого обращения есть ещё одна небольшая проблема: вообще говоря никто не может гарантировать, что каждый раз будет использоваться одна и та же точка монтирования. А это значит, что могут меняться полные пути до всех файлов, что вообще приведёт к невозможности работы с ними большого количества приложений, вроде тех же торрент-клиентов.
В общем, вы наверно уже поняли, что все нужные вам разделы должны присутствовать в /etc/fstab , чтобы Ubuntu их автоматически монтировала при запуске и у вас не было проблем при работе с ними.
Вопрос остаётся только один: а какие указывать точки монтирования для разделов? Если вы помните, при описании установки я говорил вам монтировать все дополнительные разделы в подкаталоги /media . Это и есть самый распространённый способ указания точек монтирования, однако далеко не единственный. Дело в том, что всё, смонтированное в подкаталоги /media , автоматически попадает в меню «Переход» и на рабочий стол. Но иногда хочется скрыть некоторые разделы и убрать их из всех списков и меню. Логичным решением было бы просто удалить запись о ненужном разделе из /etc/fstab . Однако это не приведёт к желаемому результату, поскольку точка монтирования для раздела, не указанного в /etc/fstab , автоматически всё равно будет назначаться в подкаталог /media , соответственно, диск всё равно будет доступен через меню «Переход». А скрыть диск на самом деле очень просто: нужно указать точку монтирования для раздела не в подкаталог /media , а в другую часть файлового дерева.
Будьте осторожны! Неаккуратное обращение с точками монтирования может привести к полной неработоспособности системы.
Например, в подкаталог /hidden/data 3) . При этом диск исчезнет из всех графических программ, но к его содержимому всё же будет доступ по полному пути относительно корня 4) .
На всякий случай хочу обратить внимание на две вещи: во-первых, указанный в качестве точки монтирования для любого диска каталог должен существовать в файловой системе. То есть если вы хотите смонтировать какое-то устройство в /hidden/data , то у вас должен существовать каталог /hidden/data . И при этом он должен быть пустой, т.к. его содержимым после монтирования будет являться содержимое подключаемого устройства. А во-вторых права на запись файлов на подключаемые устройства определяются правами на запись в точку монтирования. То есть если вы что-то монтируете в /media/data , то у вас должны быть нужным образом установлены владелец, группа и права доступа к каталогу /media/data .
Осталось только немного рассказать про системные директории, вроде /home , и про их отношение к процессу монтирования. Конкретно в /home хранятся домашние каталоги для всех пользователей компьютера. Помните, при рассказе про установку я говорил, что /home рекомендуется выделять отдельным разделом для того, чтобы хранить пользовательские настройки отдельно от системы? Это нужно для того, чтобы можно было, например, отформатировать системный раздел и поставить систему заново, при этом сохранив все пользовательские данные в целостности и сохранности. Так вот, если вы ещё этого не поняли, тут стоит обратить внимание на то, что не только дополнительные разделы с помощью механизма монтирования можно вставлять в текущее дерево каталогов, но и выносить на отдельные разделы любые системные каталоги 5) .
Вот так всё запутанно и с первого взгляда сложно. Если вы не уловили суть вопроса, то ничего страшного, просто запомните, что для всех разделов винчестера обязательно должны быть записи в /etc/fstab , а обо всём остальном за вас позаботится система, вот и вся соль.
Конфигурационный файл /etc/fstab
А теперь собственно к практике. Осталось только рассказать, как же устроен файл /etc/fstab и что в него надо писать. Начну с того, что этот файл является системным, поэтому для его редактирования нужны права root . Если вы забыли, как редактировать конфигурационные файлы системы, прочитайте снова статью про права доступа.
Итак, открыв /etc/fstab вы увидите достаточно небольшое содержимое, у меня этот файл выглядит так:
Каждому разделу винчестера отводится одна строка. Строчки, начинающиеся с символа решётки ( # ), являются комментариями и системой игнорируются. Формат каждой записи очень простой:
раздел_винчестера точка_монтирования файловая_система опции_монтирования два_вспомогательных_числа
Помните, в статье про разметку диска я рассказывал, что разделы винчестера в Linux именуются как sdaX (или sdbX , sdcX и т.д. если у вас несколько винчестеров). Так вот, в fstab используется несколько другой механизм идентификации винчестеров 6) . Для этой цели используются так называемые uuid , достаточно длинные строчки из произвольных букв латинского алфавита и цифр 7) . Для того, чтобы узнать uuid для нужного вам раздела выполните в терминале команду 8)
Вот как выглядит результат выполнения у меня:
Я думаю, понятно, что к чему, uuid для каждого раздела выделен голубым цветом.
Итак, первое поле записи в fstab для разделов винчестера выглядит так:
Второе поле — это точка монтирования, тут всё просто, собственно вам всего лишь надо указать желаемую директорию. Однако учтите, что во-первых, указываемый каталог должен существовать, а во-вторых, в записи его имени не должно быть спецсимволов и пробелов.
А вот дальше начинаются хитрости и сложности, описывать которые я не буду. С файловой системой всё просто, а вот опции монтирования — это целая эпопея, требующая не одной отдельной статьи. А уж назначение двух цифирей в конце вообще покрыто мраком и мало кого интересует.
Но как-то указать все эти параметры всё-таки надо. К счастью, тут можно схитрить 9) . Дело в том, что записи о всех смонтированных дисках попадают в специальный файл /etc/mtab , а формат записей этого файла ровно такой же, как и у /etc/fstab . Поэтому если вам надо добавить запись для какого-то раздела винчестера в fstab просто зайдите на него через меню «Переход», при этом он автоматически смонтируется в подкаталог /media и следовательно запись о нём появится в mtab . Теперь откройте mtab , найдите нужную строчку (тут уже диски именуются обычным способом) и скопируйте её в fstab , заменив имя диска на его uuid и точку монтирования на желаемую. Кроме того, если в качестве ФС в mtab записано fuseblk , то при копировании необходимо подставить вместо этого значения имя своей файловой системы. Если вы не знаете, как правильно должна называться ваша ФС в fstab , то поищите информацию на эту тему в интернете. И если вы не наделаете ошибок при замене, то при следующей загрузке диск смонтируется туда, куда вы указали.
На этом я заканчиваю краткое, хоть и достаточно запутанное, знакомство с файлом /etc/fstab и системой монтирования дисков в Ubuntu. Более того, на этом так же заканчивается вся информация, которую я хотел вам рассказать про Ubuntu. Ну и дабы не завершать руководство столь неочевидным рассказом про специфическую настройку системы, я завершу его статьей с красивым названием «Эпилог»:
Это не всегда так. Можно добавить запись для устройства во всё тот же /etc/fstab , тогда при подключении точка монтирования не будет назначена автоматически, а считается из этого файла. Так, например, сделано для дисководов. Так что /etc/fstab используется не только при загрузке. Кроме того, если имя уже занято, то к нему будет дописано нижнее подчёркивание при определении точки монтирования.
На самом деле на рабочий стол и в меню «Переход» попадает всё, что смонтировано в один из подкаталогов /media или же будет туда смонтировано при первом обращении.
Да, вы можете создавать новые каталоги непосредственно в корне файловой системы. Не стоит этим увлекаться, но и запрещать вам никто ничего не будет.
Конечно есть возможность и полностью скрыть содержимое нежелательных разделов, для этого необходимо поставить на /hidden/data соответствующие права доступа, см. чуть ниже.
Только сразу хочу предупредить, в отличие от подключения дополнительных разделов в /media или в /hidden/data , системные каталоги выносить на отдельные разделы лучше только при установке, если вам вдруг понадобится это сделать после неё, то сначала разберитесь, что и куда надо скопировать и что и где изменить, простого добавления записи в /etc/fstab для этого недостаточно. Вкратце, для этого нужно загрузиться с LiveCD, потом скопировать текущее содержимое нужного каталога на новый диск, затем удалить данные со старого места, после чего добавить новую запись в /etc/fstab и напоследок проверить права доступа. Но поскольку выполняя эти операции вы рискуете потерять важные данные, то сначала подробно разберитесь в вопросе, и только потом приступайте к конкретным действиям.
Как вы может быть догадываетесь, узнать uuid можно далеко не единственным способом. Например, есть гораздо более информативная команда, требующая, однако, административных привилегий для запуска:
Если вас не напряжёт лишний раз ввести пароль, то она вам скорее всего будет более симпатична, чем вариант с ls .
И даже не одним способом. Например, для добавления ntfs-раздела в fstab можно воспользоваться утилитой ntfs-config , правда предварительно вам придётся её установить.