Перейти к основному содержимому
Утилита разметки fdisk

Утилита разметки fdisk

Fdisk — это утилита разметки диска, поддерживающая стиль разметки MBR и GPT.

Утилита поставляется в пакете util-linux.

Утилита fdisk работает только от имени суперпользователя.

Синтаксис в fdisk

Для разовых справочных операций синтаксис fdisk выглядит следующим образом:

Синтаксис
$ sudo fdisk <опция> <устройство>

Опции задают режим работы утилиты. Некоторые опции имеют обязательные или необязательные аргументы, о них подробнее — в справке по опциям.

Устройство — это жесткий диск, на котором нужно изменить разметку.

Работа с диском

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

Начало работы с диском
$ sudo fdisk /dev/sda

Дальнейшая работа с диском осуществляется с помощью команд в интерактивном режиме. Команды задают действия, которые нужно выполнить на диске.

После обращения к диску утилита ответит информацией и будет ожидать ввода команды в интерактивном режиме:

Интерактивный режим работы с диском
$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.

# По умолчанию утилита создает пустую таблицу разделов MBR, но это можно отключить опцией -n.

Does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x569c5370.

Command (m for help):

# Теперь утилита готова выполнять разметку на диске /dev/sda

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

При вводе команд утилита будет уточнять дополнительную информацию в интерактивном режиме. Ниже несколько примеров.

Создание раздела

Пример создания раздела на диске /dev/sda.

$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.

Does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x569c5370.

# После обращения к диску нужно ввести команду создания раздела:

Command (m for help): n

# Утилита предлагает выбрать тип раздела (для разметки под MBR):

Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p

# Далее ожидает указания номера раздела:

Partition number (1-4, default 1): 1

# Предлагает определить размер раздела, задав начало и окончание.
# Можно не заполнять first sector и сразу указать размер, например, в мебибайтах в следующей строке.


First sector (2048-2097151, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151): +500М

Created a new partition 1 of type 'Linux' and of size 500 MiB.
**Be sure to write your changes to disk using the `w` flag**

# Необходимо ввести команду w, чтобы записать изменения на диск:

Command (m for help): w

The partition table has been altered!
Удаление раздела

Пример удаления раздела раздела 1 на диске /dev/sda.


$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.

# После обращения к диску нужно ввести команду удаления раздела:

Command (m for help): d

# Далее нужно указать номер раздела, который нужно удалить:

Partition number (1-4): 1

Partition 1 has been deleted.

# Сохранить изменения и выйти из режима работы с диском:

Command (m for help): w
The partition table has been altered!
Создание таблицы GPT

По умолчанию fdisk на пустых устройствах создает таблицу MBR. Это поведение можно изменить опцией -n, которая отменяет автоматическое создание таблицы разделов и ожидает явного создания таблицы разделов соответствующей командой пользователя.


$ sudo fdisk -n /dev/sda

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.

# После обращения к диску нужно ввести команду создания таблицы разделов GPT:

Command (m for help): g

Created a new GPT disklabel (GUID: DEC15360-414A-4C2D-87DD-25875C23A03E)

примечание

Форматирование отсутствует в fdisk.

В fdisk нет встроенной команды форматирования, но можно воспользоваться командой mkfs.

Например, чтобы отформатировать файловую систему ext4 на разделе 1 диска /dev/sda нужно ввести команду:

$ sudo mkfs.ext4 /dev/sda1

Команды fdisk

Все команды вводятся в режиме работы с диском.

Работа с таблицей разделов

gсоздать пустую таблицу разделов GPT
oсоздать пустую таблицу разделов MBR (DOS)
vпроверить таблицу разделов

Работа с разделами

nдобавить новый раздел
tизменить тип раздела (под типом подразумевается его назначение)
lпосмотреть список доступных типов
dудалить раздел

Доступные типы разделов из команды t:

  • uefi — системный раздел ESP,
  • home — раздел home,
  • swap — область подкачки,
  • linux — другие разделы.

Сохранение и выход

wзаписать таблицу на диск и выйти
qвыйти без сохранения изменений

Справка и информация

Fпоказать информацию о неразмеченном пространстве
lпоказать список известных типов разделов
pпоказать текущее состояние таблицы разделов
iпоказать информацию о разделе
mпоказать список команд

Команды только для MBR (DOS)

aпереключить флаг загрузки
bредактировать bsd disklabel
cпереключить флаг совместимостиы

Дополнительные команды

uизменить единицы ввода и отображения размеров
хвойти в экспертный режим, в котором доступны специфические команды

Опции fdisk

Справка и информация

--help, -hпосмотреть справку
--list, -l вывести таблицы разделов (можно указать устройство)
--list-details, -xвывести таблицы разделов с детализацией (можно указать устройство)
--version, -Vвывести версию утилиты

Отображение

--color, -L подсветить вывод цветом
--output, -oизменить набор столбцов при использовании --list
--units, -uпоказывать размеры разделов в секторах или цилиндрах

Синтаксис и примеры

----color или -L

Подсвечивает вывод цветом. Аргумент может быть auto, never или always. Если аргумент пропущен, по умолчанию используется auto.

Синтаксис
$ sudo fdisk -c=<когда>

# или

$ sudo fdisk --compatibility=<когда>
Пример
$ sudo fdisk -L=never

# или

$ sudo fdisk --color=never

# Подсветка по умолчанию:

$ sudo fdisk --color
----output или -o

Используется совместно с опцией --list для управления набором столбцов.

Пример

$ sudo fdisk -l -o Device,Size

Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x40fee7c0

Device Size # теперь здесь только два запрошенных столбца
/dev/sda1 31G
/dev/sda2 975M
/dev/sda3 512B
/dev/sda4 512B
/dev/sda5 975M

Справка по --help содержит список всех поддерживаемых столбцов для разных стилей разметки.

Список столбцов по умолчанию может быть расширен, если он  указан в формате +<cтолбец>.

Пример
$ sudo fdisk -l -o +Attrs

Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x40fee7c0

Device Boot Start End Sectors Size Id Type Attrs # дополнительный столбец
/dev/sda1 * 2048 65107967 65105920 31G 83 Linux 80
/dev/sda2 65110014 67106815 1996802 975M 5 Extended
/dev/sda3 65107968 65107968 1 512B 83 Linux
/dev/sda4 65107969 65107969 1 512B 83 Linux
/dev/sda5 65110016 67106815 1996800 975M 82 Linux swap / Solaris
----units или -u

При использовании --list поазывает размеры в sectors (секторах) или cylinders (цилиндрах). Можно использовать опцию без аргумента единицы измерения — тогда используется значение по умолчанию, в секторах.

Синтаксис
$ sudo fdisk -u=<единицы> -l <устройство> 
# или

$ sudo fdisk --units=<единицы> --list <устройство>
Пример
$ sudo fdisk -u=cylinders -l /dev/sda 

# или

$ sudo fdisk --units=cylinders -l /dev/sda

# Пример вывода:
#теперь в цилиндрах
Device Boot Start End Cylinders Size Id Type
/dev/sda1 * 1 4053 4053 31G 83 Linux
/dev/sda2 4053 4178 125 975M 5 Extended
/dev/sda3 4053 4053 1 512B 83 Linux
/dev/sda4 4053 4053 1 512B 83 Linux
/dev/sda5 4053 4178 125 975M 82 Linux swap / Solaris

# Установить значение по умолчанию:

$ sudo fdisk --units -l /dev/sda

Создание, удаление, блокировка

--lockустановить исключительную блокировку BSD для устройства или файла
--noauto-pt, -nотключить автоматическое создание таблицы разделов на пустом устройстве
--type, -tподдерживать только указанные стили разметки
--wipe, -wудалить файловую систему, RAID и подписи таблиц разделов с устройства
----lock

Устанавливает исключительную блокировку BSD для устройства или файла, с которым работает утилита. Этот параметр перезаписывает переменную окружения $LOCK_BLOCK_DEVICE.

Аргумент может быть yes, no (или 1 и 0) или nonblock. Если аргумент опущен, по умолчанию он равен yes.

Синтаксис
$ sudo fdisk --lock=<аргумент> <устройство>
Пример

$ sudo fdisk --lock=yes /dev/sda

# или

$ sudo fdisk --lock=1 /dev/sda

# Блокировка по умолчанию:

$ sudo fdisk --lock /dev/sda
----noauto-pt или -n

Отключает автоматическое создание таблицы разделов на пустом устройстве. Таблица разделов должна быть явно создана пользователем.

Синтаксис
$ sudo fdisk -n <устройство>

# или

$ sudo fdisk --noauto-pt /dev/sda
----type или -t

Включает поддержку только указанных стилей разметки.

Синтаксис
$ sudo fdisk -t <стиль> <устройство>

# или

$ sudo fdisk --type <стиль> <устройство>
Пример
$ sudo fdisk -t gpt /dev/sda 

# или

$ sudo fdisk --type gpt /dev/sda
----wipe или -w

аналогичная опция: --wipe-partitions или -W

Удаляет файловую систему, RAID и подписи таблиц разделов с устройства, чтобы избежать возможных коллизий. Аргумент может быть auto, never или always. Если эта опция не указана, значение по умолчанию — auto, в этом случае подписи стираются только в интерактивном режиме. Во всех случаях обнаруженные подписи сообщаются предупреждающими сообщениями перед созданием новой таблицы разделов.

Синтаксис
$ sudo fdisk -w <аргумент> <устройство>

# или

$ sudo fdisk --wipe <аргумент> <устройство>
Пример

$ sudo fdisk -w never /dev/sda

# или

$ sudo fdisk --wipe never /dev/sda