如何在逐位元組硬碟複製後再次啟動 Windows 95?

如何在逐位元組硬碟複製後再次啟動 Windows 95?

背景

我有一個非常舊的 PATA HDD (1998 Fujitsu 3.2GB),插入一台非常舊的電腦(Pentium 2 / Asus P2L97 主機板),帶有可啟動分割區(Windows 95 和 Fat32 檔案系統)。正如預期的那樣,這個硬碟死了很多聰明的警報。

我的目標不是恢復數據,而是將舊硬碟的副本複製到新硬碟(2003 PATA WD 80GB)以再次啟動。

我保存了整個舊硬碟ddrescue(從系統救援)將故障硬碟插入較新的電腦後,儲存至影像檔案(USB 磁碟機上的 rescue.img),如中所述地址救援手冊。不幸的是,當我嘗試在較新的 HDD 上恢復映像時,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

完全的救援日誌(7Mo) 和救援地圖文件

圖像檔看起來不錯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 HDD (2003 WD 80GB)

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 偵測到新 HDD
我透過減少新硬碟的容量(帶驅動器覆蓋)並再次將舊硬碟的映像複製到新硬碟來解決舊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檢測一些 CHS 不匹配Warning: number of heads/cylinder mismatches 128 (FAT) != 255 (HD)

這裡是完整的testdisk.log

拷貝後如何啟動作業系統ddrescue

編輯 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/Partition_type

描述欄位表示“具有 CHS 尋址的 FAT32”

這種分區需要使用由柱面、磁頭和扇區組成的三元組來解決。當您的磁碟安裝在 P2L97 機器中時,您的 BIOS 包含整個磁碟的最大 C、H 和 S 值的參數集。

如果該參數集發生變化,則基於 c,h,s 尋址的單一磁區的任何請求都會指向不同的磁區。

由於您希望新磁碟在舊電腦上運行,我想您需要使用兩個磁碟的相同 CHS 設定在舊電腦上複製磁碟。此外,CHS 設定應該等於移除緩慢死亡的磁碟時設定的設定。

問題是現代的 live Linux 可能無法在您的舊機器上運行,並且舊的 Linux 版本將不包含 ddrescue。但是您可以使用 dd 來代替,將其限制在可以恢復的區域。這樣您就不會對磁碟造成壓力,也不會陷入 ddrescue 地圖檔案中所示的損壞區域。

答案2

經過幾天的麻煩我解決了我的問題如下:

  1. 更新主機板BIOS
  2. 減少新硬碟的容量驅動器覆蓋以匹配兩個硬碟的大小(由於我的主機板的最新“最終官方”BIOS 版本中的特定錯誤就像用戶3840170的解釋一樣驅動器覆蓋
  3. 將舊硬碟映像複製到新硬碟ddrescue(請參閱上文)
  4. fdisk /mbr使用(從 DOS 啟動)修復 MBR視窗95軟碟)
  5. 以命令提示字元模式啟動系統(啟動後按 F8郵政
  6. 修復檔案系統用scandisk(CHKDSK不行)CHKDSK

什麼沒有奏效 :

  • 使用特定工具修復了 MBR(主開機記錄),例如拉尼什分區管理器
  • 修正了 BIOS 中的 CHS(柱面、磁頭和磁區)值
  • 修正了 BIOS 中的 HDD 模式檢測(LBA/large/CHS)
  • 重新安裝系統文件,sys c:如建議的測試盤手冊(第 35 頁)
  • 2022 年相信軟碟的穩健性

感謝你們所有人以及 Retrocomputing.stackexchange.com 的人們

相關內容