Форматирование флешки в Linux

Как показывает учет статистики моего блога, периодически сюда попадают люди, которые ищут ответ именно на этот вопрос — «Как отформатировать флешки в Linux?»

Итак, наиболее просто это можно сделать с помощью программы Gparted. Как ей пользоваться для изменения разделов жесткого диска, я уже вкратце писал тут. Для форматирования флешки не нужно загружаться в режиме Live-CD, можно просто запустить программу из меню. После этого в программе первым делом нужно выбрать саму флешку (вверху справа, нечто вида /dev/sdx, сориентироваться можно по объему диска в Мб) а потом на выбранном разделе щелкнуть правой кнопкой и выбрать пункт «Форматировать»….

А теперь перейдем к консоли. Зачем? На тот случай, если вдруг графика подводит…

Тезис первый — ниже описаны команды, выполнение которых разрешено только администратору. То есть, рядовой пользователь просто получит ответ, что команда не найдена. Посему, сначала в консоли становимся администратором:

su

…и в ответ на запрос вводим пароль администратора. Как стать root-ом в Ubuntu (точнее, задать root-у свой собственный пароль) я уже писал.  Теперь поищем нашу флешку (собственно, как это сделать, я упоминал тут). Повторюсь — для этого вводим следующую команду:

fdisk -l

В ответ получим данные обо всех разделах всех жестких дисков компьютера. В том числе и данные о разделах флешки тоже. Причем, у флешек, плотно эксплуатировавшихся (и форматировавшихся в том числе) под Windows в таблице разделов зачастую такая каша, что линуксовый fdisk выводит весьма «веселые» комментарии:

Диск /dev/sdc: 125 МБ, 125829120 байт
4 heads, 60 sectors/track, 1024 cylinders
Units = цилиндры of 240 * 512 = 122880 bytes
Disk identifier: 0x6f20736b

Это не похоже на таблицу разделов
Возможно, вы выбрали неверное устройство.

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   ?     3242233     7998524   570754815+  72  Неизвестный
Раздел 1 имеет различные физические/логические начала (не-Linux?):
физ=(357, 116, 40) логич=(3242232, 3, 49)
Раздел 1 имеет различные физические/логические окончания:
физ=(357, 32, 45) логич=(7998523, 0, 19)
Раздел 1 не заканчивается на границе цилиндра.
/dev/sdc2   ?      702874     8769658   968014120   65  Novell Netware 386
Раздел 2 имеет различные физические/логические начала (не-Linux?):
физ=(288, 115, 43) логич=(702873, 0, 3)
Раздел 2 имеет различные физические/логические окончания:
физ=(367, 114, 50) логич=(8769657, 1, 22)
Раздел 2 не заканчивается на границе цилиндра.
/dev/sdc3   ?     7791173    15857957   968014096   79  Неизвестный
Раздел 3 имеет различные физические/логические начала (не-Linux?):
физ=(366, 32, 33) логич=(7791172, 3, 6)
Раздел 3 имеет различные физические/логические окончания:
физ=(357, 32, 43) логич=(15857956, 3, 37)
Раздел 3 не заканчивается на границе цилиндра.
/dev/sdc4   ?    12023672    12023903       27749+   d  Неизвестный
Раздел 4 имеет различные физические/логические начала (не-Linux?):
физ=(372, 97, 50) логич=(12023671, 1, 53)
Раздел 4 имеет различные физические/логические окончания:
физ=(0, 10, 0) логич=(12023902, 2, 51)
Раздел 4 не заканчивается на границе цилиндра.

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

Ну да ладно, нас не шуточные комментарии интересовали. Главную информацию мы получили — в системе наша флешка определилась как /dev/sdc.

Начать я предлагаю все-таки с наведения порядка в таблице разделов. Для этого запустим все тот же fdisk, но уже с указанием того накопителя, который будем рихтовать:

fdisk /dev/sdc

(Естественно, вместо /dev/sdc вы указывайте нужный вам диск). В ответ получим следующее приглашение:

Команда (m для справки):

Чтобы, как говорили в небезызвестной комедии, «огласить весь список, пожалуйста» нажмем на клавиатуре как нам и предлагают букву «m». В ответ получим список возможных команд:

Действие команды
   a   переключение флага загрузки
   b   редактирование метки диска bsd
   c   переключение флага dos-совместимости
   d   удаление раздела
   l   список известных типов файловых систем
   m   вывод этого меню
   n   добавление нового раздела
   o   создание новой пустой таблицы разделов DOS
   p   вывод таблицы разделов
   q   выход без сохранения изменений
   s   создание новой чистой метки диска Sun
   t   изменение id системы раздела
   u   изменение единиц измерения экрана/содержимого
   v   проверка таблицы разделов
   w   запись таблицы разделов на диск и выход
   x   дополнительная функциональность (только для экспертов)

Первым делом удалим все те «смешные и странные» разделы. Как удалим? Да так, полностью, окончательно и бесповоротно! Зачем удалим? Так вы ж ведь флешку вобще-то форматировать собирались…

Данный этап процедуры я позволю себе назвать «первой красной меткой». Суть данного маркера в том, что выполняемые нами далее действия выглядят как деструктивные — мы что-то вроде как удаляем, что-то создаем. Однако, на данном этапе мы на самом деле еще не будем вносить какие-либо изменения в таблицу разделов диска. Реальные изменения будут выполнены позже, и об этом я вас извещу «второй красной меткой»…

Начинаем удалять — а именно — нажимать на клавиатуре букву «d». На предложение выбрать раздел, нажимаем последовательно сначала «1» (чтобы удалить первый раздел диска) :

Команда (m для справки): d
Номер раздела (1-4): 1

…потом снова «d» и «2» (второй раздел), «d» и «3» (третий раздел) и возможно «d» и «4» (четвертый). Показателем того, что уже пора остановиться, будет следующее сообщение от fdisk, появляющееся в ответ на очередное нажатие кнопки «d» :

Разделы еще не определены!

То есть, все разделы мы удалили. Теперь создадим новый. Для этого нажмеме кнопку «n» на клавиатуре:

Команда (m для справки): n
Действие команды
e   расширенный
p   основной раздел (1-4)

Создавать мы будем основной раздел. И для этого нажмем кнопку «p» на клавиатуре:

Номер раздела (1-4):

Создадим первый раздел. Для этого нажмем «1» на клавиатуре:

Первый цилиндр (1-1024, по умолчанию 1):

Значение по умолчанию нас полностью устраивает (нам же не нужно пустое место вначале флешки?). По этому чтобы создать разел начиная с самого первого «цилиндра» просто нажимаем «Enter» на клавиатуре:

Используется значение по умолчанию 1
Last цилиндр, +цилиндры or +size{K,M,G} (1-1024, по умолчанию 1024):

По умолчанию программа нам предлагает номер самого последнего «цилиндра». При этом новый раздел будет создан на весь размер флешки. Если Вы как и я, планируете всю флешку использовать как один диск, то просто согласитесь с предложенным выбором. Если же Вы хотите разбить флешку на несколько разделов, то тут нужно задать точку окончания первого раздела. Простейший способ — это указать требуемый размер раздела способом, который предложил сам fdisk — «+ КОЛИЧЕСТВО (ЕДИНИЦ ИЗМЕРЕНИЯ)». Например ввод «+1000М» создаст раздел размером 1000 Мегабайт. Лично я создавал один единственный раздел, и потому просто нажал «Enter» на клавиатуре:

Используется значение по умолчанию 1024

На этом лично я с созданием разделов закончил. Если же Вы планировали создание на диске нескольких разделов, то снова возвращайтесь к процессу создания (кнопка «n»), вводите следующий (а не 1-й) номер раздела, соглашайтесь с номером цилиндра начала раздела (fdisk корректно предложит первый свободный после первого раздела), указывайте размер раздела, и т.д. как говорится, до «полного удовлетворения»…

Если Вы сделали ошибку, то в любое время ошибочно созданный раздел можно удалить, и после этого создать его уже правильно.

И вот пришло время «второй красной метки». Следующая команда запишет на диск новую таблицу разделов, которую мы только что создали. Самое время лишний раз всё перепроверить, и если в чем-то допустили ошибку, вернуться к началу и исправить ее. Если же все нормально, то двигаемся далее.

Итак, вводим команду «w» с клавиатуры:

Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

ВОТ ИМЕННО В ЭТОТ МОМЕНТ новая таблица разделов и была записана на флешку. После этого Вы снова вернетесь в консоль.

И вот наконец-то мы добрались до … форматирования 🙂 .

Команда форматирования раздела в Linux выглядит следующим образом:

mkfs [-V] [-t тип_фс] [опции_фс] устройство [размер]

Нам в нашем процессе форматирования флешки потребуется указать два параметра. Наиболее важным будет параметр -t — тип файловой системы. Если флешку планируется использовать с Windows, то нужно использовать файловую систему FAT (отформатировать флешку в NTFS Linux,увы, не сможет). В этом случае параметр указывается как «vfat» Если же флешка будет использоваться для работы только с Linux, то можно использовать файловые системы ext2 или ext3. В этих случаях ключу -t тип файловой системы прямо так и указываете (ext2 или ext3).

Второй параметр — это номер того раздела, который мы планируем отформатировать. Раньше мы уже определили, что флешку нашу Linux видит как диск /dev/sdc, а раздел на ней мы создавали 1-й. Но, перепроверим на всякий случай еще раз:

fdisk -l

и получим ответ

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1               1        1024      122850   83  Linux

Как видим, «каши» в таблице разделов флешки теперь не наблюдается, там всего один раздел /dev/sdc1, и именно его нам и нужно отформатировать. Чтобы отформатировать флешку в файловую систему FAT, вводим следующую команду:

mkfs -t vfat /dev/sdc1

Если хотим использовать файловую систему ext2, то команда должна быть следующая:

mkfs -t ext2 /dev/sdc1

Ну и для ext3, соответственно:

mkfs -t ext3 /dev/sdc1

Флешка будет отформатирована соответствующим образом.

Кстати, при самой первой попытке отформатировать диск в файловую систему FAT меня ждал сюрприз. Оказывается в моей Mandriva утилита для форматирования в FAT вынесена в отдельный пакет и по умолчанию не устанавливается. Пришлось установить ее следующей командой

urpmi dosfstools

Вот и все…

PS. Те же самые процедуры используются и для работы с жестким диском…