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

Updated:

なぜ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のオリジナルの設定は次のような内容になっているはずです。

# Virtual ethernet segment 8
# Added at 07/11/12 06:42:18
subnet 192.168.224.0 netmask 255.255.255.0 {
range 192.168.224.128 192.168.224.254;            # default allows up to 125 VM's
option broadcast-address 192.168.224.255;
option domain-name-servers 192.168.224.2;
option domain-name "localdomain";
option netbios-name-servers 192.168.224.2;
option routers 192.168.224.2;
default-lease-time 1800;
max-lease-time 7200;
}
host VMnet8 {
    hardware ethernet XX:XX:XX:XX:XX:XX;
    fixed-address 192.168.224.1;
    option domain-name-servers 0.0.0.0;
    option domain-name "";
    option routers 0.0.0.0;
}
# End

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

range 192.168.224.128 192.168.224.254;            # default allows up to 125 VM's

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

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

host VMnet8 {
    hardware ethernet YY:YY:YY:YY:YY:YY;
    fixed-address 192.168.224.101;
}

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に固定されるようになります。

「初めてのPerl 第6版」が発売されました

Updated:

「初めてのPerl 第6版」が7月25日に発売となりました。

初めてのPerl 第6版

(「初めてのPerl第6版」をアマゾンで購入する)

「初めてのPerl」(原題: "Learning Perl")はその表紙の絵から「リャマ本」とも呼ばれ,Perlの入門書の定番として、長年にわたって親しまれてきました。前のエディション(第5版)はPerl 5.10に対応していましたが、第6版はPerl 5.14対応となっています。

内容は5.14に対応しただけではなく、それ以外の部分もかなり加筆されています。特に、いわゆる「モダン」な書き方も紹介しています。

  • 3引数のopen
  • ファイルハンドルをmy変数で扱う
  • autodie


また第6版では、Unicodeについての説明が追加されています。本文中の該当する箇所でUnicodeについて説明するとともに、付録C「Unicode入門」にUnicodeの扱い方がまとめられています。

Perlを学びたい人は、書店でぜひお手にとって中身をご覧いただければ幸いです。

章レベルでの目次は次の通りです。(詳細な目次は、オライリージャパンの書籍紹介ページをご覧ください。)

はじめに
1章 Perl入門
2章 スカラーデータ
3章 リストと配列
4章 サブルーチン
5章 入出力
6章 ハッシュ
7章 正規表現の世界
8章 正規表現によるマッチ
9章 正規表現によるテキスト処理
10章 さまざまな制御構造
11章 Perlモジュール
12章 ファイルテスト
13章 ディレクトリ操作
14章 文字列処理とソート
15章 スマートマッチとgiven-when
16章 プロセス管理
17章 上級テクニック

付録A 練習問題の解答
付録B リャマを越えて
付録C Unicode入門

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

Updated:

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の
ウィンドウを表示する際にも、ちゃんとアプリケーションのメニューが表示さ
れるになりました。めでたしめでたし。

「初めてのPerl 第6版」が7月25日に発売されます

Updated:

7月25日に「初めてのPerl 第6版」が発売になります。

昨日,オライリージャパン様から見本が届きました。

初めてのPerl 第6版

「初めてのPerl 第6版」はその表紙の絵から「リャマ本」とも呼ばれ,Perlの入門書の定番として親しまれてきました。

今回出版となる第6版は,Perl 5.14に対応しています。オライリージャパンのページでは,目次が公開されていますので,ご覧ください。

またアマゾンでも予約受け付け中です。

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

Updated:

デスクトップマシンとノート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も新し
くなったので、作業がしやすくなりました。めでたしめでたし。