2014/01/19

USBメモリから起動するOSを仮想マシンで利用する(2)

以前、USBメモリから起動するOSを仮想マシンで利用する(1)という記事を書いたが、その時にもう一つ記事を書こうとして(1)をつけたまますっかり忘れてしまっていた。

そのままというのも何なので、2年越しになってしまったが(2)として書くつもりだったことについて記載したい。

先に紹介した Plop Boot Manager だが、そのままだと毎回GUIがでてきて、USBを選択しないと起動しないのでちと面倒だ。省力化できないか?という実はこれができるのだ。

まず、Plop Boot Manager の動作はカスタマイズが可能になっている。その本体の plopbt.bin というファイルを直接編集し、動作が変わるようになっているのだ。

カスタマイズ用のツールは Plop Boot Manager のダウンロードファイルの中に含まれている。Linux 用と Windows 用があるが、ここでは手軽な Windows 用で説明する。

ダウンロードファイルを展開すると、Windowsというフォルダがあるのでこれを開く


そこには、plpcfgbt というCLIのコマンドと、plpcfgbtGUI という GUIツールがある。
より便利な plpcfgbtGUI を実行する。


なお、plpcfgbtGUI は .NET Framework 3.5 を使用している。Windows XP や Windows8 の場合 .NET Framework 3.5 をインストールする必要がある。

Windows8 の場合、.NET Framework が足りないとその場で
ダウンロードを提案してくれるので便利だ
起動すると下の画面になる。まずは、カスタマイズする plpbt.bin を読み込む。
単に「Open」のボタンを押せば plpcfgbtGUI と同じフォルダにある plpbt.bin が読み込まれる。他のフォルダにあるものを編集したい場合は「...」ボタンを押してパスを指定する。


開くと、下のカスタマイズ項目が利用可能になる。
ぱっと見ての通りなので説明の必要はないと思われる。
ここで編集するのは「Countdown」 をチェックし、「Countdown value」を適宜指定すること、それから 「Default boot」をUSBに指定すること、だ。

Default Boot を指定するとそのデバイスから自動起動するようになる。ただし DefaultBoot を指定するには同時に「Countdown」を有効にしなくてはならない。
Countdown value 秒だけ待機後、Default Boot で指定されたデバイスで起動する。
Countdown value に1を指定すればほぼ即座に起動に入るが、USBメモリを差し込んだり、仮想マシン側に割り当てる事を考えると10秒程度の待ち時間はつけておいた方が賢明だ。


設定が終わったら、「Configure」 を押す。すると、以下のパネルが出て設定の書き込みが行われたことがわかる。書き込まれたら、Quitを押して終了する。


この plpboot.bin から Bootable CD の ISOイメージを作成するのだが、これもツールが用意されている。Plop Boot Manager のダウンロードサイトの「Tools」にある plpbt-createiso.zip がそれだ。


zip ファイルを展開すると、mkisofs コマンドと、Linux / Windows用のバッチファイルがある。


先に作成した plpboot.bin をこの plpbt-createiso を展開したフォルダにコピーする


そして、「create-iso」という名称で歯車のアイコンがついたバッチファイルをダブルクリックして実行する。


実行が完了すると、plpbtmycd.iso という ISOイメージファイルができているので、これを適宜 ファイル名を変更し、適切な場所にコピーして、仮想マシンの起動に用いるといい。


起動すると、こんな感じでカウントダウンと、デフォルトブートデバイスが指定された状態になる。

なお、作成した USBで自動起動する ISOイメージだが、先日取得した BOXのアカウントにて公開しておいた。
https://app.box.com/s/a3ywn1pb17hz2o24eukk


2014/01/08

[余談] CentOS 6.x で Oracle のインストーラで文字化けをさせず日本語でインストールする

新年早々ではあるが、昔の書きかけをずっとほったらかしていたのを世に出しておく。
仮想化と何の関係があるか?と言われると意外とある Oracle DBのインストールについてだが...。以下本文。


vCenterServer や View と付き合ってるとどうしてもリレーショナルデータベース(RDBMS)とのつきあいが深くなる。

ここ1年以上、5 Host / 50VM を越える場合は Oracle を使っている。特に vCenterServer での利用ではコスト面で10倍近くの差がある。意外に思われるかも知れないが、CPUライセンスでなければならない MS SQL Server Standard より、Named User が通る Oracle Standard One の方が大幅に安すくなるのだ。

さて、あらたに環境を作るに当たって、久方ぶりに Oracle を新規インストールしようとしたところで大きくハマってしまった。

事の元凶は CentOS 6 を使ってしまったこと。これまでは Oracle Linux か CentOS 5.x を利用していたが、後者は普通にインストールするとあまりに余計なもの、例えば X Window Server 、をインストールしてしまうので少々閉口していたのだ。

CentOS 6 はそうした余計なものをインストールしない、なんせ Perl すらデフォルトでは入らない、という事に好感を持っていた。

そのせいでついうっかりと CentOS 6 のテンプレートをデプロイしてそこに Oracle を突っ込もうとしたのだが...、甘かった。
いくつかあるのだが、一つ目はパッケージ名の問題。Oracle Linux や CentOS 5 で必要としてたRPMと名前が異なるため、一々確認と yum  install のし直しが起こってしまった。

Oracle Linux 6 ではどうしているのか気になってみてみたら、どうも "専用のRPM"を用意して対処してしまった模様。この専用RPM、RHEL互換なら Oracle Linux でなくても突っ込めそうな感じだが、さすがに CentOS6 にこのRPMを入れるのは気が引けたので、地道に調べることとなった。(しかし、pdksh をいまさら ksh に変更するのは勘弁して欲しかった...。)


パッケージは地道に調べれば何とかなる。しかし、それだけではうまくいかい。
そう、CentOS 6 の日本語フォントを入れてもインストーラが文字化けする(下図)

Oracle のインストーラは Java を使っているが、Linux の場合、X Window System を必要とする。Mac の XQuartz とか、Xming など Windows でのディスプレイサーバを使うことはできるが、XLib など Xの基本システム一式は Oracle をインストールする Linux にインストールしておく必要がある。

RHEL5互換のOSの場合、それだけで日本語インストーラががちゃんと立ち上がったのだが、RHEL6互換の CentOSでは、Xの日本語フォントをちゃんと入れても文字が豆腐になるのだ。

これは、JRE で定義されているフォントと実際のフォントがあってないとこういうことが起こっているためだ。一般的な対処は、JRE の持つ定義ファイルを書き換えることなのだが、Oracle のインストーラはJREを自前で抱えており、インストーラ起動時に JRE (正確にはJDK)を展開し起動前に差し替える手が存在しない。

色々あまり言えない手を使って調べたところ、Oracle のインストーラの抱えるJREは RHEL互換環境ではさざなみフォント(kochi-*-subst)があることを仮定している。RHEL6 系統は VLフォントとIPAフォントはあるが、さざなみフォントが入っていない。

そこで、IPAフォントをさざなみフォントに誤認させることで対処を行った。
ざっくり言うと、手順は以下の通り。


  1. ipa-gothic, ipa-mincho の RPM をインストールしておく
  2. cd /usr/share/fonts ;  mkdir -p ja/TrueType を実行し「/usr/share/fonts/ja/TrueType/」ディレクトリを作っておく
  3. cd /usr/share/fonts/ja/TrueType ; ln -s ../../ipa-gothic/ipag.ttf ./kochi-gothic-subst.ttf を実行
  4. cd /usr/share/fonts/ja/TrueType ; ln -s ../../ipa-mincho/ipam.ttf ./kochi-mincho-subst.ttf を実行
  5. runInstaller を実行して Oracle のインストールを始める
さざなみフォントは「/usr/share/fonts/ja/TrueType/kochi-{gothic, mincho}-subst.ttf」にあることになっている。なのでシンボリックリンクで IPAフォントを配置してしまう訳だ。


これによりインストーラが日本語で起動した。


なお、日本語が化けた状態のままインストールをしてもインストールは可能で、Oracle のデータベース自体は問題なく動作する。ただし、Enterprise Manager の一部のボタンが文字化けしてしまう。これは、インストール時にボタンのGIFファイルなどを動的生成しているのだが、フォントがないためボタンに書き込むべき文字がレンダリングできないためだ。

Oracle のインストールぐらいは日本語がなくても困らないが、後で人にメンテナンスさせることを考えると Enterprise Manager がちゃんと表示されないのは少々困る。

上記対処を行ってからインストールすればこの問題は発生しないが、化けたままインストールしてしまった場合は、まず上記対処で強制的にフォントを割り当ててからEnterpriseManager を停止し、キャッシュとして作成されているGIFファイルを削除してしまうといい。Enterprise Manager  を起動し直すと、その時にGIFファイルを再生成してくれる。
インストール直後にフォントが割り当てられてなかったので文字が豆腐になってしまってるが、今回の再生成時にはフォントが強制割り当てされているので文字が書き込まれ、正しいボタンができてくれる。

...なお全くの余談だが、私は Java が大嫌いだ。