Gpart
Gpart - утилита управления дисковыми разделами с поддержкой GEOM классов (появилась во FreeBSD 7.0, вероятно заменит собой gpt которой уже нет в 8-CURRENT).
Содержание
Причины внедрения
По историческим причинам во FreeBSD существует несколько утилит для работы с разделами диска, например fdisk, bsdlabel и другие. Наличие различных утилит, с одинаковой функциональностью, в настоящее время, осложняет дальнейшее развитие, и одной из попыток исправить сложившееся положение является разработка утилиты gpart.
Сейчас в ядре есть поддержка ряда GEOM схем, которые не предоставляют единого интерфейса, что осложняет создание единого инструмента для работы с ними.
Возможности
Поддерживаемые схемы разделов
- APM
- BSD
- GPT
- MBR
- PC98
- VTOC8
Ключи
- add
- bootcode
- commit
- create
- delete
- destroy
- modify
- set
- show
- undo
- unset
Типы разделов
Символические имена разделов, введены для того, что бы пользователи не запоминали, цифровые идентификаторы, типов разделов. Существует возможность указания цифрового идентификатора, для разделов, пока не имеющих псевдонимов. В настоящие время поддерживаются следующие псевдонимы.
- efi - Системный раздел для компьютеров использующих Extensible Firmware Interface (EFI), "!c12a7328-f81f-11d2-ba4b-00a0c93ec93ab"
- freebsd - Устаревший тип раздела используемый BSD disklabel, не рекомендован к применению при использовании APM и GPT схем.
- Раздел имеет идентификаторы "!165" для MBR, "!FreeBSD" для APM, и "!516e7cb4-6ecf-11d6-8ff8-00022d09712b" для GPT.
- freebsd-boot - Выделенный загрузочный сектор "!83bd6b9d-7f41-11dc-be0b-001560b84f0f"
- freebsd-swap -Выделенный раздел подкачки, "!FreeBSD-swap" для APM, и "!516e7cb5-6ecf-11d6-8ff8-00022d09712b" для GPT
- freebsd-ufs - Раздел содержащий UFS или UFS2 файловую систему. "!FreeBSD-UFS" для APM, и "!516e7cb6-6ecf-11d6-8ff8-00022d09712b" для GPT
- freebsd-vinum - Раздел содержащий Vinum том. "!FreeBSD-Vinum" для APM, и "!516e7cb8-6ecf-11d6-8ff8-00022d09712b" для GPT
- freebsd-zfs - Раздел содержащий ZFS том. "!FreeBSD-ZFS" для APM, и "!516e7cba-6ecf-11d6-8ff8-00022d09712b" для GPT
- mbr - Раздел являющийся под-разделом (MBR). "!024dee41-33e7-11d3-9d69-0008c781f39f" для GPT
План развития
- Добавить поддержку VTOC16 схемы.
- Probe schemes based on the partition type.
- Добавить ioctl, чтобы процесс получения соответствующего раздела типа открыл устройства. Это позволяет fsck, монтировать или Newfs на нерест правильный бинарник или swapon она позволяет отказаться от устройства.
- Добавить опцию "resize", чтобы разрешить изменения размера существующих разделов.
- Добавить опцию "move", чтобы разрешить перемещение/перемещения(moving/relocating) разделов. Хорошо бы в будущем реализовать перемещение смонтированых/открытых разделов.
- Добавить опцию "recover", чтобы позволить востанавливать таблицы разделов (GPT) нуждающиеся в этом.
Примеры использования
Создание GPT схемы на диске da0.
/sbin/gpart create -s GPT da0
Выделенный GPT загрузочный код в MBR размером 15 блоков (7680 bytes).
/sbin/gpart bootcode -b /boot/pmbr da0
Создание выделенного freebsd-boot раздела в 128 блоков (64 KB) чего в принципе хватит и для загрузки ZFS раздела.
/sbin/gpart add -b 34 -s 128 -t freebsd-boot da0 /sbin/gpart bootcode -p /boot/gptboot -i 1 da0
Просмотр состояния диска, приведен момент сразу после создания boot раздела
/sbin/gpart show da0 => 34 3905340 da0 GPT (1.9G) 34 128 1 freebsd-boot (64K) 162 3905212 - free - (1.9G)
Создание раздела примерно в 1Гб (2.000.000 блоков) под файловую систему ufs
/sbin/gpart add -b 162 -s 2000000 -t freebsd-ufs da0
Просмотр состояния диска
/sbin/gpart show da0 => 34 3905340 da0 GPT (1.9G) 34 128 1 freebsd-boot (64K) 162 2000000 2 freebsd-ufs (977M) 2000162 1905212 - free - (930M)
Ссылки
RFC: making gpart default (Англ.) Обсуждение в рассылке freebsd-arch
Wiki/Gpart (Англ.) Страничка вики от разработчика, основные возможности и планы
"GUID" GPT howto (Англ.) Как перевести 7.1 на использование GPT