🔰

BIOS/CMSブートができないUEFI環境でFreeDOSとHDAT2を使う

2024/04/18に公開

へぇ、内部のドライブをパススルーできるんや...せや!

過去に、不良セクタを代替処理させようと思ったら、昨今のPC(MB)ではCMSモードでのブートがふさがれている場合があり、ネイティブでFreeDOSを使う手段などを見つけることができませんでした。
だらだらとネットサーフィンしてたら次の記事を見つけてこれはワンチャンいけるのではと思ったら行けたので共有します。
https://qiita.com/hiro20180901/items/8b0a0363d9870abe0d88

Hyper-VからFreeDOSを起動して、内部のストレージをパススルーしてHDATに渡す

Hyper-Vでは第1世代として、BIOSモードでブートできるので、その状態でFreeDOSを起動してからパススルーで内部のストレージを渡してあげます。

手順

私の場合は、外付けストレージからWindowsをブートして内部のSATA接続されているHDDを触りに行きましたが、Windowsを起動した状態でUSBドライブにHDDを接続してもいけるかもしれません。
まず、FreeDOSとHDATをHyper-Vから動かせるように、VHDXを作成して書き込みます。
VHDXをアタッチしていればRufusから書き込めるので、通常のブートUSBを作成する手順で書き込みます。

  1. Winマークを右クリックしてディスクの管理を開きます。
  2. ディスクの管理からVHDXを作成します。
  3. FreeDOSなので容量は20MBぐらいあれば多分大丈夫。(10MBで作ったら絶妙に足りなかった)
  4. VHDXを作成した後、勝手にマウントされるので初期化します(とりあえずMBRで)
  5. 自分の場合は読み取り専用でマウントされてたので、一度VHD切断をしてから再度マウントします。
  6. RufusとHdat2をダウンロードして、VHDXに書き込みます。
    https://rufus.ie/ja/
    https://www.hdat2.com/
  7. マウントされてるVHDXにそのままぶっこんでください
  8. Hyper-Vで仮想マシンを作成します
    名前とかは何でもいい

    後で変更できますが、第1世代で作成してください

    メモリも1GBあれば十分です

    ネットワークに接続しないのでそのまま

    先ほど作成したVHDXを選択します

    完了
  9. 諸々設定を修正します
    右クリックから設定へ

    いろいろとめんどくさいのでチェックポイントは切ります

    また、ディスクの管理からvhd切断をしておいてください。起動時に衝突してこけます
  10. 起動確認
    問題なさそう

    HDAT2実行

    問題なし
  11. 物理HDDを仮想環境内にマウントする
    設定からIDEコントローラを追加

    下にある物理ハードディスクを選択してください(今回は用意してないので空)
    また、ここで選択するにはディスクの管理から、マウントしたいストレージをオフラインにする必要があります
  12. HDAT2を起動して物理ディスクを触る
    Virtual HD表記になるので、要領で判断してください(今回はマウントしていない)

終わり

Discussion