* [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