Cintu перед установкой. Разметка диска: утилита parted

Алексей Федорчук

Программа parted (или, точнее, GNU parted, как подчеркивается в заголовке man-страницы) предлагается в рамках проекта GNU как универсальное средство для работы не только с дисковыми разделами, но и с файловыми системами. И действительно, она позволяет не только выполнить разметку диска, но и создать на разделах файловые системы, а также осуществляет проверку их целостности, удаление, перемещение, копирование и изменение размера разделов существующих.

Интерактивный режим

Использоваться parted может двояким образом — в интерактивном и в командном режиме. Начнём с первого, то есть просто запустим программу одноимённой командой, без опций и аргументов. В ответ она выдаст нам предупреждение об отсутствии гарантии, информацию о первом физическом диске системы, данные о геометрии (цилиндры/сектора/головки), предупреждение о том, где кончается 1024 цилиндр, — и выведет приглашение командной строки в виде

(parted)

Интерактивный интерфейс утилиты построен по принципу sh-совместимых оболочек. Поддерживаются, в частности, редактирование командной строки (обычными управляющими последовательностями, например, Control+D — удаление символа в позиции курсора, Control+H — перед оной), просмотр истории команд, автодополнение (клавишей Tab). Действия по организации диска выполняется с помощью мнемонически прозрачных команд (print — просмотр, mkpart — создание раздела, rm — его удаление, и т.д.). Синтаксис команд — также shell-подобный: обычно требуется указание аргумента — номера устройства (Minor, в терминологии программы) и некоторых дополнительных опций (в зависимости от команды). Выход из программы — командой exit или комбинацией Control+D.

Полный список доступных команд с возможными опциями и аргументами, а также краткими, но внятными комментариями (в правильно локализованной системе — на языке установленной локали, например, русском) можно получить, введя в командной строке

(parted) help

или просто нажав Enter в ответ на приглашение. Список этот включает команды для:

  • выбора устройства для редактирования (select /dev/sd?);
  • действий с существующими разделами (print — просмотр таблицы разбиения, check — проверка целостности файловой системы раздела, rm — удаление раздела, cp — копирование файловой системы в другой раздел, resize — изменение размера раздела, move — перемещение раздела в пределах диска);
  • манипуляций по разбиению диска (mkpart — создание раздела, mkpartfs — создание раздела с файловой системой заданного типа, mkfs — создание файловой системы на существующем разделе).

Подробную справку по каждой команде можно получить, введя

(parted) help имя_команды

Кроме того, справка по использованию команды будет выведена, если дать её
без аргументов и опций. И, разумеется, программа parted сопровождается документацией в форматах man и info, из которой можно получить исчерпывающие сведения о её использовании.

В отличие от fdisk или cfdisk, в parted не предусмотрено специальной команды для записи изменений, все действия выполняются в реальном времени, без откладывания. То есть, например, команда

(parted) rm #

приведёт к немедленному удалению раздела с указанным номером. Соответственно, parted требует исключительно аккуратного обращения. Однако в обмен на это предоставляет, во-первых, исключительную гибкость при задании размера раздела и его позиционировании. Во-вторых, он делает доступными множество дополнительных манипуляций разделами и файловыми системами.

Пример применения: разметка диска

Чтобы оценить возможности parted, рассмотрим для примера процесс разбиения вновь приобретённого диска. Для чего после запуска программы сначала выбираем соответствующее устройство:

(parted) select /dev/sd?

затем командой

(parted) print

убеждаемся, что устройство это разбиению не подвергнуто, и даём команду
для создания раздела:

(parted) mkpart type_part type_fs start end

Под типом раздела здесь могут выступать значения primary (для первичного раздела), extended (для расширенного) или logical (для логического раздела в последнем). Возможные значения для типа файловой системы — ext2, ext3, reiserfs, linux-swap или FAT. Можно указать также и иные поддерживаемые Linux файловые системы — xfs или jfs. Или даже hp-ufs и sun-ufs — версии файловой системы проприетарных Unix для платформ HP-PA и Sun Sparc, соответственно. Однако это лишь задаст для раздела соответствующие идентификаторы типа — само по себе создание файловых систем при этом выполнено командой part не будет, о чем я скажу чуть ниже.

Начало (start) и конец (end) раздела указываются в мегабайтах, например, 0 и 3000 при создании раздела в 3 Гбайт от начала диска. И начало, и конец можно задать дробными (с точностью до третьего знака и разделителем — десятичной точкой) числами, что обеспечивает необходимую точность разбиения (при наличии калькулятора или способности к счёту в уме).

Как легко понять из формата команды, раздел заданного размера может быть создан в любом месте диска (не обязательно в начале его или в конце). И раздел, созданный первым по времени (вне зависимости от положения на диске), получит номер (Minor) 1, созданный вторым (пусть и в начале диска) — Minor 2, и так далее. То есть по гибкости команда mkpart из parted ничуть не уступает программе fdisk.

Далее на дисковых разделах должны быть созданы файловые системы. Вообще-то, это отдельная тема. Однако поскольку именно эта возможность делает программу parted столь универсальной, затрону её здесь вскользь. Создание файловой системы осуществляется командой

(parted) mkfs # type_fs

где под # выступает тот самый номер (Minor) раздела, который был присвоен
ему при создании, а type_fs — доступные для создания файловые системы: — ext2, ext3, reiserfs, linux-swap и FAT.

Дисковый раздел и файловая система на нем могут быть созданы также одной
командой:

(parted) mkpartfs type_part type_fs start end

К опциям её относится все то, что было сказано чуть выше о командах mkpart и mkfs.

Командный режим

Таким образом, создание разделов (и, добавлю, файловых систем) средствами утилиты parted в интерактивном режиме весьма просто и удобно (при должной, естественно, аккуратности). Однако основные её преимущества проявляются при использовании в командном режиме. Чтобы прибегнуть к нему, программу parted следует запустить с указанием аргумента (имени файла дискового устройства), одной из его встроенных команд и необходимых последней опций. В итоге одной строкой типа

$ parted /dev/sda mkpartfs primary ext2 0 100 &&
parted /dev/sda mkpartfs primary linux-swap 101 1124 &&
parted /dev/sda mkpartfs primary ext2 1125 ###

можно создать полностью готовый к использованию в Linux диск — никаких
дальнейших действий в этом направлении не потребуется.

Добавить комментарий