VirtualBox、およびVHDファイルのトラブルの顛末

 さて、前回ちらりと書いたとおり、トラブルに見舞われ、そして何とか生還した。今回はその顛末をば。
 トラブル当初は気が動転して、ろくにメモもとらず(こんなに長引くと思ってなかったし…)いじくったので、経緯は余り正確じゃないかもしれない。それでも何かの参考になればと思い書き記すことにした。
 一応環境はこんな感じ↓

 ・ノートPC(Dell Latitude D410)
 ・Pentium M 1.73MHz(確か)
 ・ホストOS:WindowsXP SP3

 VirtualBoxをインストールし、VHDファイル形式で仮想ハードディスクイメージを作り、そこへLMDEをインストールして仮想環境を構築した。

 LMDEにアップデートパック4をインストールしてやろうと、アップデートマネージャを開いた。すると、あるわあるわ1000を越すパッケージがアップデートされる。こいつはすごい。そして面倒だ。
 でも、我々には、APTさんという強い味方がいるじゃないですか。( ̄ー ̄)ニヤリ
 ということで、全てAPTさんにお任せ~♪でアップデートを実行。

 さあ、ここからが泥沼の始まり。

---

1)アップデート最中に突然ブルースクリーンとなり、PCが再起動した。
 ブルースクリーンの上になにやら書いてあったが、1、2秒で落ちてしまい、当然確認できず。自動的にPCが再起動。ひとまずWindowsは立ち上がった。

2)VMが立ち上がらなくなった
 VirturalBoxを立ち上げて、仮想マシンを起動すると、すぐにエラーメッセージが出た。
 どうもVHDファイルに異常があり、アクセスできないらしい。
 エラーの詳細を見るとヘッダーが云々と書いてある…が、さっぱり分からん。とりあえずPCが落ちたときにファイルのどこかが壊れたらしい。

3)いったん諦めて、新しいVMを作成
 設定等はすべてやり直しだが仕方あるまい。アホみたいな話だが、再度LMDEをインストールした。とりあえず上手いことインストールは済んだ。
 新VMで改めてアップデートパック4を適用してみた。なかなか終わらず。終ったと思ったらかなりのパッケージがアップデートされずに残ってる。多分2/3くらいは残ってたかな。どうも依存関係を解消できないらしいので、今度は少しずつ、コマンドラインからapt-getでアップデートを試みた。APTさん、なにやってはるんですか(´;ω;`)…と思いつつ、-fオプションなんかで強制的に上書きしたりして進めてみた。

4)よく覚えてないけど異常終了した
 この辺は記憶が非常に曖昧なのだけど、仮想マシンが異常終了したか、どこかおかしくなって自主的に再起動したか、もしかしたら夜遅くなってしまったので途中で一旦中断したのかもしれない。
 まあその辺はとりあえず置いとく。その結果起こったことが重要なのだ。

 何が起こったのかというと、それ以後VirtualBoxマネージャを立ち上げると、すぐにVirtualBoxマネージャ自体が異常終了してしまい、VMを立ち上げることすらできなくなってしまったのであるorz
 エラーの詳細を見ると、qtcooreだかそんなような名前のdllがエラーシグナルを発しているか、もしくはそれ自体がエラーの原因になっているような感じ。さらにダンプを見てみるが、当然何のことやら分からず。時間の無駄なのですぐ閉じる。さて、どうしたものか(´・ω・`)

5)しばらく苦しむ
 まずはVirtualBoxが立ち上がるようにしないと、ということで、システムの復元や、VirtualBoxの再インストール、ダウングレードしたりアップグレードしたりしたが駄目。
 この時点でやる気は相当うせてる(;´Д`)
 当然ブログのアップデートも滞る。このもがいてる期間が最も長かった。あーもう思い出したくもない。

6)ついにVirturalBoxマネージャ復活
 またあてども無く、VirtualBoxを一旦アンインストールしてみた。するとアンインストールしてもC:\Program Files\Oracle\VirtualBoxフォルダがまだ残っているのに気づいた。
 そこで、元のVirtualBoxフォルダを別名に変えておいて、再度インストールしたら、VirtualBoxフォルダが新たに作成された。
 そしてVirtualBoxを立ち上げてみると…

 キタ━━━━━━━━m9( ゚∀゚)━━━━━━━━!!
 VirtualBoxマネージャ見事復活(´;ω;`)

 具体的にどこがどう悪かったのか分からないけど、インストール/アンインストールの繰り返しやシステムの復元によって余計なものが作られたり残ったままだったりしたせいと思われる。

7)VHDファイルの修復
 ネットで調べたら、VHDファイルの修復方法を見つけたので試してみることにした。

 1.Microsoftの"Virtual Server 2005 R2 SP1"のインストーラをダウンロード
 2.インストーラ起動→カスタムインストールを選択しVHDmountのみをインストール
 3.ディスク修復ツール"TestDisk"をダウンロード(インストール不要)
 4.VHDmountを起動して、件のVHDをマウント
 5.TestDiskを起動して、マウントしたVHDを選択し、"analyze"を実行

 "analyze”をすると、しばらくしてVHD内のパーティションのリストが表示され、さらに"STOP"の表示が出て…そのまま止まってしまった。キーボードやマウスで何を押しても反応しない。うーん、これは大丈夫なんであろうか…(;・∀・)
 夜遅くなってしまい、眠くてしょうがないのでこの日は一旦作業打ち切り。ノートPCはそのまま放置して寝てしまった。

 翌日ノートをあけると立ち上がらない。しょうがないのでリセットして立ち上げた。
 VirtualBoxマネージャを立ち上げて、試しに「仮想マシンメニュー」→「追加」を実行し、件のVHDファイルを用いた仮想マシンを追加してみた。するとuuidが合わないというエラーメッセージが。
仮想マシン"C:/home/VirtualBox VMs/vmLMDE201109/vmLMDE201109.vbox"を開けませんでした。

Trying to open a VM config 'C:/home/VirtualBox VMs/vmLMDE201109/vmLMDE201109.vbox' which has the same UUID as an existing virtual machine.

終了コード : E_FAIL (0x80004005)
コンポーネント: Machine
インターフェース: IMachine {5eaa9319-62fc-4b0a-843c-0cb1940f8a91}
呼び出し先: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

 手っ取り早くVHDファイルが直ってるのか確かめたかったのでVirtualBoxで新たに仮想マシンを作成し、件のVHDを指定したところ、問題なく仮想マシンの作成はできた。
 これは期待できるかも…wktkしながら仮想マシンを立ち上げると…

 キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─!!
 
 ばっちり立ち上がった。イマイチ納得いかないけど、どうやら修復できたみたい。ま、結果オーライということで(;^ω^)

8)uuidの修正
 uuidの修正を行うため、VBoxManage.exeを使う。コマンドプロンプトを立ち上げてコマンド入力。書式はこんな感じ。
> VBoxManage internalcommands sethduuid "filename" "newUUID"
 "filename"は対象となる仮想ディスクファイルを指定する。
 "newUUID"には、怒られたときに表示された、
インターフェース: IMachine {5eaa9319-62fc-4b0a-843c-0cb1940f8a91}
 を指定してみた(下線部)。

 実行するとエラーも出ず、すんなりUUIDを変更した旨のメッセージが表示。再度仮想マシンの追加を行ったら見事追加成功v( ̄Д ̄)v イエイ
 そこで喜び勇んで起動すると…またエラーががががorz
仮想マシン"vmLMDE201109"のセッションを開けませんでした。
No error info.

終了コード : E_FAIL (0x80004005)
コンポーネント: ProgressProxy
インターフェース: IProgress {c20238e4-3221-4d3f-8891-81ce92d9f913}

 ためしに仮想マシンに割り当てられている仮想HDDを一旦割り当て解除し、再度割り当てしなおしてみたが結果は同じ。
 バルーンメッセージが表示されるので見てみると、「C:\home\.VirtualBox\VirtualBox.xmlに登録されているuuidとアンマッチだよ~ん」ってな記述があったので試しに当該ファイルを開いてみた。

 すると、こんな記述があった。
<MachineRegistry>
<MachineEntry uuid="{ba32741b-d7e0-42e4-b30d-b421d183ff84}" src="C:/home/VirtualBox VMs/LMDE/LMDE.vbox"/>
</MachineRegistry>
 どうやらこいつだな。

 再度VBoxManageでuuidを書き換えしてまた起動…でもやっぱり駄目orz…よくよく見たら、このuuid、仮想マシンのじゃん。(;^ω^)

 うーん、してみるとuuidはどれにしたらいいのだろうか。
 そこで今度は、エラー時のバルーンメッセージに表示されたアンマッチだというuuidをメモって、そいつで再度VHDファイルのuuidを変更を試みた。
 一応VirtualBoxマネージャを一旦終了して再度立ち上げし、起動をポチっとな…

 キタキタキタキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!
 仮想マシン起動。いつもどおりブートプロセスを経てLMDEが立ち上がった。ついに復活である。
 (´;ω;`)よかったよお~

---
 
 仮想マシンはその後何事も無かったかのように普通に使えている。
 アップデートパックを適用するのはやめにした。もうこりごりだ、というのが正直なところ。
 考えてみれば今月中に新しいバージョンのLMDEも出るし、どうしても必要な(動作に支障をきたすような)アップデート以外はやめておいた方が無難かな。
 なんて書いてるうちにLMDE新版201204リリースされました(;^ω^)(Linux Mint Debian 201204 released!

 とりあえずVHDファイルのバックアップは取っておいたほうがいいね。というのが今回の教訓。
 何故ブルースクリーンになって落ちたのかは分からないけど、ディスクのフラグメンテーションが何かしら関係している気がする(全く根拠はない)。ということでデフラグも小まめにやった方がいいね。

 こうして書いてみると思ったより長文になっちゃったなあ。そして、結構バカを晒してしまってる気がする。
 ま、こういう失敗までも晒す記事って逆に少ないからかえって参考になるかもしれない。つまり世の為人の為、あえてバカをやっているのだ。ってそんな訳ないっつーの。
 凡人以下だから要らぬトラブルを呼び込むんじゃ。まだまだ修行が足りんのう(´・ω・`)

---

 VHDファイルの修復にあたっては、以下のページを参考にしました。ありがとうございます。

 VHDファイル修復への道 | Arugoworksの開発日記
 http://www.arugoworks.net/blog/?p=283

 おかのへ  VHDMount正式版
 http://o2studio.blog81.fc2.com/blog-entry-189.html

 数学ハカセの憂鬱: VirtualBox 仮想ディスクの修復方法
 http://blog.cane.jp/article/33157177.html

この記事へのコメント


この記事へのトラックバック