испортил USB флешку - как исправить?

Обмен опытом по установке Линукс на разные аппаратные конфигурации

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

испортил USB флешку - как исправить?

Непрочитанное сообщение Olej » 22 мар 2012, 20:13

Для вас пытливые умы! :lol:

Пока экспериментировал с загрузкой с USB, довёл флешку в какое-то странное состояние - никогда такого не видел:

Код: Выделить всё

[root@notebook src]# ls -lh /dev/sd*
brw-rw---- 1 root disk 8,  0 Мар 22 18:25 /dev/sda
brw-rw---- 1 root disk 8,  1 Мар 22 19:03 /dev/sda1
brw-rw---- 1 root disk 8,  2 Мар 22 17:56 /dev/sda2
brw-rw---- 1 root disk 8,  3 Мар 22 17:56 /dev/sda3
brw-rw---- 1 root disk 8, 16 Мар 22 19:08 /dev/sdb
[root@notebook src]# fdisk /dev/sdb
Невозможно открыть /dev/sdb
[root@notebook src]# 
[root@notebook src]# mount /dev/sdb /mnt/usb1
mount: вы должны указать тип файловой системы
[root@notebook src]# mount -t ext2 /dev/sdb /mnt/usb1
mount: no medium found on /dev/sdb
Аппаратно она отлично распознаётся, вот она:

Код: Выделить всё

[root@notebook src]# lsusb | grep Flash
Bus 001 Device 009: ID 1307:0163 Transcend Information, Inc. 256MB/512MB/1GB Flash Drive

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: испортил USB флешку - как исправить?

Непрочитанное сообщение Olej » 22 мар 2012, 20:33

Olej писал(а): Пока экспериментировал с загрузкой с USB, довёл флешку в какое-то странное состояние - никогда такого не видел:
Только не надо мне рассказывать: "может флешка неисправна?" :-?

Час назад:

1. смотрим эту флешку:

Код: Выделить всё

[olej@nvidia media]$ sudo mkfs.vfat /dev/sde1
mkfs.vfat 3.0.9 (31 Jan 2010)
[olej@nvidia media]$ sudo fdisk -l /dev/sde1

Диск /dev/sde1: 1030 МБ, 1030733824 байт
64 heads, 32 sectors/track, 982 cylinders, всего 2013152 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Устр-во Загр     Начало       Конец       Блоки   Id  Система

[olej@nvidia media]$ df | grep sde
/dev/sde1              1004592         4   1004588   1% /media/76EA-62C7
Обычная картина:
- флешка не разбита на разделы (как флоп)
- 1Gb, форматирована ... FAT16, наверное (FAT32?)

2. меня интересует: будет ли грузиться неразбитая (без партиций) флешка, форматированная Linux fs - ext2:

Код: Выделить всё

[root@nvidia ISO]# umount /dev/sde1
[root@nvidia ISO]# mkfs.ext2 /dev/sde1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
62976 inodes, 251644 blocks
12582 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=260046848
8 block groups
32768 blocks per group, 32768 fragments per group
7872 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
3. после перевтыкания, автоматом:

Код: Выделить всё

[olej@nvidia media]$ ls -l /media/f45a7598-9786-4b9a-8afc-2ffdd4d22bb1
итого 24
drwx------. 2 root root 16384 Мар 22 14:31 lost+found
-rw-r--r--. 1 root root  1000 Мар 22 14:34 test.file
[olej@nvidia ISO]$ ls -lh *LXDE*
-rw-rw-r--. 1 olej olej 199M Мар 20 11:31 RFRemix-16-i686-Live-LXDE.iso
[olej@nvidia ISO]$ unetbootin
[olej@nvidia ISO]$ Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
kbuildsycoca4 running...
....
- накатал загрузочный Linux...
(но не досмотрел, что ISO битый при download!)

4. загрузил эту флешку на ноутбуке ... даже меню начальное Fedora (GRUB?) отработало...
А потом заорало, что: ядро битое, kernel panic...
После этого panic - флешка не автомонтируется на 2-х разных компьютерах ... но в /dev - появляется (см.1-й пост).
Правда, неразбитая флешка всё равно должна появляться как /dev/sdb1, а появляется как /dev/sdb.

Любопытно, правда?
Гипотезы принимаются ... ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: испортил USB флешку - как исправить?

Непрочитанное сообщение Olej » 23 мар 2012, 01:04

Olej писал(а): Любопытно, правда?
3 флешки разных производителей, но все 1Gb, наша - 1307:0163, hdparm /dev/sdb :

Код: Выделить всё

[root@notebook ~]# lsusb | grep Flash
Bus 003 Device 006: ID 090c:1000 Feiya Technology Corp. Flash Drive
Bus 003 Device 005: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
Bus 003 Device 004: ID 1307:0163 Transcend Information, Inc. 256MB/512MB/1GB Flash Drive

[root@notebook ~]# df | grep /dev/sd
/dev/sda1               198337    130937     67400  67% /boot
/dev/sdc1               985808    649872    335936  66% /media/B84B-8520
/dev/sdd1               976344    871576    104768  90% /media/4B4D-A42E

Код: Выделить всё

[root@notebook ~]# hdparm /dev/sdb
/dev/sdb:
 HDIO_DRIVE_CMD(identify) failed: Invalid exchange
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 1024/0/62, sectors = 0, start = 0

Код: Выделить всё

[root@notebook ~]# hdparm /dev/sdc
/dev/sdc:
 HDIO_DRIVE_CMD(identify) failed: Invalid exchange
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 21913/10/9, sectors = 1972224, start = 0

[root@notebook ~]# sudo fdisk -l /dev/sdc

Диск /dev/sdc: 1009 МБ, 1009778688 байт
10 heads, 9 sectors/track, 21913 cylinders
Units = цилиндры of 90 * 512 = 46080 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8ef43be3

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   *           1       21913      986080+   6  FAT16

Код: Выделить всё

[root@notebook ~]# hdparm /dev/sdd
/dev/sdd:
 HDIO_DRIVE_CMD(identify) failed: Invalid exchange
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 1018/31/62, sectors = 1957888, start = 0

[root@notebook ~]# sudo fdisk -l /dev/sdd

Диск /dev/sdd: 1002 МБ, 1002438656 байт
31 heads, 62 sectors/track, 1018 cylinders
Units = цилиндры of 1922 * 512 = 984064 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdd1               1        1018      978267    b  W95 FAT32
Как легко видеть из сравнения, у забитой флешки число heads затёрто в 0.
Но сохранилась её старая запись (2-е сообщение):

Код: Выделить всё

Диск /dev/sde1: 1030 МБ, 1030733824 байт
64 heads, 32 sectors/track, 982 cylinders, всего 2013152 секторов
... или даже ещё хуже: там всё забито мусором:

Код: Выделить всё

geometry      = 1024/0/62, sectors = 0, start = 0
а это: 0 heads, 62 sectors/track, 1024 cylinders

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: испортил USB флешку - как исправить?

Непрочитанное сообщение Olej » 23 мар 2012, 01:47

Olej писал(а): Аппаратно она отлично распознаётся, вот она:
Похоже, что похожие проблемы народ колбасят - интернет полнится множеством обсуждениями.
Например: http://www.assessor.ru/forum/?t=582 - находим по VID:PID 1307:0163
micro gender 8 Gb 1307 0163 – – –
Digitex не знаю 512 Mb 1307 0163 Ut163 не знаю UT163-MPTool
И утилита UT163-MPTool которая ему поможет ;-)

А здесь http://www.flashboot.ru/iflash.html - вообще полная база данных UID:PID
Всего: 10917 записей.
Последний раз редактировалось Olej 23 мар 2012, 02:42, всего редактировалось 1 раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: испортил USB флешку - как исправить?

Непрочитанное сообщение Olej » 23 мар 2012, 02:38

Olej писал(а): И утилита UT163-MPTool которая ему поможет ;-)

А здесь http://www.flashboot.ru/iflash.html - вообще полная база данных UID:PID
Всего: 10917 записей.
Достал там программу UT163-v3.9.8.0.rar от производителя + нашёл где-то раздел с завалявшимся Windows XP (года 1.5 не загружался) + быстренько он определил много интересных праметров + выправил USB flash...
+ но воспринимается это как оскорбление :lol: : "... ложечки нашлись, но осадок остался..."(с) :oops:

Теперь это выглядит так:

Код: Выделить всё

[root@notebook ~]# hdparm /dev/sdd

/dev/sdd:
 HDIO_DRIVE_CMD(identify) failed: Invalid exchange
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 1011/32/61, sectors = 1974271, start = 0

[root@notebook ~]# sudo fdisk -l /dev/sdd

Диск /dev/sdd: 1002 МБ, 1002438656 байт
31 heads, 62 sectors/track, 1018 cylinders
Units = цилиндры of 1922 * 512 = 984064 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdd1               1        1018      978267    b  W95 FAT32
И сразу обращаем внимание на то, что geometry его теперь радикально отличается от того, что он же имел с утра :lol:
Так что геометрия для USB flesh - вещь весьма относительная!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: испортил USB флешку - как исправить?

Непрочитанное сообщение Olej » 23 мар 2012, 14:06

Пока чинил, обсмотрел десятки (или сотни?) страниц в интернет - проблема оказалась животрепещащей.
И поразился: какую херню пишут и, ещё более, советуют!, в подавляющем большинстве мест...
Начиная с того, что вершиной ремонта считается всё прописать нулями, как заклинание:

Код: Выделить всё

# dd if=/dev/zero of=/dev/sdb
- это может и помогает, но в самых элементарных случаях (детали здесь: http://rlab.ru/doc/repair_usb_flash_linux.html).


Алгоритм восстановления USB флешки прост, и должен быть:

1. выясняем пару VID:PID

Код: Выделить всё

[root@notebook src]# lsusb | grep Flash
Bus 001 Device 009: ID 1307:0163 Transcend Information, Inc. 256MB/512MB/1GB Flash Drive
2. если и VID:PID не выявляется - лучше девайс выбросить, там серьёзно контроллер накрылся...

3. отправляемся в базу данных: http://www.flashboot.ru/index.php?name=iflash и заполнив там свои VID:PID - выясняем тип контроллера, и находим утилиту от производителя работы с контроллером...

4. восстанавливаем работоспособность контроллера.

P.S. Здесь вот: http://tehspravka.at.ua/publ/chto_gde_k ... /2-1-0-115 - есть простенькое "для чайников" объяснение:
Флешки – довольно простые устройства, состоят из следующих частей:
- плата PCB;
- USB разъём тип А;
- стабилизатор питания контроллера и флэш из 5 в 3,3 вольт;
- микросхема контроллера;
- микросхема энергонезависимой NAND памяти;
- кварцевый резонатор, обычно на 12 Mhz (на схеме не показан).
Программные сбои контроллера.

В любой флешке установлена микросхема-контроллер. Он отвечает за передачу данных между компьютером и флеш-памятью. Контроллером управляет микропрограмма. Часть микропрограммы записана в микросхеме памяти (а это в основном параметры памяти, транслятор, различные идентификаторы и флаги, например - флаг запрета записи). В случае различных сбоев питания, неправильного извлечения и других причин – происходит сбой микропрограммы контроллера. В результате чего контроллер блокируется и не отвечает на запросы операционной системы. Также, блокировка может произойти из-за износа микросхемы памяти - появления дефектных блоков или превышения порога циклов записи (тогда контроллер сам метит блок как неиспользуемый и часто блокирует флеш на запись). При подключении к компьютеру такой флеш-диск может опознаваться как «Неизвестное устройство», иметь формат RAW или может быть виден в системе как диск с нулевой ёмкостью. При попытке доступа к нему могут выводиться сообщения «Вставьте диск» или «Нет доступа к диску». Иногда, флеш-диск становится доступен только для чтения. Данные видны и читаются, но при попытках создания файла, стирания или форматирования выводится сообщение – «Диск защищен от записи». В данном случае контроллер переходит в режим защиты данных при обнаружении ошибок микропрограммы или флеш-памяти для предотвращения её дальнейшего разрушения (память NAND установленная во флешке повреждается в основном при записи данных).

Большинство утилит по восстановлению производят полное форматирование памяти, по этому, если нужно сохранить важные данные и не потерять их безвозвратно – обратитесь к специалистам по восстановлению информации. С помощью специального оборудования будет произведено считывание и расшифровка информации непосредственно из микросхемы NAND памяти в обход сбойного или неисправного управляющего контроллера.
Простенько и со вкусом ;-)

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: испортил USB флешку - как исправить?

Непрочитанное сообщение tundra37 » 27 мар 2012, 18:39

Ну на flashboot.ru в основном советы по исправлению, когда format не работает. У вас же был простой случай: и в MBR и boot-секторе FAT и NTFS хранится как раз геометрия, которая конечно на флешке "фикция", но увы - СТАНДАРТЫ. У вас геометрия была "битая", либо в секторе не было магического 55АА. В Линуксе ведь boot не обязан быть в 0-м секторе и вот...
Сложности с флешками из-за китайцев - делают флешки из того что на складе и поэтому VID:PID не всегда дают инфу.

Ответить

Вернуться в «Железо для Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей