orz記録

おうちとかいしゃのシステム技術のことを中心に書いていこうと思っています。

2011/07/24 01:28 lubuntu11.04のFirefox5にJavaプラグインをインストール

えーと、基本的に下のサイトの通りにやれば大丈夫です(笑)。
http://d.hatena.ne.jp/portgus/20100403/1270262830

ただ、ソレガシはJavaのインストール先は
/opt/jre1.6.0_26/lib/i386
ディレクトリでしたがね。

2011/07/04 00:31 【P2V】uEFI+GPTディスクにインストールしたWindowsをvSphere上に移行する(現在進行形)

久々にガチで技術ネタ。普通の人は読まなくて良いよ。VMとか基板系のエンジニア以外には分からんと思うので。
作業備忘録として書く。

あるお客様からの依頼。状況とかは以下のとおり。
1.IBMのハード(最近はuEFIなんだよね)にインストールしたWindows2008をvSphere4(ESX4.1)に移行したい。
2.インストールはuEFI+GPTディスク形式にインストールした。←これはあとで判明。
3.しかしながら、ディスクは1TB未満である。
4.パーティション構成は最初に200MBのMS予約領域、その後C,E,F,Gドライブ。すべてシンプルボリューム。
5.VMwareConverter(4.3)を利用して移行しようとしたが、移行するディスクがツールから見えない状態で、以降ができなかった。
6.なんとか移行したい。再インストールとかは避けたい。

うーむ。こいつは参った。困った。

まずもって、vSphere4のBIOSは当然EFIではないので、GPTのパーティションは解釈できない。
ので、おそらく(多分確実に)MBR形式に変換する必要がある。

おそらく5.のディスクが見えなかったというのは、VMwareConverterにはGPTディスクのパーティションテーブルが解釈できなかったので、ディスクを見つけることができなかったのではないかと想像。

こちとら、SIerなもんで責任をできるだけ回避しなければいけない立場からすると、「ツールでできないなら無理です」とヒトコト言えば済むのかもしれませんが、そんなこと言いたくなかったので、「完全に安全とは言えませんが、こうすればできます」ということくらいは言えるようになっておこうと思ったので、奮闘中。

以下のようにすればイケるのではないかと考え、実行中。
1.ディスクイメージをぶっこぬく
2.ぶっこぬいたディスクイメージをMBR形式に変換
3.Windows2008のインストールディスクを使って、ブート領域を修復。

うち、1は終了。2はだいたい検証終了。3もだいたい検証終了。
検証といっても、こっちはuEFIの環境を持っていないので、VMを利用してのかなーり怪しい検証だが。ま、やらないよりはマシだろう。

1.ディスクイメージをぶっこぬく
選択肢は限られる。
KNOPIXでdd→今回はやめといた。Windowsだし。
Disk2vhdでVHD形式に変換→さらにツールでVMDK形式に再変換→いけそう。即実行。→いけた。
Disk2vhdはMS謹製のSysinternalスイート。問題なし。ディスク領域を確保することのほうが大変だった。
VHD形式→VMDK変換はフリーのツールを探した。あった。
NHCというツールとStarWindというツールの2種類を見つけた。
今回はStarWindを選択。参考URLは以下。VMDKまではいけた。
http://www.starwindsoftware.com/
変換するときに、出力先がネットワークドライブだとダメみたい。つまり、NASが使えないっぽい。注意。

ぶっこぬき、イメージ変換が完了したら、それをESXのオブジェクトブラウザでアップロードしておく。
.vmdkと.vmdk-flatの2つの両方共アップロードしておくこと。アップロードが完了すると、.vmdkファイルしか見えなくなり、.vmdkファイルがvmdk-flatファイルの容量で見えるようになる。仕様らしい。

2.ぶっこぬいたディスクイメージをMBR形式に変換
今回の山場(と思う)。環境準備に結構手間がかかる。
GPartedとgdisk(0.7.1以降)がインストールされたLinuxでディスクを弄る。

GPartedはntfsprogsをインストールしておくこと。
gdiskはGPT fdiskのこと。参照URLは以下。
http://www.rodsbooks.com/gdisk/

上記の両方を満たすLinuxは、RHELだと6以降にしないと環境を整えるのがめっちゃ面倒。
フリーで行くなら、Scientific Linuxの一択じゃないかと。今のところね。

大まかな流れとして、は以下のとおり。
1.GPartedを使用して、各パーティションのサイズを少しずつ縮める
2.gdiskを使用してGPTディスク→MBRディスクに変換
3.GPartedを使用して縮めちゃったディスクサイズを再び拡張
4.最後にfdiskを使って、MBRのパーティションテーブルの順序を必要に応じて整列しなおす

1.が必要なのは、
MBR形式ディスクの場合4つ以上のパーティション存在させるためには拡張パーティションを作成する必要があり、その拡張パーティションを定義するEBRはディスクの途中に作成する必要があるため、縮めないとEBRが作成できない。だから。
ちなみに、GPT形式のディスクはパーティション情報はディスクの先頭に持っているから、パーティションの隙間にEBR書き込み用の領域なんて存在しない。

2.をやるときには、4つ目のパーティション以降をLogicalPrtitionにする。あと、gdiskのバージョンが0.7.1以降でないとGPT→MBRに変換するときのプライマリパーティションと拡張パーティションの個別指定ができないっぽい。むー。

3.をやるときには、シリンダ境界で丸める必要がありそう。シリンダ境界で丸めないとディスクをWindowsに再びくっつけてサーバマネージャの記憶域を表示したときにCPU使用率が100%になって暴走気味になってしまったことから。
おそらくWindowsで使用するディスクの場合、シリンダ境界規定に則ってMBRとEBRにダミー値を書きこんでいるようで、ディスクを認識するときにも、そうであることを暗に求めているような気がする。そうでない場合Windowsが混乱することがありそう。
多分実際のディスクの境界自体はそんなふうにはなっていないくても良くて、今のディスクはLBAでアドレス認識するんだから、MBR及びEBRにはダミー値だけを書いておけば良いと思うんだけれど、GPartedはそこらへんは真っ正直に正確な値を書いているっぽく感じるので。ま、ダンプ取って確かめりゃいいんだけれどそこは時間とコストとのバランスをとって省略。
fdiskコマンドしてみて「シリンダ境界で終わっていません」と怒られなきゃ大丈夫かと。
さらに言うと、Linuxの場合はシリンダ境界で終わってなくても全く問題ないんだそう。参照URLは以下。
http://d.hatena.ne.jp/dai_yamashita/20110411/1302534927

4.については必要ないときは必要ないと思うんですが、変換後に/dev/sda1が拡張パーティションになっていたりすることがあるので、一応やっときます。パーティションの順序変更はfdiskコマンドを実行してから、上級者用メニューを出さないとできないので、ご注意を。あと、変更した後wコマンドで書きこむことも忘れずに。→この部分自分に対してだなー。


3.Windows2008のインストールディスクを使って、ブート領域を修復。
さてさて、MBR形式に変換したら、おそらくMBRのブートストラップローダは空だと思われる。ので、インストール用ディスクを使用してこの部分を回復する必要がある。と思う。たぶん。いや、おそらくね。
また、最初の200MBの領域(ブート領域)も消したほうがよさそうだと思う。GPT前提で作られた領域だと思うし。たぶん。
そこで、Windows2008のインストールディスクからブートして、表示される画面の左下のから修復を選択。コマンドプロンプトを選びます。
recoveryフォルダに移動して、StartRep.exe(だったと思う)を実行すると、スタートアップ修復になるので、修復が終了すれば作業は完了。たぶん。おそらく。だってやったことないんだもん。

近々、結果はレポートします。今回は駄文長くなりました。失礼。