バイト単位で HDD コピーを行った後、Windows 95 で再度起動するにはどうすればよいでしょうか?

バイト単位で HDD コピーを行った後、Windows 95 で再度起動するにはどうすればよいでしょうか?

背景

私は非常に古いPATA HDD(1998年製富士通3.2GB)を、起動可能なパーティション(Windows 95とFat32ファイルシステム)が1つある非常に古いコンピュータ(Pentium 2 / Asus P2L97マザーボード)に接続しています。予想通り、このHDDは多くの頭いいアラート。

私の目標は、データを回復することではなく、古い HDD のコピーを新しい HDD (2003 PATA WD 80GB) にコピーして、再度起動できるようにすることです。

私は古いHDD全体をddrescueシステムレスキュー故障したHDDを新しいコンピュータに接続した後、イメージファイル(USBドライブのrescue.img)にコピーします。ddrescue マニュアル残念ながら、新しい 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、HDDは古いコンピューターのBIOSでも認識されません。

私の質問は、復元時にパーティション テーブルが壊れているのはなぜですか? 新しい HDD で起動するにはどうしたらいいですか? 非常に古い起動可能な Win95 3GB HDD (dd または ddrescue を使用) を「新しい」80GB HDD にコピーすると、どのような結果になるのでしょうか?

パーティション テーブルを再構築しようとしましたがtestdisk成功しませんでした。これが正しいアプローチかどうかはわかりません。さらに、testdiskHDD ヘッド/シリンダー ジオメトリの間違いについても警告します。

testdisk と MBR/パーティション テーブルの修復の方向を調べる必要がありますか、それともコピー/ddrescue の問題ですか?

編集1:
古いBIOSが新しいHDDを検出する
新しいHDDの容量を減らし(ドライブオーバーレイを使用)、古いHDDのイメージを新しいHDDに再度コピーすることで、古いBIOSが新しいHDDを検出しない問題を解決しました。

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 は存続します。

  • OSが起動しないテーブルパーティションを固定した後でもTestdisk
  • TestdiskCHSの不一致を検出Warning: number of heads/cylinder mismatches 128 (FAT) != 255 (HD)

ここ完全なtestdisk.logです

コピー後に OS を起動するにはどうすればいいですかddrescue?

編集2: 古いBIOSがWindows 95で見つかる

新しいHDDの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/パーティションタイプ

説明フィールドには「CHSアドレス指定のFAT32」と表示されます。

このパーティションは、シリンダ、ヘッド、セクターの 3 つを使用してアドレス指定する必要があります。ディスクが P2L97 マシンにマウントされたとき、BIOS にはディスク全体の最大 C、H、S 値のパラメータ セットが含まれていました。

そのパラメータ セットが変更されると、c、h、s アドレス指定に基づく個々のセクターに対する要求は、別のセクターを指すようになります。

新しいディスクを古いマシンで実行したい場合、両方のディスクに同じ CHS 設定を使用して、古いマシンのディスクを複製する必要があると思います。さらに、CHS 設定は、徐々に劣化していくディスクを取り外すときに設定された設定と同じである必要があります。

問題は、最新のライブ Linux が古いマシンでは動作しない可能性があり、古い Linux バージョンには ddrescue が含まれていないことです。ただし、回復可能な領域に制限することで、代わりに dd を使用できます。そうすれば、ディスクに負担がかからず、ddrescue マップ ファイルに示されているような損傷した領域に閉じ込められることもありません。

答え2

数日間の苦労の末、私は次のように問題を解決しました。

  1. マザーボードのBIOSを更新する
  2. 新しいHDDの容量を減らすドライブオーバーレイ両方のハードディスクのサイズを一致させるため(マザーボードの最新の「最終公式」BIOSバージョンに特定のバグがあるため)ユーザー3840170による説明のようにドライブオーバーレイ
  3. 古いHDDイメージを新しいHDDにコピーしますddrescue(上記参照)
  4. MBRを修復するfdisk /mbr(DOSから起動する)ウィンドウズ95フロッピー
  5. コマンドプロンプトモードでシステムを起動します(役職
  6. ファイルシステムを修復するscandisk(CHKDSKでは不可能)チェック

うまくいかなかったこと:

  • 特定のツールでMBR(マスターブートレコード)を修正しました。ラニッシュパーティションマネージャー
  • BIOSのCHS(シリンダー、ヘッド、セクター)値を修正
  • BIOS での HDD モード検出を修正 (LBA/large/CHS)
  • sys c:提案に従ってシステムファイルを再インストールするTestDisk マニュアル(p 35)
  • 2022年にフロッピーディスクの堅牢性を信頼する

皆さんとretrocomputing.stackexchange.comの皆さんに感謝します

関連情報