Fdisk
Fdisk — название нескольких программ для разметки и управления разделами на блочных устройствах: жёстких дисках или дискетах. Сам термин происходит от английского «fixed disk» («жёсткий диск»), предложенного компанией IBM.
Первая версия программы, FDISK.COM, была представлена в составе PC DOS 2.0 (1983) и MS-DOS 2.0, разработанных IBM и Microsoft. Управление программой осуществляется через командную строку с поддержкой параметров и текстового меню. В других операционных системах часто присутствуют аналогичные по функциональности клоны под тем же названием fdisk — например, для PC-Unix и совместимых с DOS ОС.
Изначально Fdisk позволяла работать только с разделами, описанными в главной загрузочной записи (MBR), структура которой была введена вместе с PC DOS 2.0 и программой «Fixed Disk Setup Program» (1983 год). MBR определяет размещение до четырёх основных (первичных) разделов, а с MS-DOS 3.2 появилась возможность создания расширенного раздела, внутри которого могут размещаться логические диски.
Существуют и графические варианты Fdisk, например FDISKPM.EXE для OS/2. Более современные редакции программы, такие как входящая в состав util-linux, поддерживают работу не только с MBR, но и с GUID-таблицами разделов (GPT), которые пришли на смену MBR на IBM PC-совместимых компьютерах.
Общие сведения
| Fdisk | |
|---|---|
| Тип | программа для разметки разделов |
| Разработчики | IBM, Microsoft |
| Написана на | Assembler |
| Интерфейс | командная строка, текстовое меню |
| Операционные системы | DOS, OS/2, Windows 9x, Unix-подобные ОС |
| Первый выпуск | 1983 |
| Аппаратные платформы | x86, x86-64, PowerPC (варианты) |
| Лицензия | проприетарная, свободная (для некоторых клонов) |
История
IBM PC XT (тип 5160, 1983 год) стал первым массовым IBM PC-совместимым компьютером с жёстким диском. Для него в составе PC DOS/MS-DOS 2.0 была реализована поддержка разметки диска с помощью разделов, определяемых в структуре главной загрузочной записи (MBR), объединяющей загрузочный код и таблицу разделов (до четырёх первичных разделов). С целью совместимости таблица размещалась в загрузочном секторе, который запускал операционную систему (например, MS-DOS) с активного раздела с помощью механизма chainloading.
Жёсткие диски имели объём, значительно превышавший объём дискет. Например, диск размером 20 МиБ был примерно в 57 раз больше типичной дискеты на 360 КБ. Для дискет применялась FAT12, а для жёстких дисков — FAT16, ограничения которой на первых порах составляли 32 МиБ, из-за чего более ёмкие накопители (40 МиБ и более) требовали разбиения на разделы. Развитие программы Fdisk следовало за изменениями в файловых системах и структуре MBR: в MS-DOS/PC DOS 2.0 поддерживались разделы только до 16 МиБ, с MS-DOS 3.2 (1985) предельный размер увеличился до 32 МиБ и появилась поддержка расширенных разделов, с MS-DOS 3.3 (1987) — поддержка нескольких логических дисков в расширенном разделе и второй жёсткий диск.
В DOS-совместимых ОС количество логических дисков ограничено 26 буквами (c A: по Z:), что даёт максимум 24 раздела; буквы A: и B: всегда зарезервированы за дисководами. Таким образом, возможна только одна основная (первичная) и до 23 логических областей внутри расширенного раздела. Несмотря на ограничение в четыре первичных раздела, использование расширенных разделов делало количество доступных логических дисков вполне достаточным.
В PC DOS (IBM DOS) применялся тот же Fdisk, что и в MS-DOS соответствующей версии, поскольку IBM лицензировала операционную систему практически без изменений. Отличие заключалось в том, что MS-DOS распространялась также для совместимых компьютеров (OEM-версии), а IBM DOS официально предназначалась лишь для оригинальных ПК IBM до версии 3.3 (1986), когда она стала доступны и для совместимых компьютеров.
С версии MS-DOS 3.3, благодаря совместному соглашению между IBM и Microsoft (Joint Development Agreement, JDA), DOS-компоненты, написанные IBM, вошли и в варианты ОС от Microsoft[1].
Появление MS-DOS 4.0 ознаменовалось переходом Fdisk в формат исполняемого файла EXE (FDISK.EXE) и увеличением максимального размера раздела до 2 ГиБ (ограничение файловой системы FAT16B, «BigDOS»).
С версией MS-DOS 6.0 добавилась поддержка до восьми дисков (две IDE и до шести SCSI), для последних необходим драйвер.
PC DOS с версии 6.1 IBM развивала самостоятельно без участия Microsoft.
MS-DOS 7.0-8.0 не были самостоятельными ОС, а входили в состав Windows 9x (от Windows 95 до Windows Me).
В OS/2 до версии 4.0 присутствовали два менеджера разделов — текстовый (FDISK.EXE) и графический (FDISKPM.EXE), оба с аналогичной функциональностью и поддержкой создания разделов FAT и HPFS. OS/2-Fdisk полностью управляется с командной строки, умеет удалять разделы и устанавливать загрузчик OS/2. В версиях OS/2 с 4.5 управление разделами переведено на LVM, а файловая система — на JFS.
В силу общей истории разработки OS/2 и Windows NT, NTFS получила тот же тип раздела, что и HPFS.
MS-DOS-базированные версии Windows (так называемая Windows 9x) включали практически полный MS-DOS с Fdisk, в котором появилась поддержка FAT32 (начиная с MS-DOS 7.10 — Windows 95 OSR2, Windows 98, и 8.00 — Windows Me). Для работы с дисками объёмом более 32 ГиБ в MS-DOS 7.10 требуется патч, выпущенный только для Windows 98. Fdisk из Windows 98-Me способен работать с дисками объёмом до 128 ГиБ (а при поддержке BIOS LBA-48 — и с большими)[2]. Однако существует ограничение при отображении размера диска — до 64 ГиБ; оно также устраняется патчем от Microsoft.
В семейство Windows NT программа FDISK.EXE не входит; начиная с Windows NT 3.1 применяется графический администратор дисков (Disk Administrator), а с Windows 2000 — дополнительно консольная утилита diskpart. С Windows 2000 появилась поддержка так называемых динамических дисков, которые не соответствуют классической схеме MBR и недоступны большинству других ОС.
Клоны FDISK
Альтернативные операционные системы на архитектуре PC обычно используют стандартную схему разметки — MBR-таблицу разделов в BIOS-совместимых ПК. Поэтому многие программы разметки для разных ОС именуются fdisk и функционально ориентированы на Fdisk из PC DOS/MS-DOS.
Благодаря этому такие клоны поддерживают многооперационную загрузку (multiboot), так как разбирают и управляют таблицей MBR. После перехода к UEFI и схемам GPT (примерно с 2010 года) современные ОС и их утилиты fdisk также научились работать с GPT.
Одним из главных конкурентов MS-DOS/PC DOS на IBM PC был CP/M от Digital Research. Позже появились и совместимые варианты — Concurrent DOS, DOS Plus, DR DOS, где также присутствует собственная реализация Fdisk (нем. «Festplattenpflege-Programm»), практически в точности повторяющая версию IBM. DR-DOS-Fdisk не поддерживает GPT и не развивался после появления этой разметки.
С распространением PC на нём, помимо DOS и Windows, стали использовать и различные Unix-системы — изначально «PC-Unix» (BSD-производные, Linux и др.), позже — и на платформах Apple (macOS, ранее Mac OS X). Для мультизагрузки при инсталляции требовалось управлять разделами обоих типов — MBR и GPT, для чего во многих Unix-подобных системах используются собственные варианты fdisk (в macOS — только для MBR/PC-разделов, при том что архитектуры PowerPC и x86 используют Apple Partition Map (APM) и GPT соответственно). Современные программы управления дисками часто могут работать со всеми схемами.
Появление GPT как наследника MBR привело к тому, что современные утилиты fdisk либо распознают, либо могут ограниченно модифицировать GPT (с предупреждениями). В macOS используется отдельная утилита gpt для GPT, аналогичная есть и в других Unix-системах.
В дистрибутивах Linux стандартно присутствует несколько реализаций fdisk: традиционная командная и диалоговая (fdisk, pfdisk), меню-ориентированная cfdisk и экспертная sfdisk. Последняя позволяет с помощью параметра --dump сохранять схему разделов без загрузочного кода для последующего воссоздания. Все эти утилиты входят в состав пакета util-linux.
Для разметки Apple Partition Map на компьютерах Apple применяется утилита pdisk, а для PowerPC-Linux — модифицированная mac-fdisk.
Как в OS/2-Fdisk добавлена поддержка HPFS, а в Windows 9x — FAT32, так и клоны fdisk позволяют создавать собственные типы разделов, определённые для конкретной ОС. Например, Linux fdisk поддерживает swap-разделы (тип 82) и разделы ext2/ext3/ext4 (тип 83).
Альтернативы FDISK
Работа с GUID Partition Table
GPT (GUID Partition Table) — схема разметки дисков, пришедшая с переходом от BIOS к UEFI. По своему устройству каждый GPT-диск содержит также защитную MBR-таблицу, которая объявляет всю область занятой, чтобы предотвратить перезапись или удаление данных старыми программами. Для ПО, рассчитанного на работу с MBR (например, с 1983 года), вся область обозначается как занятая. Если бы этого не было, старые средства разметки увидели бы диск как пустой.
Современные реализации fdisk в некоторых системах поддерживают работу с GPT: новые версии могут показывать структуру GPT и предупреждать о возможных последствиях изменения только так называемой Protective MBR, а не самой GPT, чтобы избежать потери данных.
Существуют и отдельные программы, полностью ориентированные на работу с GPT (например, gpt в macOS, gdisk и parted в Linux, diskpart в Windows); некоторые в прошлом назывались gpt-fdisk.
Ограничения
Ограничения Fdisk почти всегда зависят от соответствующей операционной системы[4].
| Операционная система | FDISK | Год | Ограничения |
|---|---|---|---|
| MS-DOS 2.0 PC DOS 2.0 |
1.0 | 1983 | одна жёсткая диск |
| четыре первичных раздела, но MS-DOS может использовать только одну основную | |||
16 МиБ на раздел (тип 01)
| |||
| не поддерживает расширенные разделы | |||
| MS-DOS 3.0 | 1984 | Введение FAT16 для жёстких дисков[5] | |
| MS-DOS 3.2 | 1985 | Расширенные разделы (тип 05), но только один логический диск поддерживается MS-DOS;максимум два диска — C: (одна основная) и D: (логический)
| |
| MS-DOS 3.3 | 1987 | Поддержка двух физических жёстких дисков | |
| Поддержка нескольких логических дисков основных и логических разделов вместе: максимум 24, C:—Z:
| |||
32 МиБ на раздел (тип 04)
| |||
| Compaq MS-DOS 3.31 (OEM) | 1987 | 512 МиБ на раздел (тип 04 с 32-битовой адресацией) — несовместимо с остальными версиями!
| |
| MS-DOS 4.0 | 1988 | До 2 ГиБ на раздел (тип 06)
| |
| NEC MS-DOS 3.30 (OEM) | 1988 | 8 основных разделов в MBR — несовместимо с остальными версиями! | |
| 32-битовая адресация, как у Compaq, но проблемы с разделами >256 МиБ — несовместимо с другими версиями! | |||
| MS-DOS 5.0 | 1991 | поддержка до 8 физических жёстких дисков | |
| Хотя FDISK по-прежнему может создавать только один основной раздел, ядро ОС теперь может работать с несколькими основными (им присваиваются буквы) | |||
| MS-DOS 7.0 (Windows 95) | 1995 | если BIOS поддерживает LBA: новые типы разделов 0E (основной) и 0F (расширенный)
| |
| MS-DOS 7.1 (Windows 95B и Windows 98) | 1996 | до 2 ТиБ на раздел (тип 0B — основной, 0C — расширенный; для последнего необходим LBA)
| |
Несмотря на то, что в MBR можно завести четыре основных раздела, сам Fdisk позволяет создать лишь один. Для работы с несколькими разделами и накопителями требуется как поддержка расширенных разделов в ядре DOS, так и в самой программе; жёсткий диск, размеченный Fdisk из MS-DOS 3.3, не будет распознаваться более ранними версиями MS-DOS/PC DOS. Также MS-DOS до 5.0 поддерживает только один основной раздел.
В расширенной области может быть сколько угодно логических разделов, однако MS-DOS ограничивает всего до 24 дисков; при наличии одной основной и расширенного — 23 логических (при трёх основных — уже 21 и т. д.). Они должны располагаться в последовательной области, определяемой расширенным разделом. Если в ПК несколько жёстких дисков, число логических разделов уменьшается пропорционально.
OS/2 и MS-DOS (до 5.0) допускают только один основной раздел на диск.
Загрузка с расширенного раздела невозможна в MS-DOS/PC DOS, но OS/2 это поддерживает. Однако при изменении логических разделов могут сместиться назначенные буквы, что приведёт к невозможности загрузки.
Ограничение загрузки по BIOS-адресации (1024 цилиндра) приводило к необходимости размещать загрузочные разделы Unix ниже этой границы; аналогично со 128-ГиБ-пределом, если BIOS не поддерживает LBA-48. Обычно инсталляторы Unix создают отдельный раздел /boot; при необходимости, чтобы BIOS корректно загрузил ОС, этот раздел делался основным.
Примечания
- ↑ DOS 3.3 – The Mature DOS (англ.). OS/2 Museum. Дата обращения: 25 июня 2024. Архивировано 19 сентября 2025 года.
- ↑ The Fdisk.exe utility may not be able to create a hard disk partition that is larger than 128 GB (англ.). support.microsoft.com. Microsoft (12 ноября 2003). Дата обращения: 25 июня 2024.
- ↑ The FreeDOS contributors. Free FDISK – официальное репозиторий (англ.). GitHub. Дата обращения: 11 октября 2024. Архивировано 25 августа 2025 года.
- ↑ Daniel B. Sedory. Detailed Notes on Microsoft's™ FDISK.EXE Program (англ.). The Starman's Realm (18 ноября 2007). Дата обращения: 25 июня 2024. Архивировано 19 декабря 2007 года.
- ↑ A Brief Introduction of FAT (File Allocation Table) (англ.). Eassos Blog. Eassos Ltd. (7 января 2015). Дата обращения: 25 июня 2024. Архивировано 20 июня 2025 года.
Ссылки
- Das Erbe von FDISK — управление разделами в Windows (нем.). WinTotal.de (24 августа 2010). Дата обращения: 25 июня 2024.
- Инструкция Microsoft по использованию fdisk (англ.)
- Описание fdisk для MS-DOS на Computerhope.com с частичной эмуляцией