
Фон
У меня есть очень старый PATA HDD (1998 Fujitsu 3.2GB), подключенный к очень старому компьютеру (Pentium 2 / материнская плата Asus P2L97) с одним загрузочным разделом (Windows 95 и файловая система Fat32). Как и ожидалось, этот HDD умирает с большим количествомУМНЫЙоповещения.
Моя цель — не восстановить данные, а перенести копию старого жесткого диска на новый жесткий диск (2003 PATA WD 80 ГБ) для повторной загрузки.
Я сохранил весь старый HDD с помощью ddrescue
(загрузка сsystemrescue)в файл образа (rescue.img на USB-накопителе) после подключения неисправного жесткого диска к новому компьютеру, как описано вруководство по ddrescue. К сожалению, когда я пытаюсь восстановить образ на новом жестком диске, MBR повреждается, и я не могу загрузиться.
Что я сделал подробно:
[root@sysrescue]# ddrescue /dev/sda /mnt/usb/SAVEDD/rescue.img /mnt/usb/SAVEDD/rescue.mapfile
GNU ddrescue 1.26
Press Ctrl-C to interrupt
ipos: 305664 B, non-trimmed: 0 B, current rate: 0 B/s
opos: 305664 B, non-scraped: 1024 B, average rate: 184 kB/s
non-tried: 0 B, bad-sector: 154624 B, error rate: 1024 B/s
rescued: 3243 MB, bad areas: 2, run time: 4h 53m 15s
pct rescued: 99.99%, read errors: 305, remaining time: n/a
Finished
Полныйжурнал спасения(7Мо) ифайл карты спасения
Файл изображения выглядит нормально сfdisk
[root@sysrescue]# fdisk -l copy_rescue.img
Disk copy_rescue.img: 3.02 GB, 3243663360 bytes, 6335280 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 label type: dos
Disk identifier: 0x5902d932
Device Boot Start End Sectors Size Id Type
copy_rescue.img1 * 63 6330239 6330177 3G b W95 FAT32
но file
показывает поврежденную MBR и таблицу разделов.
[root@sysrescue]# file -s copy_rescue.img
copy_rescue.img: DOS/MBR boot sector MS-MBR 9M english at offset 0x10+0xFF "Invalid partition table" at offset 0x127 "Error loading operating system" at offset 0x146 "Missing operating system", disk signature 0x5902d932, created with driveID 0x80; partition 1 : ID=0xb, active, start-CHS (0x0, 1, 1), end-CHS (0x310, 127, 63), startsector 63, 6330177 sectors
Я попробовал скопировать образ на «более новый», больший и исправный жесткий диск SATA (2003 WD 80 ГБ) после очистки
dd if=/dev/zero of=/dev/sda
dd: writing to '/dev/sda': no space left on device
80026361856 bytes (80 GB, 75GiB) copied
ddrescue -f /mnt/usb/SAVEDD/rescue.img /dev/sda restore.mapfile
Полныйвосстановить файл карты
Получившееся разделение странное, на /dev/sda оно вроде нормальное
[root@sysrescue]# fdisk -l /dev/sda
Disk /dev/sda: 74.53 GB, 80026361856 bytes, 156301488 sectors
Disk model: WDC WD800BB-00CA
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 label type: dos
Disk identifier: 0x5902d932
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 63 6330239 6330177 3G b W95 FAT32
но это совершенно неверно /dev/sda1
, и жесткий диск даже не распознается BIOS старого компьютера.
Мой вопрос: почему при восстановлении я получаю поврежденную таблицу разделов? Как мне загрузиться с нового HDD? Чего мне следует ожидать, когда я копирую очень старый загрузочный Win95 3GB HDD (с dd или ddrescue) на "новый" 80GB HDD?
Я пытался перестроить таблицу разделов с помощью testdisk
безуспешно, но я не уверен, что это правильный подход. Кроме того, testdisk
предупреждение об ошибке в головках/геометрии цилиндров HDD.
Стоит ли мне копать в направлении testdisk и восстановления MBR/таблицы разделов или это проблема копирования/ddrescue?
ПРАВКА 1:
Старый BIOS обнаруживает новый жесткий диск
Я решил проблему с тем, что старый BIOS не определял новый жесткий диск, уменьшив емкость нового жесткого диска (с помощью наложения диска) и снова скопировав образ старого жесткого диска на новый жесткий диск.
ddrescue -f /mnt/usb/SAVEDD/rescue.img /dev/sda restore.mapfile
fdisk -l /dev/sda
Disk /dev/sda: 33.8 GB, 33820284928 bytes
128 heads, 63 sectors/track, 8191 cylinders, total 66055244 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: 0x5902d932
Device Boot Start End Blocks Id System
/dev/sda1 * 63 6330239 3165088+ b W95 FAT32
но некоторые pbm сохраняются:
- ОС не загружаетсядаже после фиксации перегородки стола с помощью
Testdisk
Testdisk
обнаружить некоторое несоответствие CHSWarning: number of heads/cylinder mismatches 128 (FAT) != 255 (HD)
Здесьэто полный testdisk.log
Как загрузить ОС после ddrescue
копирования?
EDIT 2: Старый BIOS находит Windows 95
Я восстановил MBR нового жесткого диска следующим образом:
- загрузка с дискеты DOS
A: fdisk /mbr
Теперь у меня естьзагрузка windows 95но происходит сбой без сообщения об ошибке (выключение компьютера).
Я пытался запустить«пошаговое подтверждение»и процесс загрузки завершается неудачей
WIN [Enter=Y, Esc=N]?Y
Load all Windows drivers [Enter=Y, Esc=N]?Y
C:\WINDOWS\system\vmm32.vxd: Missing/unable to load.
Press any key to continue...
VMM32, похоже, является критически важным системным файлом, но я все равно могу загрузить систему в режиме командной строки и, вероятно, восстановить его, поскольку этот файл находится вхорошее место.
C:\WINDOWS\SYSTEM>dir vmm32.vxd /s
Volume in drive C has no label
Volume Serial Number is 232E-1BD3
Directory of C:\WINDOWS\SYSTEM
VMM32 VXD 709.556 16.07.98 20:39
1 file(s) 709.556 bytes
Total files listed:
1 file(s) 709.556 bytes
0 dir(s) 2.849.947.648 bytes free
C:\WINDOWS\SYSTEM>
решение1
У меня вопрос: почему при восстановлении таблица разделов оказывается поврежденной?
Fdisk сообщит вам, что ваш раздел имеет тип «b».
Если вы посмотрите это в https://en.wikipedia.org/wiki/Тип_раздела
поле описания обозначает «FAT32 с адресацией CHS»
Эти разделы должны быть адресованы с помощью тройки, состоящей из цилиндра, головки и сектора. Когда ваш диск был смонтирован в вашей машине P2L97, ваш BIOS содержал набор параметров максимального значения C, H и S для всего диска.
Если этот набор параметров изменится, любой запрос отдельного сектора на основе адресации c,h,s будет указывать на другой сектор.
Поскольку вы хотите, чтобы новый диск работал на старой машине, я полагаю, вам нужно продублировать ваш диск на старой машине, используя ту же настройку CHS для обоих дисков. Более того, настройка CHS должна быть равна той, которая была установлена при извлечении вашего медленно умирающего диска.
Проблема в том, что современный live linux может не работать на вашей старой машине, а старая версия linux не будет содержать ddrescue. Но вы можете использовать dd вместо этого, ограничив его областями, которые могут быть восстановлены. Таким образом, вы не нагружаете диск и не попадете в эту поврежденную область, как показано в файле карты ddrescue.
решение2
После нескольких дней мучений я решил свою проблему следующим образом:
- Обновите BIOS материнской платы
- Уменьшите емкость нового жесткого диска с помощьюналожение дискачтобы соответствовать размеру обоих жестких дисков (из-за определенной ошибки в последней «финальной официальной» версии BIOS моей материнской платы)как объяснил пользователь 3840170)
- Сделайте копию старого образа жесткого диска на новый жесткий диск с помощью
ddrescue
(см. выше) - Восстановите MBR с помощью
fdisk /mbr
(загрузка из DOS)окна 95дискета) - Загрузите систему в режиме командной строки (нажмите F8 послеПОЧТА)
- Восстановить файловую систему с помощью
scandisk
(CHKDSK не может)
Что НЕ сработало:
- Исправлена MBR (главная загрузочная запись) с помощью специальных инструментов, таких какМенеджер разделов Ranish
- Исправлены значения CHS (цилиндр, головка и сектор) в BIOS
- Исправлено определение режима жесткого диска в BIOS (LBA/large/CHS)
- Переустановите системный файл,
sys c:
как предложеноРуководство по TestDisk(стр. 35) - Доверие к надежности дискет в 2022 году
Спасибо всем вам и ребятам из retrocomputing.stackexchange.com