VMwareでX Window Systemの解像度を正しく設定する方法

VMwareでゲストOSを構築する際に、解像度の設定が正しく反映されずにとても悩んでいました。 Ubuntu Serverを構築した時はXRandRで設定して、誤魔化していました。 XRandRで設定する場合は、ディストリビューションやウインドウマネージャによってはログイン画面の解像度がくずれたりする現象を確認しており、この対策を模索していました。 色々試して分かったのは、X.Org Serverを直接設定してしまうのが最適解だということです。 ただしVMwareなので、一般的なディスプレイの設定をしても反映されず、VMware専用の設定を記述しなければいけません。 その設定について記載します。

検証環境

仮想化ソフトウェアVMware Workstation 7.1.3
ホストOSWindows 7 Ultimate (64bit)
ゲストOSDebian GNU/Linux 6.0.0(64bit)
ゲストOSFedora 14(64bit)
ゲストOSFreeBSD 8.1 RELEASE(64bit)
ゲストOSUbuntu 10.10 (64bit)

X.Org Serverの設定

設定ファイルが最初存在しないので雛形を生成します。 生成する際にXを停止しておかないと、設定ファイルの生成に失敗します。 よって、シングルユーザモードやテキストログインモードで起動するか、ランレベルを変更して設定します。 私はテキストログインモードで起動し、rootユーザでログインして設定しました。

# Xorg -configure
# mv /root/xorg.conf.new /etc/X11/xorg.conf
# vi /etc/X11/xorg.conf

/etc/X11/xorg.conf

Section "Monitor"
     Identifier   "Monitor0"
     VendorName   "Monitor Vendor"
     ModelName    "Monitor Model"
     ### For VMware
     HorizSync    1-10000
     VertRefresh  1-10000
     ### 04:03
     ModeLine "800x600" 100 800 900 1000 1100 600 700 800 900
     ModeLine "1024x768" 100 1024 1100 1200 1300 768 800 900 1000
     ModeLine "1600x1200" 100 1600 1700 1800 1900 1200 1300 1400 1500
     ### 05:04
     ModeLine "1280x1024" 100 1280 1300 1400 1500 1024 1100 1200 1300
     ### 16:09
     ModeLine "1600x900" 100 1600 1700 1800 1900 900 1000 1100 1200
     ModeLine "1920x1080" 100 1920 2000 2100 2200 1080 1100 1200 1300
     ### 16:10
     ModeLine "1280x800" 100 1280 1300 1400 1500 800 900 1000 1100
     ModeLine "1440x900" 100 1440 1500 1600 1700 900 1000 1100 1200
     ModeLine "1680x1050" 100 1680 1700 1800 1900 1050 1100 1200 1300
     ModeLine "1920x1200" 100 1920 2000 2100 2200 1200 1300 1400 1500
EndSection

Section "Screen"
     Identifier "Screen0"
     Device     "Card0"
     Monitor    "Monitor0"
― 省略 ―
     SubSection "Display"
          Viewport   0 0
          Depth     24
          Modes     "1440x900"
     EndSubSection
EndSection

ハイライトしている記述が追記箇所です。 MonitorとScreenのセクションを抜粋しています。 MonitorのセクションのHorizSyncとVertRefreshがVMwareでは重要な部分となります。 ModeLineについては必要な解像度の部分だけの記述でもOKです。 Screenのセクションで実際に使用する解像度を指定します。 この場合だと1440x900を指定しています。 私は初め以下のように、MonitorのセクションでModeLineを記述せずに解像度情報の自動認識を狙いました。 /etc/X11/xorg.conf

Section "Monitor"
     Identifier   "Monitor0"
     VendorName   "Monitor Vendor"
     ModelName    "Monitor Model"
     ### For VMware
     HorizSync    1-10000
     VertRefresh  1-10000
EndSection

Section "Screen"
     Identifier "Screen0"
     Device     "Card0"
     Monitor    "Monitor0"
― 省略 ―
     SubSection "Display"
          Viewport   0 0
          Depth     24
          Modes     "1440x900"
     EndSubSection
EndSection

この場合だとディストリビューションによって正確な表示の可否が分かれました。 解像度の情報を直接記述する最初の方法が無難であると言えます。 とりあえず主要なディストリをゲストOSとしてインストールして検証したので、この方法なら他のディストリでも通用すると思います。

Ubuntuでの設定(2011年02月25日追記)

2番目の方法で動作を確認しました。ModeLineを記述しなくても、正しく表示されます。 検証環境はOSがUbuntu 10.10、ディスプレイマネージャはGDM、デスクトップ環境はGNOMEです。