VMWare Plalyerで、ゲストOSの時刻が同期しない現象を解決


VMWare Playerでは、ゲストOSの時刻を自動的にホストOSに同期させることができます。それには次のように設定しておきます。

1. ゲストOSにVMWare toolsをインストールする
2-1. VMWare Playerを起動して、対象となる仮想マシンを選択する。
2-2. 仮想マシンの設定の編集]をクリックして「仮想マシンの設定」ダイアログを表示する
2-3 [オプション]タブを選択してから[VMWare Tools]をクリックする。
2-4 「ホストとゲスト時間を同期」チェックボックスをオンにする。

これで、ゲストOSを起動したり、サスペンドから復帰する際に、ホストOSと時刻が同期します。

上記の設定を1回だけ行なえば、あとは何もしなくても、ゲストOSの時刻が常に正しく設定されます。

しばらくは自動的に時刻が同期されていたのですが、なぜかいつの間にかゲストOSの時刻が同期されなくなってしまいました。例えば、サスペンドから復帰した場合に、サスペンドした時の時刻のままなのです。

これでは不便なので、いろいろといじってみました。結果としては、VMWare toolsを再インストールすることで再び時刻が同期されるようになりました。

具体的には、仮想マシンを起動した状態で、[Player]メニューから[管理]-[VMWare toolsの再インストール」を選択すると、ゲストOS側でVMWare toolsのCD-ROMイメージがマウントされます。あとはVMWare toolsを最初にインストールした時と同じ手順です。

現象としては、たぶん次のような感じなのだろうと思われます(ちゃんと調べたわけでないのですけど)。

  • VMWare toolsをインストールすることにより、対応したカーネルイメージ(?)が生成される仕組みになっている
  • apt-get upgradeで新しいカーネルイメージが生成されると、それはVMWare対応ではないので、時刻が同期されなくなってしまう

というわけで、時刻が同期しなくなったらVMWare toolsを再インストールすれば直ります(たぶん)。

Xubuntu 14.04LTSを、VMWare Playerにインストールしました


Ubuntuの派生ディストロであるXubuntuの最初バージョン14.04LTSを、VMWare Player(Windows 7マシン上で動作)の仮想マシンにインストールしました。その時の手順のメモです。

近藤は、これまでUbuntu 12.04LTSを使っていました。前回の移行(Ubuntu 10.04LTSから12.04LTS)の際には、既存の10.04LTSの環境に対して、アップグレードをかけました。その時の記録はここにありますが、正直言って、かなり苦労、というか悪戦苦闘しました。

そのこともあったので、今回は、既存環境のアップグレードはせずに、新規にXubuntu 14.04LTSをインストールすることにしました。

UbuntuからXubuntuに移行した理由

まず最初に、なぜ今回は、Ubuntuではなく、Xubuntuを選んだかという話を書いておきます。

近藤は、数年前から、WindowsマシンにVMWare Playerをインストールして、その上で仮想マシンとしてLinux(Ubuntu)を動かしていました。

VMWare Playerには、Unityモードという動作モードがあります。これは、「Linuxのデスクトップを表示せずに、LinuxアプリのウィンドウをWindowsのデスクトップ上に直接表示する」というモードです。つまり、Linuxで起動したアプリ(例えばターミナル)が、あたかもWindowsのアプリのように扱われるのです。私のLinuxの使用目的は主に開発なので、基本的にこのUnityモードを使っています。

しかし、(12.04当たりから?)Ubuntuに導入されたUnityモード(まぎらわしいですね)が、VMWare PlayerのUnityモードと相性が悪いのです。Ubuntu 12.04LTSでは、古いバージョンのVMWare Playerを使って、何とか調整して使っていました。

しかし、最新版のVMWare Playerでは、『(VMWare Playerの)Unityモードは、Ubuntu(のUnityモード)はサポートしない』ということになってしまいました。実際に、VMWare Player 6.0.3に、Ubuntu 14.04LTSをインストールしたところ、Unityモードに切り替えができません。

いろいろ調べたところ、VMWare Unity Mode with Ubuntu 12.10というQAスレッドを見つけました。

ここでは「Unityデスクトップの代わりに、Gnome3デスクトップを使う」という回避策が紹介されてました。また、そのほかには「どうしてもUbuntuを使いたければ、Ubuntu系の派生ディストロのXubuntuを使えばいい。Xubuntuは、XFCEデスクトップを使ってるので、VMWareのUnityモードとコンパチだから」というアドバイスもありました。

そこで、試しにXubuntuを入れてみたら、確かにVMWare PlayerのUnityモードがちゃんと動きました。また日本語環境で使えるという実績も見つかりました。

というわけで、Ubuntu 12.04LTSから、Xubuntu 14.04LTSへと移行したのでした。

Xubuntu 14.04LTSをVMWare Playerにインストールする手順

さて、本題ですが、インストールの手順自体は簡単です。

1. Xubuntuの公式サイトから、14.04LTSの64bit版のISOイメージをダウンロードします。

http://cdimage.ubuntu.com/xubuntu/releases/14.04/release/xubuntu-14.04-desktop-amd64.iso

2. VMWare Playerから、「新規仮想マシンの作成」を実行します。ダイアログでは、「インストーラディスクイメージファイル」として、ダウンロードしたISOイメージを指定してやります。すると、「Ubuntu 64ビット 14.04」と認識してくれて、簡易インストール(ほぼ全自動でインストールくれる)をしてくれます。

3. XubuntuのVMをスタートさせると、シンプルなログイン画面が表示されます。

xubuntu-login

4. ログインすると、シンプルなデスクトップが表示されます。

xubuntu-desktop

5. メニューからターミナルを立ち上げてみます。

xubuntu-desktop-2

6. ユニティモードのアイコン(下のイメージで、赤丸で囲んだアイコン)をクリックすると、ユニティモードに移行します。

xubuntu-unitify-icon

ターミナルがWindowsアプリのようにウィンドウに表示されます。

xubuntu-unity

さて、この状態では日本語文字は表示されるものの、まだ日本語の入力はできません。

日本語入力をするためにiBusをインストールする

日本語入力を可能にするには、iBusをインストールした上で、日本語入力の設定をすればOKです。下記のページの手順で設定を行ないました。

これで、Xubuntu 14.04LTSの開発環境が手に入りました。あとは、必要なソフトをインストールして、設定を行なえばOKです。

VMWare Player上で動作するUbuntuのIPアドレスを固定化する


なぜUbuntu(ゲストOS)のIPアドレスを固定したいの?

ノートPC(Windows 7 64bit)では、VMWare Player 3.1.6上でUbuntu 12.04LTSを動かしています。VMWare Plalerのネットワーク環境はNATモードにしています。

NATモードでは、ホストOS(Windows 7)の中に仮想ネットワークが作られ、ゲストOS(Ubuntu)はそのネットワークに接続されます。Ubuntuから外部にアクセスする際には、ホストOSがNATボックスとして機能します。

NATモードでは、UbuntuのIPアドレスは、DHCPによって付与されます。困ったことに、付与されるIPアドレスは、ブートしたり、サスペンドしたりするたびに、変わってしまうのです。

Ubuntuからインターネットにアクセスするだけなら、IPアドレスがころころ変わっても特に問題ありません。しかし、ホストOSからUbuntuにアクセスする場合には、IPアドレスが固定されていないと不便です。(例えば、テストのために、ゲストOSのブラウザから、Ubuntuのウェブサーバにアクセスする場合)

そこで、UbuntuのIPアドレスを固定するようにしてみました。

Ubuntu(ゲストOS)のIPアドレスを固定する方法

具体的には、ゲストOS(Ubuntu)のMACアドレスに対して固定のIPアドレスを与えるように、仮想ネットワークのDHCPサーバを設定してやります。

それでは、その手順を紹介しましょう。

Windows 7の場合、仮想ネットワークの設定は、次のファイルに記述されています。

C:ProgramData\VMware\vmnetdhcp.conf

このファイルに仮想ネットのDHCPサーバの設定が書いてあるので、ゲストOSのMACアドレスに対して固定のアドレスを付与するように設定を追加します。このファイルはテキストファイルなので、読めば設定内容がわかるでしょう。

ここでは、2つの仮想ネットVMnet1とVMnet8が定義されています。

  • VMnet1: Host-only modeで使用
  • VMnet8: NATモードで使用

NATモードを使うので、VMnet8に設定を追加することになります。VMnet8のオリジナルの設定は次のような内容になっているはずです。

ざっと見ればわかりますが、VMnet8には、192.168.224.0/24というアドレスが割り当てられていています。rangeで始まる行が、DHCP用のアドレスプールの定義です。ここでは、192.168.224.128から192.168.224.254までがDHCP用アドレスプールになっています。

ゲストOS(Ubuntu)には、プールに含まれないIPアドレスを付けてやります。ここでは、192.168.224.101を使うことにしましょう。

設定ファイルに次のような設定を追加してください。これは、hardware ethernetで指定されたMACアドレスに対しては、常にfixed-addressで指定されたIPアドレスを与えるという意味です。

hardware addressという行の「YY:YY:YY:YY:YY:YY」という部分には、ゲストOS(Ubuntu)のMACアドレスを指定します。UbuntuのMACアドレスは、Ubuntuでifconfigコマンドを実行すると表示されるので、それを指定してください。fixed-addressには、Ubuntuに与える固定のIPアドレス、つまり192.168.224.101を指定します。

これで設定は完了です。

あとは、Windowsをリブートしてから、VMWare PlayerでUbuntuをブートすれば、UbuntuのIPアドレスは192.168.224.101に固定されるようになります。

UbuntuのUnityで、メニューをアプリケーションウィンドウに表示させる


UbuntuのUnityインターフェースでは、アプリケーションのメニューが、グロー
バルメニューバーに表示されます。(ちょうどMacintoshのような感じです。)

これはこれで、慣れてしまえば便利なのでしょうが、メニューを各アプリケー
ションのウィンドウに表示させたい、という根強いニーズがあるようです。

私の場合、WindowsマシンのVMWare Player上で、Ubuntuを実行しています。通
常は、VMWareの「Unityモード」(ややこしいのですが)を使って、Windowsのデ
スクトップ上にLinuxアプリのウィンドウを個別に表示させています。この際に、
アプリケーションのウィンドウにメニューを表示させる必要があります。

VMWare Playerのリリースノートを見ると「既知の問題」として、このことが記
載されていました。対処法としては「UbuntuのAPPMENU(グローバルメニュー)を
disableすると、アプリケーションウィンドウにメニューが表示されるようにな
るぞよ」と書いてありました。

というわけで、前置きがとても長くなってしまいましたが、グローバルメニュー
を禁止して、アプリケーションのウィンドウにメニューを表示させる方法を調
べをみました。

以下のページにUnityのグローバルメニューを禁止する方法が説明されていまし
た。

Disable The AppMenu (Global Menu) In Ubuntu

詳しくはこれを読んでいただくこととして、大きく2つの方法があります。

1つは、「環境変数UBUNTU_MENUPROXYに0をセットして、アプリケーションを起
動する」という方法です。アプリケーションは、この環境変数を見て、メニュー
をどこに表示するかを決めているようです。(というか、不評であることを想定
して、このような隠し機能を用意しているのでしょう:-)

もう1つは、グローバルメニューの処理を行なうパッケージを抜いてしまうとい
う方法です。


$ sudo apt-get remove appmenu-gtk appmenu-gtk3 appmenu-qt indicator-appmenu

環境変数UBUNTU_MENUPROXYを設定する方法をとることにしました。ファイル
/etc/X11/Xsession.d/81ubuntumenuproxyにexport UBUNTU_MENUPROXY=0
と書いておけば、すべてのアプリケーションで、メニューがアプリケーション
ウィンドウに表示されます。


sudo su
echo "export UBUNTU_MENUPROXY=0" > /etc/X11/Xsession.d/81ubuntumenuproxy

これで、(VMWare Playerの)Unityモードで、Windowsデスクトップに、Linuxの
ウィンドウを表示する際にも、ちゃんとアプリケーションのメニューが表示さ
れるになりました。めでたしめでたし。

Ubuntu 10.10から12.04LTSにアップグレードしました


デスクトップマシンとノートPCでは、Windows上で、仮想マシンとしてUbuntuを
動かしています。仮想化ソフトとしてVMWare Playerを使い、その上でゲスト
OSとしてUbuntu Linuxを動かしています。

これまでは、Ubuntu 10.10というかなり古いバージョンを使っていましたが、
先日、さくらVPS上のサーバをUbuntu 12.04LTSにアップグレードしたので、そ
れに合わせて、デスクトップとノートPCのUbuntuも、12.04LTSにアップグレー
ドしました。

アップグレードの際に、いろいろとハマったので、作業内容をメモしておこう
と思います。

これまでに使っていたのは次の組み合わせでした。

VMWare Player 3.1.6
Ubuntu Linux 10.10

1. VMWare Player 4.0.4にUbuntu 12.04LTSを新規インストールしてみる(失敗)

まず最初に、VMWare Playerを最新バージョンの4.0.4にアップグレードしてか
ら、Ubuntu 12.04LTSを新規インストールしてみました。

Ubuntu 12.04LTSはまったく問題なくサクっとインストールできました。

しかし、VMWare Player 4系列には、Unityモード(これはVMWareの機能で、
Windowsのデスクトップ上に、Linuxのウィンドウを表示するというもの)で、ウィ
ンドウを最小化してから再表示させると、勝手にリサイズされてしまい、幅が
数十ピクセル、縦が画面の高さになる、というバグがあり、最新版の4.0.4でも
直っていないことが判明しました。

このバグは、VMWareのサポートフォームにも報告されているのですが、未対応
のままのようです。

VMware Communities: Terminal size changes in VMWare Player 4 Unity mode

私は、(VMWare Playerの)Unityモードを主に使っているので、これでは使い物
になりません。ですから、VMWare Playerの4.0.4はあきらめて、3.1.6に戻すこ
とにしました。

2. VMWare Player 3.1.6にUbuntu 12.04LTSを新規インストールしてみる(失敗)

VMWare Player 3.1.6で、Ubuntu 12.04LTSを新規インストールしてみたところ、
うまくインストールできませんでした。おそらくX-windowの設定でひっかかる
らしく、インストール作業が途中で止まってしまいます。その状態で、リブー
トすると、コンソールモードで止まってしまってX-windowが起動されません。

3. VMWare Player 3.1.6で、Ubuntu 10.10から12.04LTSに順次アップグレードする(成功)

最後の手段として、VMWare Player 3.1.6のままで、現状の10.10を12.04LTSへ
とアップグレードすることにしました。

実際には、10.10から11.04、11.04から11.10、11.10から12.04LTSと3回に分け
てのアップグレードが必要となりました。デスクトップ版のUbuntuでは、アッ
プデートマネージャからGUIベースでアップグレードを実行できるので簡単です。

実際には、途中でときどきダイアログが表示されるので、まったく自動という
わけではありません。例えば、/etc以下のファイル設定をいじっていたりする
と、いちいち「上書きする? それとも前の設定を残す?」と聞かれたりします。

結構時間がかかりましたが(1回のアップグレードで1時間はくらい)、何とか
Ubuntu 12.04LTSにアップグレードすることに成功しました。実は、X-window回
りで、一部妙な動きをするところがあるのですが、実用上は問題ないので、良
しとしました。

これまでに使っていたUbuntu 10.10は、2010年10月にリリースされて、今年の
4月までサポートされていました。しかし、サポートされているとはいえ、ソフ
トウェアがバージョンアップされるわけではないのですね。例えば、10.10では
Emacsはバージョン23.1.1なのに対して、12.04LTSでは23.3.1になっています。

というわけで、サーバ(さくらVPS)とOSのバージョンが一致して、Emacsも新し
くなったので、作業がしやすくなりました。めでたしめでたし。