Из-под Linux (а именно openSUSE 12.1) считывалась только половина информации, существовавшей на флешке.

Благо, что информация была совсем не важная и флешку решено было отформатировать средствами Windows в формате FAT32. Однако, в завершении процедуры Windows вывела сообщение о том, что не «не удаётся завершить форматирование». В любом другом формате, предлагаемом интерфейсом (exFAT или NTFS) флешка форматировалась без труда, однако в FAT32 упорно не хотела. Не форматируется и всё тут!

Проблему решил следующим образом.

Флешку «зацепил» к компьютеру с Linux (потому что в Windows диспетчер дисков наотрез отказывался с ней работать). Далее работал в программе console. Фактически это аналог командной строки в Windows, запустить её можно нажав ALT+F2 и набрав в появившейся строке команду konsole. Обратите внимание на написание команды, именно konsole, а не console!

С помощью fdisk определяем какое имя имеет наша флешка

#fdisk -l

(в команде используется минус эль)

В выводе ищем подобную строку

Disk /dev/sdb: 8032MB, 8032092160 bytes

Заметьте, что цифры могут быть другими, в зависимости от величины вашей флешки. При этом, если система увидит два одинаковых устройства одинакового размера, вам придется идентифицировать вашу флешку от других.

Но допустим, что флешка данного размера (в моём случае 8 ГБ) "зацеплена" у вас одна и значит её имя /dev/sdb. Запускаем fdisk с именем флешки в качестве параметра

#fdisk /dev/sdb
Command (m for help):

Программа ожидает ввода команды, для вывода всех возможных команд можно нажать m (ввод каждой команды завершается нажатием ENTER). Нам в данном случае будут интересны команды:

d     delete a partition                   удалить раздел

n     add a new partition                создать новый раздел

p     print the partition table           вывод таблицы разделов

q     quit without saving changes    выйти без сохранения изменений

w     write table to disk and exit     записать таблицу разделов и выйти

Для начала смотрим сколько разделов есть на вашей флешке (как и на обычном жёстком диске их может быть несколько)

Command (m for help): p
Disk /dev/sdb: 8032 MB, 8032092160 bytes
131 heads, 50 sectors/track, 2395 cylinders, total 15687680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical):512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xccd4ebea
   Device Boot     Start             End        Blocks      Id     System
/dev/sdb1          2048     15687679    7842816     83     Linux

Вывод может несколько отличаться, но в любом случае, если разделы существуют, список их будет представлен по строкой

"Device Boot     Start             End        Blocks      Id     System"

Удаляем все разделы (естественно, что всю важную информацию, которую можно прочитать с флешки сначала надо скопировать куда-нибудь)

Command (m for help): d

Если на флешке один раздел, то программа ничего не спросит, а просто ответит

Selected partition N

где N - номер удаленного раздела

Если же разделов больше, то будет выведен запрос номера удаляемого раздела

Partition number (1-4):

и нужно будет ввести номер удаляемого раздела. Его можно определить согласно порядка отображения раздела в списке (см. выше)

Если сейчас вывести таблицу разделов (команда p) - то она будет пустой. Создаем новый раздел

Command (m for help): n
Partition type:
   p     primary (0 primary, 0 extended, 4 free)
   e     extended
Select (default p):

Программа спрашивает раздел какого типа вы хотите создать: основной или дополнительный) и при этом показывает информацию о уже существующих разделах (в нашем случае 0 основных, 0 дополнительный и 4 "свободных пространства" для создания дисков, их в принципе не может быть более 4, но это тема уже другой статьи). Допустим, мы решили что флешка будет без "выгибонов" с одним разделом, который и будет занимать всё свободное место. Жмём p

Partition number (1-4, default 1):

Программа просит вас назначить номер создаваемому разделу. Вводим 1

First sector (2048-15687679, default 2048):

Теперь необходимо указать какой сектор диска будет первым. Дело в том, что в секторы с меньшим числом записывается информация необходимая для обеспечения работы самой флешки, поэтому минимальный номер первого сектора не может быть меньше 2048. Пишем 2048

Last sector, +sectors or +size{K,M,G} (2048-15687679, default 15687679):

Определяем последний сектор (другими словами размер создаваемого раздела). Так как мы решили что раздел будет один выберем максимально возможное значение, т.е. в нашем случае 15687679

Программа снова ожидает ввода команды

Command (m for help):

проверяем таблицу разделов. В ней должна появиться одна запись, соответствующая вновь созданному разделу. Не пугайтесь, что в столбце System указано Linux. Это никак не отразиться на работе этой флешки в Windows-среде.

Записываем полученную таблицу разделов и выходим (команда w). Кстати, если изменения, сделанные вами на последних шагах вас вдруг не устроили - то можно выйти без сохранения изменений (команда q), при этом нникаких изменений на флешке произведено не будет, даже если вы уже удалили какой-то раздел и/или создали новый. Пока не применена команда записи таблицы разделов w - всё остаётся без изменений.

Итак, раздел создан, теперь необходимо отформатировать его. В Linux это делается командой mkfs

#mkfs -t vfat /dev/sdb1

где ключ -t определяет тип файловой системы, в которой форматируется диск (в нашем случае vfat, т.е. FAT32), а /dev/sdb1 - имя раздела на флешке (его можно взять из вывода таблицы разделов команды fdisk -l).

После этих процедур флешка одинаково хорошо вела себя в любых операционных системах и позволяла форматировать себя в любых форматах.