[Comm] bad block на загрузочном секторе usb-драйва

Konstantin S. Uvarin =?iso-8859-1?q?khedin_=CE=C1_mail=2Eru?=
Сб Мар 22 08:57:49 MSK 2008


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
  "Пароходом выехать не могу думаю баржей"
  "Думайте головой выезжайте чем хотите"


Подробная информация о списке рассылки community