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 が大嫌いだ。

2013/12/21

OS X と 仮想SSD

SSD 標準搭載の MacBook Air がでた 10.8 Lion あたりから、OS X ではHFS Plusファイルシステムへの SSD に対するサポートがはいってきている。

具体的には、OS X がSSDに インストールされている場合、遅延再配置(hfs_relocate)と Hot File Adaptive Clustirng が無効になる。
二つの機能の概要については...、まあ、こちらのページを参照して欲しい。
(...まさか、未だに自分の原稿が上位でヒットするとは思わなかったよ。)

いずれの機能も HDDの特性を加味してディスク上のデータ配置を置き換えることで IO性能を上げるものであるが、しかし SSDの場合 再配置してもIO性能が上がらないし、むしろ書き込み回数を増やして不利益になるからだ。

OSXがSSDと認識しているかどうかは 「diskutil info」コマンドで確認できる。
[valkyrie:~] shiro% diskutil info disk0s2
   Device Identifier:        disk0s2
   Device Node:              /dev/disk0s2
   Part of Whole:            disk0
   Device / Media Name:      Macinosh HD

   Volume Name:              Macinosh HD
   Escaped with Unicode:     Macinosh%FF%FE%20HD

   Mounted:                  Yes
   Mount Point:              /
   Escaped with Unicode:     /

   File System Personality:  Journaled HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended (Journaled)
   Journal:                  Journal size 73728 KB at offset 0x1bf2000
   Owners:                   Enabled

   Partition Type:           Apple_HFS
   OS Can Be Installed:      Yes
   Recovery Disk:            disk0s3
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified
   Volume UUID:              A95E84F4-7013-38C7-BB33-BB8DB8E8ED69

   Total Size:               959.3 GB (959337365504 Bytes) (exactly 1873705792 512-Byte-Units)
   Volume Free Space:        478.1 GB (478122086400 Bytes) (exactly 933832200 512-Byte-Units)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No
   Ejectable:                No

   Whole:                    No
   Internal:                 Yes
   Solid State:              Yes
最下行の Solid State のフラグが Yes ならばSSD上であるとOS Xが判断していると言うことだ。
(余談だが、SSD だからといってルートフォルダに  .hotfiles.btree ファイルがないとは限らない。初期状態からSSDで出荷された Mac ならその通りだが、HDD搭載の Macから換装したりなどすると、以前の  .hotfiles.btree ファイルが残る。使われてはいないが、どうもアクセスはされるみたいで更新日付は適宜アップデートされてしまう。消しても問題ないとは思うのだが、さすがに失敗したときのリスクが怖いので試していない。)

さて、仮想環境上の OS X はどうであろうか?

とりあえず手元の Fusion 6 で仮想マシンを作ってみたところ、仮想ディスクはすべて SATA接続のディスクとして作成される。

SATA接続のディスクから OS Xを起動すると、SSD上の仮想マシンはちゃんと「SSD」が接続されたように振る舞う。図は、Mountain Lion を搭載した仮想マシンだが、Solid State が YES になってるのがわかる。

Fusion 6 で動作する Mountain Lion の仮想マシン

ただし、以前の Fusion で作成した仮想マシンは 仮想SATA接続ではなく仮想SCSI(lsilogic)接続になっており、こちらはSSDと認識されていない。仮想SATA接続は仮想ハードウェアバージョン10からのサポートで、Fusion 6からしか使えないからだ。

以前作った仮想マシンについては、以下の手順で仮想SATA接続に変更できる。

まず、仮想マシンをちゃんとシャットダウンして、スナップショットをすべて削除する。

次に、設定パネルの互換性タブから仮想ハードウェアバージョンを10にあげる。

仮想ハードウェアバージョンを10にする

これにより仮想SATA接続の仮想ディスクが利用可能になる。

最後に、仮想ディスクを選択してバスタイプをSATA接続に変更する。

バスタイプをSATAに変更

スナップショットを削除していないとバスタイプの変更ができないので注意だ。

不用意にバスタイプを変更すると起動しなくなるOSもあるが、OS X のブートローダは結構柔軟性があり、SCSIからSATAへの変更程度なら問題なく起動してくれる。
ゲストOSの上の動作とはいえ、無用な書き換えを防ぐことでSSDを長持ちさせることができるのでやっておいたほうがいいし、そのために Fusion 6 にアップグレードするのも悪い話ではないだろう。


しかし、OS X の場合はこの方法を使っても、OS側がSSDを検出しない、SCSI/IDE接続のディスクをSSDかHDDか検出していない模様のため、あまり意味がない。


2013/12/11

[余談] WiFiルータ

vExpert な知人の間でアドベントカレンダーが回っているようだ。

話は聞いていたのだが11月末から12月冒頭、主に出張でばたばたしてたのですっかり出遅れてしまった。用意したネタはなきにしもあらずだが慌てて出す必要もないし、またじっくり確認してからにしようと思う。

で、その出張で公私ともに役に立ってるWiFiルータの話をちょっと載せておきたい。

その愛用品は Planex の MZK-RP150N という名の WiFiルータだ。個人的に使っているものは確か1年ほど前、博多駅近くのヨドバシで購入した。

出張用の旅行鞄には長らく初代の AirMacExpress が入っており、旅行先の宿で無線LANを利用するのに使っていた。が、この博多出張の折たまたま家に忘れてしまい、これが吸収を転々とするわりと長期にわたる出張だったためなきゃないで困るので、目の前にヨドバシがあるうちにと買いに行ったのだった。

AirMacExpress も購入当初はなんて小さな WiFi ルータだと思っていたが、MZK-RP150N のマッチ箱を二つ重ねた程度の小さな筐体は輪をかけて小さく、買ったときには技術革新にひどく驚いたものだ。

さて、小型の WiFiルータなら他にもたんとあるのに、わざわざこれを選んだ理由は「Ethernet が2ポートある」という点に他ならない。WiFiを抜きにしても、簡易的なNATルータとして利用可能なのだ。これは思いの外便利で、1IPアドレスしかとれないような会議室で結構役に立つ。ほかの多くは1ポート、上位ネットワークにつながるポートしかないのでこうしたことができない。

怪我の功名ではあるが、なかなかいいものを買ったと思っている。
後日 職場の機材で持ち運びの容易なWiFi ルータが必要になったときにこの MZK-150Nを提案し、何台と導入して便利に使っている。小さく、そこそこの性能があり、なにより安い(市価で2000円強)。


ただ、良いことがある一方、あまりよろしくない点もある。

一つは、デフォルトの設定がイケてないということだ。デフォルトではオートモードという設定になっており、外部(Internet)側ポートの接続状況に応じてNATルータ(ルータモード)かブリッジ(APモード)かを自動的に切り替えるようになっている。

確かに、NATルータとして振る舞ってほしい場合もあれば、有線と無線をつなぐ単なるブリッジでいい場合もある。そのために都度設定をするのは面倒といえばそうだ。
しかし、このモードの切り替えはどうも外部側ポートに割り当てられたIPアドレスで判断しているらしく、プライベートIPがついた場合はたいていブリッジになるようだ。

「らしく」というとおり切り替えの基準がいまいちはっきりしないのと、最近のビジネスホテルの部屋のポートは 10.x.x.x のプライベートアドレスが割り当てられることが多い、というかまっとうなグローバルアドレスがそんなぽんぽん割り当てられるはずもなく、従って意図せずにブリッジとして動作していることがある、ここがかえって厄介になっている。

またモードによって管理ページのIPアドレスが異なる(最終オクテットが .1, .249, .248 の3パターン)ため、設定をしたくても管理ページにたどり着くのが一苦労だったりもする。
このため、私物および職場で私の管轄下の機器についてはルータモードに固定しており、必ずNATルータとして振る舞うようにしている。

製品自体には今時の機器らしく、マニュアルは付属せず簡単な説明用紙がついているだけだ。この説明用紙が、初心者向けに優しく書いているのだが、詳しいことを知ろうとするとかえってわかりにくい。オートモードと相まって飼い慣らすまでが一苦労だ。
(オンラインで詳細マニュアルは存在する)

また、後継機種らしい機器が出てきているためか、若干ながら入手が難しくなってきている。
こちらはEthernetが1ポートしかないため、私にとっての利点が失われてしまっている。

今後の入手可能性が不安なため、職場での機材増加に伴う追加購入の際、無理を言って予備機を用意してもらった。( 予備機もしまわれているわけではなく社内での検証などにも流用されている )

少々問題はあるが、とはいえ設定さえルータモードに固定してしまえば、あとは「差すだけ」というのはとても便利だ。

そろそろ私物のほうも予備を買っておこうか、と思うぐらいには気に入っている。

2013/11/06

Fusion での起動メニュー

さて、先の Fusion 6.0.2 で起動メニュー周りのことが書かれていたので一つ試してみた。

Fusion 6.0.2 にアップデート後、OS X をインストールした仮想マシンを起動、即座に Option を押しておいた。

Macの実機の場合、Optionを押して起動すると例の起動メニューが出てくる。

Fusion の場合、以下のブートメニューが出てきた。

Option を押しながら起動するとこのメニューが表示される 
先のメニューで BootManager を選ぶとこの画面になる

Fusion の仮想マシンにおける EFIの実装は VMwareオリジナルのため、Appleがおこなったようなグラフィカルな起動メニューという拡張ははいっていない。ただそれだと便利が悪いので実装したようだ。
(追記)なお、これは Fusion 6.0.1 でも動作する。別に 6.0.2 で新規という訳ではないようだ。


MountainLion や Mavericks のリカバリパーティションを起動する場合にはこれは便利だろう。

Fusion 6.0.2 release

11/5 (米国時間)に Fusion 6.0.2 がリリースされた。
メンテナンスリリースで、新機能は含まれないが様々な改善がなされている。

リリースノートはこちらにあるが、変更点は以下の模様。
  • メモリが不足している際に仮想マシンの起動に失敗する問題に対処
  • Windows 8.1 および WindowsServer 2012R2 の最終版の簡易インストールをサポート
  • Fusion の起動パフォーマンスの改善
  • いくつかの Linux で HGFS(ホストOSとゲストOSでのファイル共有)モジュールのビルドに失敗する問題に対処
  • OS X Mavericks サポートの強化
    • Finder タグに対応
    • OS X をゲストOSにした場合のドラッグ&ドロップの改善
    • メニューバーの取り扱いの改善
    • Unity モードでのマルチディスプレイの取り扱いの改善
    • OS X Mavericks をゲストOSにした場合のリカバリパーティションの取り扱いの改善
    • OS X をゲストOSに指定した場合の起動パーティションの選択の改善
    • リスタート後の仮想マシンのウィンドウ位置の復元の取り扱いの改善
    • "既存のPCをインポート"機能での、Mavericks のファイル共有機能との互換性の向上
  • 仮想マシンのインポートでの、Parallels Desktop 8 仮想マシンの検出の強化
  • 起動ボリュームが見つからない場合のメッセージの改善
  • 自動起動に指定していた仮想マシンの電源オンを止めた場合に生じる問題の修正
  • OS X をゲストOSとしてSATA仮想ディスクにインストールした場合に FileVault が有効にできるようになった
  • 特にゲストOSがBSOD(ブルースクリーン)やカーネルパニックの最中などに、仮想マシンの電源オフ中にハングする問題に対処
  • Ubuntu 13.10 で共有フォルダのカーネルモジュールがビルドできるように改善

朝一で適当に訳したので、少々間違いがあるかも知れないので原文も良く確認のこと。

2013/09/26

VMware Tools の細かいこと3つ

どうもこのページを見に来るのに VMware Tools と検索してる方が多いようなので、VMware Tools に関するどうでもいいこと3つばっかりを記載してみる。

● 「完了」インストール?

Windowsで VMware Tools をインストールするとき、「完了」というセットアップ種類を見かける。(図参照)


この「完了」とは何か引っかかるが、英語にすると分かる。そう、Complete の訳が「完了」になってしまっているのだ。
これは「完全」の方が正しいと思うのだが、何故か直らない訳の一つである。

● OSP とは?

ゲストOSの互換性リストなどを追いかけていると、時に VMware Tools について「OSP」という表現がなされることがある。

OSPは「OS Specific Package」の略で、VMware Tools が OS標準のパッケージシステムでインストールされることを指す。とくに Linux の場合、標準の VMware Tools だと tar.gz を展開、vmware-tools-distrib/ 以下の vmware-install.pl を実行するのだが、これだとOSのパッケージシステムの外でインストールされてしまう。パッケージシステムを利用することでその管理下にいれ、インストールやアップグレードをよりやりやすくしようというのが、OSPだ。

OSPについての詳細はマニュアル(osp-esxi-51-install-guide.pdf)があるので参照して欲しい。かいつまむと http://packages.vmware.com というサイトがあるのでそこをパッケージ配布サイトに登録、yum なり apt なりでいんすとーるをするというものだ 。

● VMware Tools をネットから取得する

先のOSPのインストール元の http://pacakges/vmware.com/tools には実は Windows 版を含む VMware Tools が用意されている。これは以前にも記載したとおりだ。

特定のバージョンの VMware Tools が必要な場合、ここから取得するという手もある。