SSDにもWindowsXP移植の儀(パーティションアライメント調整、OS移植、MBR修正)
今回の移植対象は東芝HG2コントローラのSSDであるところのIODATA SSDN-ST64Bである。当分はWindowsXPなので、Trimとかやらなくてもいいやつにした‥‥。
注意(2012/9追記)
どうも下記手順で指定がおかしいようなのですが( 4.の(「Please specify starting offset (in sectors): 」は1024を入れるのところ2048が正解っぽい)追試する環境がないので確定できません。なんだか怪しそうな場合2048を指定してください
パーティションアライメント修正
さて、WindowsXPでSSDを使う場合、パーティションアライメントの修正だか調整をやらねばならぬらしい。詳しい理屈については割愛する。東芝コントローラでもやった方がいいっぽい。
やり方は、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セクタとする。
- SSDをマシンに接続する
- diskpar.exeをhttps://kb.wisc.edu/images/group14/4556/diskpar.exeから取ってきて、適当な場所に置く
- コマンドプロンプトから「diskpar.exe -i ドライブ番号」のようにして、SSDのドライブ番号を確認する。ドライブ番号は「ディスクの管理」で表示されるものと同じになる
- 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の値
- 「ディスクの管理」からSSDの領域をクイックフォーマットする
- 「diskpar -i ドライブ番号」で、作成したパーティションが以下のようになっていることを確認
- StatringOffset = 1048576
- HiddenSectors = 2048
OS(WindowsXP)の移植
- WindowsXP移植の儀 2010年版を参照のこと。
挫折
BIOSからSSDをブート領域に選んで実行だ! と思いきや、画面左上でカーソルが点滅してるだけで進まない。HDDを同じようなことやってるのに何がいけないのか。やっぱパーティションアライメントいじるのが影響してるのか。
とにかく、典型的なブート失敗ケースである。
MBR修復
- 元のHDDで起動する
- TestDiskの使い方を見て、TestDisk DownloadからWindows版をダウンロードする。
- 展開したファイルフォルダの「win\testdisk_win.exe」を実行する。最初のログの問い合わせはどれでもいい
- SSDのドライブを選び、次に[Intel]を選ぶ
- メニューから[MBR Code]を選び問い合わせにはYを入力
- 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