ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] bad block на загрузочном секторе usb-драйва
@ 2008-03-14 20:46 Andrey Kutuzov
  2008-03-15  6:08 ` Konstantin S. Uvarin
  2008-03-15  8:59 ` ABATAPA
  0 siblings, 2 replies; 10+ messages in thread
From: Andrey Kutuzov @ 2008-03-14 20:46 UTC (permalink / raw)
  To: community

Моё почтение!

Есть переносной жёсткий диск с usb-интерфейсом. На нём один 
FAT32-раздел. Похоже, что на загрузочном секторе появились сбойные 
блоки, из-за этого раздел не монтируется, в логи сыплются I/O error.
Testdisk прекрасно видит сам раздел, все данные, реконструирует 
правильный boot sector, но записать его не может - write error, видимо 
из-за этих самых сбойных блоков.
Собственно, вопрос: можно ли как-то линуксовыми средствами (желательно 
Alt) решить проблему? Ну типа пометить эти блоки как плохие, чтобы 
загрузочный сектор на них не пытался записываться. Или по крайней мере 
есть ли способ извлечь с винчестера данные, ведь они-то целы?

--
Andrey


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-14 20:46 [Comm] bad block на загрузочном секторе usb-драйва Andrey Kutuzov
@ 2008-03-15  6:08 ` Konstantin S. Uvarin
  2008-03-15  6:25   ` Konstantin S. Uvarin
  2008-03-21 19:48   ` Andrey Kutuzov
  2008-03-15  8:59 ` ABATAPA
  1 sibling, 2 replies; 10+ messages in thread
From: Konstantin S. Uvarin @ 2008-03-15  6:08 UTC (permalink / raw)
  To: ALT Linux Community general discussions

Приветствую! 

> Testdisk прекрасно видит сам раздел, все данные, реконструирует
> правильный boot sector, но записать его не может - write error, видимо
> из-за этих самых сбойных блоков.

> Собственно, вопрос: можно ли как-то линуксовыми средствами (желательно
> Alt) решить проблему? Ну типа пометить эти блоки как плохие, чтобы
> загрузочный сектор на них не пытался записываться. 

Вот это сомнительно -- сектор за нумером ноль не особо-то сдвинешь... Разве 
что самому диску в мозгах что-то поправить. 

> Или по крайней мере есть ли способ извлечь с винчестера данные, ведь они-то 
целы?

Ну, первое что приходит в голову -- сделать dd conv=noerror if=/dev/$disk 
>image и потом образ прогнать testdisk-ом и смонтировать с -o loop. Но это 
много места надо, а оно не всегда есть. 

Можно еще попробовать что-то типа mount /dev/sdX /mnt/smth -o 
loop,ro,offset=многобайт -- так, чтобы offset пришелся на начало раздела

-- 
Konstantin S. Uvarin
"Добрый волбешник" (c) А.Кнышев

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-15  6:08 ` Konstantin S. Uvarin
@ 2008-03-15  6:25   ` Konstantin S. Uvarin
  2008-03-21 19:48   ` Andrey Kutuzov
  1 sibling, 0 replies; 10+ messages in thread
From: Konstantin S. Uvarin @ 2008-03-15  6:25 UTC (permalink / raw)
  To: ALT Linux Community general discussions

Приветствую!

> Можно еще попробовать что-то типа mount /dev/sdX /mnt/smth -o
> loop,ro,offset=многобайт -- так, чтобы offset пришелся на начало раздела

Вот, попробовал сам -- сработало. Это, конечно, при условии что начало самой 
партиции не битое.
 
bash$ sudo mount /dev/sda /mnt/floppy/ -o ro,loop,offset=32256
bash$ mount | grep floppy
/dev/sda on /mnt/floppy type ext3 (ro,loop=/dev/loop4,offset=32256)
bash$ ls /mnt/floppy/
bin   dev  home   jukebox  lost+found  mnt  proc  sbin   srv   sys  usr  yard
boot  etc  image  lib      media       opt  root  share  swap  tmp  var

-- 
Konstantin S. Uvarin
случаи феерического долбоклюйства

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-14 20:46 [Comm] bad block на загрузочном секторе usb-драйва Andrey Kutuzov
  2008-03-15  6:08 ` Konstantin S. Uvarin
@ 2008-03-15  8:59 ` ABATAPA
  2008-03-21 19:52   ` Andrey Kutuzov
  1 sibling, 1 reply; 10+ messages in thread
From: ABATAPA @ 2008-03-15  8:59 UTC (permalink / raw)
  To: ALT Linux Community general discussions

14 марта 2008 г. Andrey Kutuzov написал:
> Alt) решить проблему? Ну типа пометить эти блоки как плохие, чтобы
> загрузочный сектор на них не пытался записываться. Или по крайней мере
> есть ли способ извлечь с винчестера данные, ведь они-то целы?

Воспользуйтесь MHDD.
Сохраните нужные данные, делайте Remap и Erase.

-- 
ABATAPA


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-15  6:08 ` Konstantin S. Uvarin
  2008-03-15  6:25   ` Konstantin S. Uvarin
@ 2008-03-21 19:48   ` Andrey Kutuzov
  2008-03-22  5:57     ` Konstantin S. Uvarin
  1 sibling, 1 reply; 10+ messages in thread
From: Andrey Kutuzov @ 2008-03-21 19:48 UTC (permalink / raw)
  To: ALT Linux Community general discussions

Konstantin S. Uvarin пишет:
> Можно еще попробовать что-то типа mount /dev/sdX /mnt/smth -o 
> loop,ro,offset=многобайт -- так, чтобы offset пришелся на начало
> раздела
Хм, а как определить этот самый offset? 512 байт - это MBR, а дальше ещё 
что-то есть? Пробовал монтировать с offset 512 и 32256 - бесполезно.


-- 
Solve et coagula!
Andrey


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-15  8:59 ` ABATAPA
@ 2008-03-21 19:52   ` Andrey Kutuzov
  2008-03-29 10:19     ` ABATAPA
  0 siblings, 1 reply; 10+ messages in thread
From: Andrey Kutuzov @ 2008-03-21 19:52 UTC (permalink / raw)
  To: ALT Linux Community general discussions

ABATAPA пишет:
>> Alt) решить проблему? Ну типа пометить эти блоки как плохие, чтобы
>> загрузочный сектор на них не пытался записываться. Или по крайней мере
>> есть ли способ извлечь с винчестера данные, ведь они-то целы?
> Воспользуйтесь MHDD.
> Сохраните нужные данные, делайте Remap и Erase.
А как данные-то сохранить? MHDD этого вроде не умеет. Самое обидное, что 
testdisk видит файловую систему, можно даже побродить по каталогам, но 
он тоже не даёт возможности скопировать файлы куда-либо. Или сохранение 
образа всего винчестера через dd и натравливание на него testdisk - это 
единственный путь?

Кстати, MHDD при сканировании не находит ни одного bad block'a. Чудеса 
какие-то.


-- 
Solve et coagula!
Andrey


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-21 19:48   ` Andrey Kutuzov
@ 2008-03-22  5:57     ` Konstantin S. Uvarin
  2008-03-22  6:58       ` Konstantin S. Uvarin
  0 siblings, 1 reply; 10+ messages in thread
From: Konstantin S. Uvarin @ 2008-03-22  5:57 UTC (permalink / raw)
  To: ALT Linux Community general discussions

On Friday 21 March 2008 22:48:35 Andrey Kutuzov wrote:
> Konstantin S. Uvarin пишет:
> > Можно еще попробовать что-то типа mount /dev/sdX /mnt/smth -o
> > loop,ro,offset=многобайт -- так, чтобы offset пришелся на начало
> > раздела
>
> Хм, а как определить этот самый offset? 512 байт - это MBR, а дальше ещё
> что-то есть? Пробовал монтировать с offset 512 и 32256 - бесполезно.

Я проверял вот какой командой: 

# for i in `seq 1 1000`; do echo -n "$i:"; dd if=/dev/sdc bs=512 count=2 
skip=$i | file -; done 2>/dev/null | grep -v ': data'

Что она делает: читает 2 сектора, начиная с разных оффсетов, определяет тип 
прочитанного файла, и если это не "данные" -- печатает количество секторов, 
на которое был сдвиг, и тип файла. 

Соответственно в выводе будет и начало первой файловой системы: 

63:/dev/stdin: x86 boot sector, Microsoft Windows 98 Bootloader 
IO.SYS+MSDOS.SYS, code offset 0x3c, OEM-ID "MSWIN4.1", sectors/cluster 32, 
root entries 512, Media descriptor 0xf8, sectors/FAT 256, heads 255, hidden 
sectors 63, sectors 2047937 (volumes > 32 MB) , serial number 0x4c040460, 
label: "USB DISK   ", FAT (16 bit)

63*512 = 32256 как раз

и это число получалось на нескольких дисках...

-- 
Konstantin S. Uvarin
  "Пароходом выехать не могу думаю баржей"
  "Думайте головой выезжайте чем хотите"

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-22  5:57     ` Konstantin S. Uvarin
@ 2008-03-22  6:58       ` Konstantin S. Uvarin
  2008-03-29 20:20         ` Andrey Kutuzov
  0 siblings, 1 reply; 10+ messages in thread
From: Konstantin S. Uvarin @ 2008-03-22  6:58 UTC (permalink / raw)
  To: ALT Linux Community general discussions

Приветствую! 

> # for i in `seq 1 1000`; do echo -n "$i:"; dd if=/dev/sdc bs=512 count=2
> skip=$i | file -; done 2>/dev/null | grep -v ': data'

Ещё раз перепроверил -- на некоторых дисках требуется увеличить размер "пробы"  
до 3 секторов (count=3). Может, даже и 4 не лишне будет. Но выдает все те же 
32256.

А, еще можно вместо echo -n $i: написать так: echo -n $((512*$i)):

Итого
# for i in `seq 1 1000`; do echo -n $((512*$i)): ; dd if=/dev/sdb bs=512 
count=3 skip=$i | file -; done 2>/dev/null | grep -v ': data'

-- 
Konstantin S. Uvarin
Команда ICQ решила не отставать от команды ljtalk и снова поломала сервер.
Ура, товарищи!

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-21 19:52   ` Andrey Kutuzov
@ 2008-03-29 10:19     ` ABATAPA
  0 siblings, 0 replies; 10+ messages in thread
From: ABATAPA @ 2008-03-29 10:19 UTC (permalink / raw)
  To: ALT Linux Community general discussions

21 марта 2008 г. Andrey Kutuzov написал:
> Или сохранение
> образа всего винчестера через dd и натравливание на него testdisk - это
> единственный путь?

Разумеется, экспериментировать нужно не над самими данными, а над копией.

-- 
ABATAPA


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] bad block на загрузочном секторе usb-драйва
  2008-03-22  6:58       ` Konstantin S. Uvarin
@ 2008-03-29 20:20         ` Andrey Kutuzov
  0 siblings, 0 replies; 10+ messages in thread
From: Andrey Kutuzov @ 2008-03-29 20:20 UTC (permalink / raw)
  To: ALT Linux Community general discussions

Konstantin S. Uvarin пишет:
> А, еще можно вместо echo -n $i: написать так: echo -n $((512*$i)):
> Итого
> # for i in `seq 1 1000`; do echo -n $((512*$i)): ; dd if=/dev/sdb bs=512 
> count=3 skip=$i | file -; done 2>/dev/null | grep -v ': data'
Спасибо, интересные вещи обнаружил этот скрипт:
32768:/dev/stdin: x86 boot sector
35328:/dev/stdin: x86 boot sector, code offset 0x58, OEM-ID "MSDOS5.0", 
sectors/cluster 64, Media descriptor 0xf8, heads 255, hidden sectors 63, 
sectors 234436482 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 28611, 
reserved3 0x800000, serial number 0x68535ba9, unlabeled

Это как, два бут-сектора, что ли на диске?

Примонтировать с offset=32768 не получилось, с offset=35328 прошло. Но 
после команды ls на каталог монтирования в консоль валятся тотально 
искажённые имена файлов, а в логах вот такое:
Mar 30 00:58:53 wonderland kernel: FAT: Filesystem panic (dev loop0)
Mar 30 00:58:53 wonderland kernel:     invalid access to FAT (entry 
0x6f910e91)
И так кучу раз (для каждого файла, судя по всему - entry меняются)

Скопировать такие файлы тоже невозможно - not found.

При этом testdisk продолжает спокойно показывать нормальный список 
каталогов  и файлов внутри этого раздела (не давая инструмента, чтобы их 
скопировать оттуда). Правда, сообщает, что раздел Found using FAT backup.

Что-то я запутался. На днях найду винчестер со свободными 120 
гигабайтами, солью туда образ этого диска и попробую его отформатировать 
на низком уровне, но может, сейчас можно что-то сделать? По крайней 
мере, прогресс есть - раздел уже примонтировался :)

-- 
Solve et coagula!
Andrey


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2008-03-29 20:20 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-14 20:46 [Comm] bad block на загрузочном секторе usb-драйва Andrey Kutuzov
2008-03-15  6:08 ` Konstantin S. Uvarin
2008-03-15  6:25   ` Konstantin S. Uvarin
2008-03-21 19:48   ` Andrey Kutuzov
2008-03-22  5:57     ` Konstantin S. Uvarin
2008-03-22  6:58       ` Konstantin S. Uvarin
2008-03-29 20:20         ` Andrey Kutuzov
2008-03-15  8:59 ` ABATAPA
2008-03-21 19:52   ` Andrey Kutuzov
2008-03-29 10:19     ` ABATAPA

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git