LINUX.ORG.RU

Исправить флэшку. Fdisk не помогает.

 ,


1

2

Сегодня воткнул флэху, винда видит, спрашивает форматнуть, но форматнуть не может. Принёс домой, система у меня такая:

root@ss-Vostro1310:/home/ss# uname -a
Linux ss-Vostro1310 3.5.0-36-generic #57~precise1-Ubuntu SMP Thu Jun 20 18:21:09 UTC 2013 x86_64 GNU/Linux
root@ss-Vostro1310:/home/ss# lsb_release -r
Release:	12.04
Воткнул флэшку, появилось это:
root@ss-Vostro1310:/home/ss# dmesg
[ 8607.168212] usb 2-2: new high-speed USB device number 2 using ehci_hcd
[ 8607.301015] usb 2-2: New USB device found, idVendor=0204, idProduct=6025
[ 8607.301027] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 8607.301035] usb 2-2: Product: USB Mini Rubber
[ 8607.301042] usb 2-2: Manufacturer: takeMS
[ 8607.301049] usb 2-2: SerialNumber: AA04012700101060
[ 8607.353015] Initializing USB Mass Storage driver...
[ 8607.353197] scsi5 : usb-storage 2-2:1.0
[ 8607.353292] usbcore: registered new interface driver usb-storage
[ 8607.353294] USB Mass Storage support registered.
[ 8608.353130] scsi 5:0:0:0: Direct-Access     takeMS   USB Mini Rubber  5.00 PQ: 0 ANSI: 2
[ 8608.363541] sd 5:0:0:0: [sdb] 8279040 512-byte logical blocks: (4.23 GB/3.94 GiB)
[ 8608.364168] sd 5:0:0:0: [sdb] Write Protect is off
[ 8608.364179] sd 5:0:0:0: [sdb] Mode Sense: 0b 00 00 08
[ 8608.364332] sd 5:0:0:0: Attached scsi generic sg2 type 0
[ 8608.364636] sd 5:0:0:0: [sdb] No Caching mode page present
[ 8608.364641] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 8608.367393] sd 5:0:0:0: [sdb] No Caching mode page present
[ 8608.367399] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 8608.369905]  sdb: unknown partition table
[ 8608.372414] sd 5:0:0:0: [sdb] No Caching mode page present
[ 8608.372419] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 8608.372423] sd 5:0:0:0: [sdb] Attached SCSI removable disk
Вроде физически видит. Дальше fdisk:
root@ss-Vostro1310:/home/ss# fdisk -l /dev/sdb

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 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: 0xffffffff

Disk /dev/sdb doesn't contain a valid partition table
Это уже смущает. Почитал выборку гугла по этой ошибке, решил прибегнуть к суровому дд:
root@ss-Vostro1310:/home/ss# dd if=/dev/zero of=/dev/sdb bs=64k
dd: writing `/dev/sdb': No space left on device
64681+0 records in
64680+0 records out
4238868480 bytes (4.2 GB) copied, 622.8 s, 6.8 MB/s
dd отрабатывает без сбоев. Далее попытка создать раздел:
root@ss-Vostro1310:/home/ss# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x26ae3553.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-8279039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-8279039, default 8279039): 
Using default value 8279039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

Command (m for help): p

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 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: 0x26ae3553

   Device Boot      Start         End      Blocks   Id  System
dev/sdb1            2048     8279039     4138496    6  FAT16

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
Главное в конце перед write оно показывает /dev/sdb1, но на деле я увидел, что fdisk схалтурил и ничего не сделал:
root@ss-Vostro1310:/home/ss# ls /dev/sd
sda   sda1  sda2  sda3  sda4  sda5  sda6  sdb   
root@ss-Vostro1310:/home/ss# mkfs.vfat -F 32 /dev/sdb1
mkfs.vfat 3.0.12 (29 Oct 2011)
/dev/sdb1: No such file or directory
Пробовал ещё стандартную disk-utility, после попытки форматировать выдаёт ошибку Error formating drive:
Error creating partition table: timeout (10s) waiting for change
Как исправить флэшку?

Буду рад любому совету и предписанию.

Создай при помощи GParted таблицу разделов GPT, потом в этом же GParted отформатируй флешку в нужную тебе ФС, все должно работать, о успехе/неуспехе отпишись в тред.

anonymous
()

Есть ненулевая вероятность что на флэшке побилась служебная область, и от того ее так занятно таращит.

Если ничего не поможет - советую сходить на flashboot.ru, там и технологические утилиты имеются, и хауту...

NiTr0 ★★★★★
()

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

SjZ ★★★★★
()
Последнее исправление: SjZ (всего исправлений: 1)

Купить новую флэшку и не выносить мозг.

anonymous
()

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

root@ss-Vostro1310:/home/ss# mkfs.vfat -F 32 /dev/sdb1

Поменяй тип на b - W95 FAT32.

sT331h0rs3 ★★★★★
()

Создай при помощи GParted таблицу разделов GPT, потом в этом же GParted отформатируй флешку в нужную тебе ФС, все должно работать, о успехе/неуспехе отпишись в тред.

После попытки создать Partition Table (проверял и gpt, и msdos) gparted пишет в консоль «/dev/sdb: unrecognised disk label», а попытка создать новый раздел выдаёт такую ошибку:

No partition table found on device /dev/sdb
A partition table is required before partitions can be added.
To create a new partition table choose the menu item:
Device --> Create Partition Table.

mkdosfs -s128 -I /dev/sdb

root@ss-Vostro1310:/home/ss# mkdosfs -s128 -I /dev/sdb
mkdosfs 3.0.12 (29 Oct 2011)
WARNING: Not enough clusters for a 32 bit FAT!
mkdosfs: Too many clusters for file system - try more sectors per cluster

Поменяй тип на b - W95 FAT32.

Проверил. Проблема не изменилась:

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)

Command (m for help): p

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 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: 0x267c9673

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     8279039     4138496    b  W95 FAT32

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
root@ss-Vostro1310:/home/ss# ls /dev/sd
sda   sda1  sda2  sda3  sda4  sda5  sda6  sdb   

SaintSatanist
() автор топика
Ответ на: комментарий от SaintSatanist

кстати, попробовал считать посредством dd

root@ss-Vostro1310:/home/ss# dd count=1 bs=512 if=/dev/zero of=/dev/sdb && sync
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00286761 s, 179 kB/s
root@ss-Vostro1310:/home/ss# dd if=/dev/sdb bs=1k count=128 2>/dev/null | hexdump
0000000 ffff ffff ffff ffff ffff ffff ffff ffff
*
0020000
0xff вместо нулей. Судя по такому, флэхе не поможет уже программное воздействие. Видимо надо Ктулху вызывать. Скажи, Безымянный, как это делается?

SaintSatanist
() автор топика

какой-то гавноед удалил самый дельный совет в этом треде

anonymous
()

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

типа того:
dd if=/dev/urandom of=/tmp/test1 bs=1M count=100
dd if=/tmp/test1 of=/dev/sdb bs=1M count=100
dd if=/dev/sdb of=/tmp/test2 bs=1M count=100
diff /tmp/test1 /tmp/test2

Nao ★★★★★
()
Ответ на: комментарий от SaintSatanist

WARNING: Not enough clusters for a 32 bit FAT!

НУ ТАК УМЕНЬШИ ЯСНО ЖЕ НАПИСАНО

mkdosfs -s64 -I /dev/sdb

ЕСЛИ ЕСТЬ ПОДОЗРЕНИЕ НА КАЧЕСТВО ФЛЕШКИ ПРОСТО ДОБАВЬ ВОД^W -c
mkdosfs -s64 -I -c /dev/sdb
ВСЁ

anonymous
()
Ответ на: комментарий от anonymous

Отработало, якобы без ошибок:

root@ss-Vostro1310:/home/ss# mkdosfs -s64 -I -c /dev/sdb
mkdosfs 3.0.12 (29 Oct 2011)
root@ss-Vostro1310:/home/ss# ls /dev/sd
sda   sda1  sda2  sda3  sda4  sda5  sda6  sdb  
Но sdb1 не появился. Далее запустил fdisk, но там ничего не изменилось:
root@ss-Vostro1310:/home/ss# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xf9a32503.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 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: 0xf9a32503

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-8279039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-8279039, default 8279039): 
Using default value 8279039

Command (m for help): p

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 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: 0xf9a32503

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     8279039     4138496   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)

Command (m for help): p

Disk /dev/sdb: 4238 MB, 4238868480 bytes
131 heads, 62 sectors/track, 1019 cylinders, total 8279040 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: 0xf9a32503

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     8279039     4138496    b  W95 FAT32

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
root@ss-Vostro1310:/home/ss# ls /dev/sd
sda   sda1  sda2  sda3  sda4  sda5  sda6  sdb   

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

А смысл так париться, если я итак, записывая нули, считываю единицы?

Но, кстати, флешка на совсем мертва, как я полагал по hexdump, после mkdosfs увидел такое:

root@ss-Vostro1310:/home/ss# dd if=/dev/sdb bs=1k count=128 2>/dev/null | hexdump
0000000 ffff ffff ffff ffff ffff ffff ffff ffff
*
0001000 0000 0000 0000 0000 0000 0000 0000 0000
*
00020e0 ed00 0000 0000 0000 0000 0000 0000 0000
00020f0 0000 0000 0000 0000 0000 0000 0000 0000
*
0010000 ffff ffff ffff ffff ffff ffff ffff ffff
*
0020000
Хоть оно и не совсем мертво, но и до живого тут далеко.

SaintSatanist
() автор топика
Ответ на: комментарий от SaintSatanist

Но sdb1 не появился.

НУ ТЫ И ДОЛБОЁБ, ПРОСТО УРОЙСЯ
НЕТ СИЛ БОЛЬШЕ ОБЪЯСНЯТЬ

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.