Windows Vistaを復活させた話
前話
2009年から使っていた私物のノートパソコンが,2016年に,無線LANが不調になった.のちに ハードディスクから異音がするようになった.ハードディスクの寿命は普段使い程度のもので保証期間が2から3年の製品が多い. 7年も使っていればハードディスクが不調になるのも当然である.処理能力の向上もあって新たなパソコンを 購入し普段使いとしたが,しばらくして旧式のゲームが動作不良であることに気づいた.原因は旧式ゲームが 古いライブラリに依存しているため.旧製品で生で動作した方が合うのである.
その乗り換えパソコンもまた乗り換えるこの頃,ふとドライブ乗り換えをやってみようと思ったところ, 様々躓きののち起動に成功したので記すことにする.
ドライブの移動
元のパソコンは中央処理装置,いわゆるCPUにIntelのCore 2 Duoを, 補助記憶装置には約320GBのハードディスクを搭載したノートパソコンである.
補助記憶装置の載せ替えにあたり,まず気にしたのは物理的規格である. 裏蓋を開け確認したところ,物理的規格は2.5インチ SATA ハードディスクドライブ(HDD)であった. 秋葉原に時々行く友人に頼み,2.5インチ SATA ソリッドステートドライブ(SSD)を購入してもらった. 購入したSSDを受け取り,載せ替えた.もともとあったHDDはどうしたかというと, 2.5インチ用ハードディスクケースにつなぐことでUSB ハードディスクとして使えるようにした. とはいえ異音がする状態のハードディスクであるから,ほぼ使えないのである. データを消去せずに取っておいたのがのちに幸運であった.
データの移動
補助記憶装置を物理的に交換するだけでは中身は移行されない.移行させるには手動で複製が必要である. しかしながら簡単なファイルの複製(コピー)だけではシステムは動作できない. また,320GBのハードディスクから240GBのSSDへの以降ではすべてのデータは複製できない. 今回はおおもとの領域構成(カタカナ語でパーティション構成)の関係でなんとかなった.
データの移行作業に当たり、Ubuntu のインストール用USBフラッシュメモリを使用した. Ubuntuは基本ソフトウェア(OS)の一つであり、無保証ながらも無料で使用できる. インストール用USBフラッシュメモリの作成方法は略する.
Ubuntu インストール用USBフラッシュメモリを挿し,USBメモリからの起動を試みた. 上手くいけば紫色の画面になり,そこで何か鍵盤(キー)入力をすることで 試用するかインストールするかその他の操作をするかを選ぶメニュー画面に行くことができる. 「試用する」を選び,一時的なLinux環境を得た.
Ubuntuの試用環境には,Gparted というパーティション編集ソフトウェアがある. これを用いてパーティション構成とLinux上でのドライブのパスとを得る. 結果は表1のとおり.
linux上のデバイス名 | ファイルシステム | 大きさ | 属性 | 備考 |
---|---|---|---|---|
/dev/sdc1 | ntfs | 1.00 GiB | diag | 何用のドライブか不明. |
/dev/sdc2 | ntfs | 100.00 GiB | boot | システムドライブのはず. |
/dev/sdc3 | ntfs | 181.08 GiB | データ用に使用していたはず. | |
/dev/sdc4 | ntfs | 16.00 GiB | diag | おそらく回復用パーティション |
データ用パーティションから必要なデータはほぼすべて別のハードディスクに移行させていたはずなので,これは複製しないことにする. これをもとにSSDにパーティションを表2のように作っていく.
linux上のデバイス名 | ファイルシステム | 大きさ | 属性 | 備考 |
---|---|---|---|---|
/dev/sda1 | ntfs | 1.00GiB (1,024MiB) | diag | |
/dev/sda2 | ntfs | 100.00GiB (102,400MiB) | boot | システムドライブにする. |
/dev/sda3 | ntfs | 16.00GiB (16,384MiB) | diag | ※2参照 |
linux には,ddというファイルを複製したり変換したりするコマンドがある.これを用いてデータを複製する. 1GBのパーティションをコピーするコマンドはコード1である.
コード1と同様にして,16GiBの回復用領域を複製しようとしたが失敗した. 結果をコード2に示す.
16GiBの領域に対して16GiBの領域を作って複製したから問題はないと思っていたが,どうも 大きさが違うようである.改めてGpartedを開き,パーティションを選んで右クリックから「情報」を見ると, 元の領域は 16,385 MiBであった.複製先の領域は 16,384 MiBで作成したため領域が足りないと怒られたわけだ.
ならば複製先のパーティションの大きさを変更する指示を出せばよいと考え,Gpartedに指示をしたがどうもうまくいかない. NTFS のサイズ変更に失敗する.複製先のパーティションは使えないデータになってしまっているのだから,消去して,改めて 再作成することにした.
このことに気が付いたのは,コード3の実行中であった. コード3実行時はハードディスクのエラーなどが起きたために何回か同じコマンドをやり直している. 成功例のみ示す.
100 GiB の複製には100分かかると思っていたが,一時間弱で済んでびっくりした. この複製が終わってから,複製先の第3領域を 16,385 MiBで再作成し,コード4を実行した.
記事を書きながら振り返ると,コード2とコード4 は4MiB の差異,レコード数が全然違う.総複製容量はブロックサイズ × レコード数 であり, bsパラメータを指定したことでレコード数が減っただけに過ぎない.4MiB の差異は理由不明.
データを移したことで動作する…はずであったが,実際には正しく動作しなかった. 記事が長くなってきたので一区切りとする.
BCDの修復
データをそっくりそのまま移せば動作すると思い,Ubuntuのインストール用USBメモリを抜いて 電源を入れると,以下のような画面になった.
ここからは細かい話が続くが,興味のある方はお付き合いください.
当該ノートパソコンは,起動情報セクタから起動する,従来のBIOSである. BIOSは,補助記憶装置のマスターブートレコード (MBR)と呼ばれる領域から,プログラムを読み込み実行する. MBRの大きさは小さいため,「OSを読み込むプログラム」を読み込むプログラムに なっていることが多い.Windowsブートマネージャが動作しているということから,MBR 領域は正常に動いていると推測した.
Windowsにはセーフモードという起動モードがあるが,それにも到達していないことから,起動ができない. インターネットで調べてみたところ,正常に起動するWindows上でbcdeditというコマンドを 動かさないといけないらしい.内蔵済みSSDを取り外すのは面倒である.さらに調べたところ, Windowsのインストールメディアから修復用コマンドプロンプトを起動することでも使えそうであった. たまたまWindows 8のインストールディスクがあったので,一か八か,試してみることにした.
OSのインストール開始画面にて、「今すぐインストール」を押さず, 「コンピュータの修復」,「トラブルシューティング」,「詳細オプション」,「コマンドプロンプト」の順に つつくと,コマンドプロンプトが起動する.
bootrec /RebuildBcdと入力することで,BCD情報を再生成できた. bootrecコマンドの詳細は,bootrec /?と入力することで確認できる.