SSDにもWindowsXP移植の儀(パーティションアライメント調整、OS移植、MBR修正)

今回の移植対象は東芝HG2コントローラのSSDであるところのIODATA SSDN-ST64Bである。当分はWindowsXPなので、Trimとかやらなくてもいいやつにした‥‥。

注意(2012/9追記)

どうも下記手順で指定がおかしいようなのですが( 4.の(「Please specify starting offset (in sectors): 」は1024を入れるのところ2048が正解っぽい)追試する環境がないので確定できません。なんだか怪しそうな場合2048を指定してください

パーティションアライメント修正

さて、WindowsXPSSDを使う場合、パーティションアライメントの修正だか調整をやらねばならぬらしい。詳しい理屈については割愛する。東芝コントローラでもやった方がいいっぽい
やり方は、SSDとパーティションアラインメントとリンク先のPartition alignment importance under Windows XP (32-bit and 64-bit)..why it helps with stuttering and increases drive working life.を参照する。なお、ここではSSDの内容は保持しない(破壊する)ものとする。また、Windows Vista, Windows 7に合わせてオフセットを1024セクタとする。

  1. SSDをマシンに接続する
  2. diskpar.exeをhttps://kb.wisc.edu/images/group14/4556/diskpar.exeから取ってきて、適当な場所に置く
  3. コマンドプロンプトから「diskpar.exe -i ドライブ番号」のようにして、SSDのドライブ番号を確認する。ドライブ番号は「ディスクの管理」で表示されるものと同じになる
  4. Partition alignment importance under Windows XPの「PREPARING AN ALIGNED PARTITION ON THE SSD」から始まるコマンドを入れて行く。この操作は破壊的なので、既存のドライブにやらないように気を付ける
    • 「diskpar -s ドライブ番号」で開始、確認にはyで進む
    • 「Please specify starting offset (in sectors): 」は1024を入れる(Vista, 7の既定値:1024セクタ)
    • 「Please specify partition length (in MB) (Max = xxx): 」はMAXの値
  5. 「ディスクの管理」からSSDの領域をクイックフォーマットする
  6. 「diskpar -i ドライブ番号」で、作成したパーティションが以下のようになっていることを確認
    • StatringOffset = 1048576
    • HiddenSectors = 2048

OS(WindowsXP)の移植

挫折

BIOSからSSDをブート領域に選んで実行だ! と思いきや、画面左上でカーソルが点滅してるだけで進まない。HDDを同じようなことやってるのに何がいけないのか。やっぱパーティションアライメントいじるのが影響してるのか。
とにかく、典型的なブート失敗ケースである。

MBR修復

  1. 元のHDDで起動する
  2. TestDiskの使い方を見て、TestDisk DownloadからWindows版をダウンロードする。
  3. 展開したファイルフォルダの「win\testdisk_win.exe」を実行する。最初のログの問い合わせはどれでもいい
  4. SSDのドライブを選び、次に[Intel]を選ぶ
  5. メニューから[MBR Code]を選び問い合わせにはYを入力
  6. OS再起動

これでようやっとWindowsXPが上がった。やれやれ。てか、TestDiskすげーツールだぜ。
MBR修正しなければ行けなかった理由はよくわからない。一番最初に、SSDの全領域をパーティション切ってクイックフォーマットしとけばよかったのかもしれない。

参考

たぶんこれでいいんじゃないかと思う作業結果

---- Drive 0 Geometry Infomation ----
Cylinders = 7783
TracksPerCylinder = 255
SectorsPerTrack = 63
BytesPerSector = 512
DiskSize = 64017354240 (Bytes) = 61051 (MB)

---- Drive Partition 0 Infomation ----
StatringOffset = 1048576
PartitionLength = 64015564800
HiddenSectors = 2048
PartitionNumber = 1
PartitionType = 7