Утилита FDISK в Unix/Linux
fdisk — общее название системных утилит для управления разделами жёсткого диска. Широко распространены и имеются практически в любой операционной системе, но работают по-разному. Используют текстовый интерфейс пользователя.
Предупреждение: Не создавайте, не удаляйте и не изменяйте разделы, если вы не знаете, что вы делаете!
Утилита FDISK в Unix/Linux
С FDISK утилитой можно просматривать, создавать, изменять размер, удалять, копировать и перемещать разделы на жестком диске. И я приведу наглядные примеры по использованию.
Просмотр разделов в Unix/Linux
Начнем с самого легкого — просмотра разделов. Используйте опцию «-l» с командой FDISK, для просмотра доступных разделов в Linux (в Unix системах — данная опция может не сработать. Проверялось на Mac OS X). Все имеющиеся разделы в линукс отображаются по имени их устройства. Например: /dev/sda, /dev/sdb или /dev/sdc.
И так, запустим команду:
# fdisk -l
Вывод получаем следующий:
Можно узнать некоторую полезную информацию по конкретному блочному устройству. Например, следующая команда отобразит все разделы для /dev/sda:
# fdisk -l /dev/sda
Вывод:
Если у Вас есть разные названия устройств, простое имя устройства записи как /dev/sdb или /dev/sdc и так далее.
Вывод доступных команд по FDISK
Если вы хотели бы просмотреть все команды, которые доступны для FDISK, то просто используйте следующую команду, упомянув название жесткого диска, например /dev/sda, как показано ниже:
Введите ‘m’, чтобы увидеть список всех доступных команд по FDISK, которые помогут с работой по жесткому диску /dev/sda. После, ввода ‘m’ на экране, вы увидите все доступные параметры для FDISK которые можете использовать для устройства /dev/sda (данное устройство взято как пример):
ПРЕДУПРЕЖДЕНИЕ: DOS-совместимый режим не рекомендуется. Настоятельно рекомендуется
выключить режим (команда ‘c’) и изменить units для сектора (команда ‘u’).
Допустимые опции при работы с fdisk
- a :- Данная опция служит для переключение загрузочного флага.
- b :- Данная опция служит для редактирования BSD метки диска.
- c :- Данная опция служит для переключения флага совместимости дос.
- d :- Данная опция служит для удаления раздела.
- g :- Данная опция служит для создания новой, пустой таблицы разделов GPT.
- G :- Данная опция служит для создание таблицы разделов IRIX (SGI).
- l :- Данная опция служит для вывода известных типов разделов (Linux swap, Linux, GPT, Solaris и так далее).
- m :- Данная опция служит для вывода доступных команд (меню).
- n :- Данная опция служит для добавления нового раздела.
- o :- Данная опция служит для создание новой пустой таблицы разделов DOS.
- p :- Данная опция служит для вывода таблиц разделов.
- q :- Данная опция служит для выхода из меню но без какого-либо сохранения изменений.
- s :- Данная опция служит для создания новой и пустой Sun метки диска (disklabel).
- t :- Данная опция служит для изменения типа «System ID» раздела (взять можно с вывода «l» опции).
- u :- Данная опция служит для изменения блоков отображения/ввода.
- v :- Данная опция служит для проверка таблиц разделов.
- w :- Данная опция служит для записи всего измененного и потом выйти.
- x :- Данная опция служит для вызова дополнительной функциональности (только для экспертов).
Вывод всех партиций (разделов) в Unix/Linux
Чтобы вывести таблицу разделов вашего блочного устройства, используйте:
# fdisk /dev/sda
После чего, вы попадаете в меню ( в нем можно проводить различные операции с разделами), нас интересует только просмотр, по этому — вводим «p» опцию:
Создать таблицу разделов (disklabel) в Unix/Linux
Если имеется пустое блочное устройство и вы хотите на нем сделать разметку для установки будущей ОС, то для начала, стоит выбрать будущую разметку.
Приеду основные таблицы для разметки:
- GPT
- MBR (msdos)
Чтобы создать таблицу разделов вашего блочного устройства, используйте:
# fdisk /dev/sda
Данным действием было выбрано блочное устройство /dev/sda и чтобы создать на нем новую таблицу разделов, используем одну из опций:
- g — Чтобы создать новую, пустую таблицу GPT разделов.
- o — Чтобы создать новую, пустую таблицу DOS разделов .
И переходим к созданию разделов.
Создать новый раздел в Unix/Linux
И так, допустим у вас есть свободное место на одном из устройств ( у меня это /dev/sda) и вам необходимо создать новый раздел (например для установки ОС). Тогда вы должны запустить утилиту следующим образом (Введите следующую команду, чтобы войти в режим управления конкретного блочного устройства):
# fdisk /dev/sda
После входа в командный режим нажмите «n», чтобы создать новый раздел в /dev/sda с определенным размером.
После нажатия «n», вас просят выбрать тип будущего раздела:
- p — Для «primary», т.е создать первичный раздел.
- e — Для «extended», т.е создать расширенный раздел.
Хочу отметить следующее, что «primary» разделов можно создать до 4-х штук, а все остальные будут «extended» (т.е расширенными разделами). Т.к у меня — это всего лишь 1-й раздел, то я выбираю опцию «p». Как я сказал ранее, это мой первый, первичный раздел и для него, я должен указать номер ( номер партиции), логично указать 1 (Но можно выбрать 1-4, т.к всего 4). Для создания полноценного раздела, необходимо указать сектор ( начало позиции цилиндра для создаваемого раздела), мне подсказывают что это будет — 2048 (выбрал стандартное значение), а так же, нужно указать где будет заканчиваться данный сектор (конец позиции цилиндра для создаваемого раздела) — мне предлагают указать стандартное значение, но оно мне не подходит, т.к оно создаст 1 раздел максимальной длины ( у меня это 21 Гб — тестовая машина). На данном этапе, можно указывать конец сектора в килобайтах (K), мегабайтах (M), гигабайтах (G). Предположим, я хочу создать 1-й раздел 5Гб, тогда я должен прописать «+5G» (или «+5000M» и так далее).
Можно еще создать несколько разделов. Действия будут какие же.
Пожалуйста, имейте в виду, что после создания нового раздела, вы должны запустить (выполнить) команду ‘w’, чтобы все действия сохранились. Ну а после чего, выполнить перезапуск ОС, чтобы убедиться что создался раздел.
Форматирование разделов в Unix/Linux
После того, как разделы создали, необходимо выполнить форматирование. Но прежде чем перейти к данному действию, нужно определится с файловой системой (ФС).
Я буду использовать утилиту «mkfs для форматирования раздела. Данная утилита поддерживает следующие ФС:
- ext2:
# mkfs.ext2 /dev/sda1
- ext3:
# mkfs.ext3 /dev/sda4
- ext4:
# mkfs.ext4 /dev/sda4
- fat:
# mkfs.fat /dev/sda4
- minix:
# mkfs.minix /dev/sda4
- msdos:
# mkfs.msdos /dev/sda4
- vfat:
# mkfs.vfat /dev/sda4
- xfs:
# mkfs.xfs /dev/sda4
Выбираем тип ФС и переходим к фармотированию.
Проверить размер раздела в Unix/Linux
После форматирования нового раздела, проверить размер раздела можно с помощью флага «s» и команды FDISK. Таким образом, вы можете проверить размер любого конкретного устройства. Например:
# fdisk -s / dev/sda3 5285413
Размер отображается в блоках.
Для вывода в гигабайтах (Гб), используйте:
# echo "`fdisk -s /dev/sda2`/(2^20)" | bc # echo "`fdisk -s /dev/sda1`/(2^20)" | bc # echo "`fdisk -s /dev/sda`/(2^20)" | bc
Выглядит юзабельно.
Включение/Выключение загрузки флага (*) из раздела в Unix/Linux
При разметке, я обычно выделяю 100мб для раздела, в котором будет хранится загрузчик. И для этой цели, необходимо указать что именно с него будет выполнятся загрузка. И по этому, нужно указать нужный из разделов. Начнем:
# fdisk /dev/sda
Первым шагом, будет просмотр имеющихся разделов, чтобы увидеть текущую таблицу разделов. Как вы помните — это «p» опция. У меня на скриншоте ниже, видно что загрузочный раздел на / dev/sda1 диске (вы видите, что это флаг загрузки — звездочка ‘*’), как показано ниже:
Затем введите ‘а’ опцию, чтобы отключить флаг загрузки. Нам предлагают выбрать номер раздела где будет убрана загрузка ( я выбираю ‘1 ‘ т.е. / dev/sda1). Это отключит флаг загрузки на разделе / dev/sda1:
Чтобы включить флаг с загрузки, используем «a» опцию. После того как нажали, необходимо будет ввести номер раздела который будет загружаться ( например 1-й) и сново вернули все на места.
Удалить раздел в Unix/Linux
Если вы хотели бы удалить определенный раздел (т.е. /dev/sda4) от конкретного блочного устройства (например — /dev/sda). Вы должны выполнить:
# fdisk /dev/sda
Затем, введите ‘d’ — чтобы войти в меню удаления разделов. После ввода, просят ввести номер раздела, который я хочу удалить. Предположим, мне нужно удалить 4-й раздел, то я ввожу «4». Все, раздел был удален. Вводим ‘w’ для записи всех изменений! Новые изменения будут работать только после следующей перезагрузки системы. Это можно легко понять из приведенного ниже вывода.
Предупреждение: Будьте осторожны, выполняя этот шаг, потому что с помощью опции ‘d’ полностью удалит раздел из системы и вы можете потерять все данные с разделе!
Использование fdisk в bash скриптах
Если хорошо знаешь команды, то можно написать небольшой баш-скрипт или просто использовать данную конструкцию в шеле оболочки, который эмулировал бы работу пользователя:
fdisk /dev/hda << EOF n p 1 a 1 t c w EOF
Я не буду объяснять что делает данные буквы, т.к я описывал все опции выше.
Тема «Как использовать команду FDISK на Linux», я старался изо всех сил рассказать почти о всех основных командах fdisk, но все еще FDISK содержит множество других команд вы можете использовать их, введя «х». Для получения более подробной информации, введите команду ‘man Fdisk «в терминала.