• 対象とするUbuntuのバージョン

    • 10.04 Lucid Lynx
    • 10.10 Maverick Meerkat
    • 11.04 Natty Narwhal
    • 11.10 Oneiric Ocelot

この文書は、"Ubuntu wikiのX/Config/Resolution"を和訳したものです。誤訳、誤記と思われる箇所については原文を参照下さい。 本文書では、UbuntuをPCにインストール後、画面解像度が本来表示できるはずのものより小さかった場合に、確認するべき項目と手順の一例を示します。$で始まる行はコマンドを表します。端末を開いてコマンドを入力して下さい。

不適切な解像度設定の除去

もしあなたのモニタに対して、モニタの設定GUIで不適切な解像度を設定してしまった場合は、端末からrm ~/.config/monitors.xmlを実行することで設定を消去できます。

動的な解像度の変更テスト

モニタの設定GUIツールで、解像度変更のテストをすることもできます。あるいは、強力なコマンドラインツールであるxrandrを使って下さい。

$ xrandr 

とすると、あなたのシステムで使用可能ないくつかの出力名(例: LVDS, VGA-0, DVI-0, defaultなど)と、それぞれで利用可能な解像度が表示されるでしょう。

$ xrandr Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 256mm
  1440x900       59.9 +   75.0*
  1280x1024      75.0     60.0
  1280x960       60.0
  1152x864       75.0
  1024x768       75.1     70.1     60.0
  832x624        74.6
  800x600        72.2     75.0     60.3     56.2
  640x480        72.8     75.0     66.7     60.0
  720x400        70.1

上記例では、VGA-0にモニタが接続されておらず、DVI-0で1440x900から720x400までの解像度が表示できることを示しています。 xrandrで、DVI-0のモニタに1024x768の解像度を指定する場合は、以下のように実行します。

$ xrandr --output DVI-0 --mode 1024x768 

リフレッシュレートも変更できます。同時に指定しても構いませんし、別々に指定しても構いません。

$ xrandr --output DVI-0 --mode 1024x768 --rate 75 

--rateの部分がリフレッシュレート75を指定する部分です。 xrandrによる設定は、そのセッションの間でのみ有効であることに注意して下さい。また、xrandrはもっと多くの機能を持っています。詳細は、$ man xrandrで確認して下さい。

自動検出されなかった解像度の追加

たとえば、モニタからのEDIDデータブロックが正常でない場合など、ハードウェアやドライバがバギーな場合、モニタの使用可能解像度を正確に検出できない場合もあります。

もし、解像度モードがすでに存在し、ただ、適切な出力に関連付けされていないだけの場合は、下記のようにしてモードを追加することができます。下記の例ではS-video出力に800x600の解像度を関連付けしています。

$ xrandr --addmode S-video 800x600 

もし、モードが存在していない場合は、先に、モードラインを指定して、モードを作成しておく必要があります。

$ xrandr --newmode <ModeLine> 

新しいモードラインの作成には、gtfや、cvtユーティリティを使用します。例えば、解像度が800x600のモードを追加する場合は、下記のように実行します(それに続くのは出力結果です)。

$ cvt 800 600
# 800x600 59.86 Hz (CVT 0.48M3) hsync: 37.35 kHz; pclk: 38.25 MHz
Modeline "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync

"Modeline"に続く部分の情報をxrandrコマンドに与えて下記を実行します。

$ xrandr --newmode "800x600_60.00"   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync

このコマンドの実行により、"800x600_60.00"の名前で新しいモードが作成されます。

xrandrによる設定を恒久化する

xrandrによる設定を恒久化する方法はいくつかあります。

  1. .xprofile
  2. kdm/gdm/lightdm
  3. xorg.conf

次に、それぞれの機構について説明します。

.xprofile内でのxrandrコマンドの設定

ユーザの~/.xprofileファイルが存在し、実行可能である場合、それがXorgの起動時に実行されます。xrandrで実行したいコマンドを、その中にコピー&ペーストしておけば、ログイン時に実行されます。下記に一例を示します。

xrandr --output VGA-0 --mode 800x600
#(その他の設定内容が続きます)

.xprofileをxrandrの設定に使う方法にはふたつの難点があります。ひとつめは、起動プロセスから遅れて実行されるため、最初に別の解像度で画面が表示され、途中で解像度が変更されることになります。結果として、場合によっては、パネルが不適切なサイズに設定されるかも知れません。ふたつめは、ユーザ毎の設定となるため、他のユーザの解像度には影響を与えません。また、ログインスクリーンの解像度にも影響を与えません。

kdm/gdm/lightdmのスタートアップスクリプトでのxrandrコマンドの設定

KDMとGDMはX起動時のスタートアップスクリプトを持っています。GDMでは、/etc/gdm/に、KDMでは、/etc/kde4/kdm/Xsetupに配置されています。lightdmでは/etc/lightdm/lightdm.confで、起動時に実行するスクリプトを指定することができます。それらのスクリプトの中にxrandrのコマンド設定を追記して設定することができます。GDMの場合は、/etc/gdm/Init/Defaultの中の、

initctl -q emit login-session-start DISPLAY_MANAGER=gdm

の直前に追加するのがよいでしょう。

lightdmでは、/etc/lightdm/lightdm.conf[SeatDefaults]セクションに、

display-setup-script=スクリプト名

などと記述し、実行するスクリプト名を指定して下さい。一例として、/etc/lightdm/lightdm_display.shという名前でスクリプトを作成した場合の記述例を示します。

[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
display-setup-script=/etc/lightdm/lightdm_display.sh

この際、/etc/lightdm/lightdm_display.shに実行権を付与するのを忘れないで下さい。

これらの操作には、root権限が必要になり、かつ、システムの設定ファイルを改変することになります。しかし、.xprofileによる設定よりも、起動プロセスのより早い段階で解像度を変更でき、ログイン画面を含め、全てのユーザに対して解像度変更を有効にすることができるという利点があります。

xorg.confによる解像度設定1

xorg.confは最近では通常、空ファイルとなっていますが、今でも解像度設定のために使用することができます。下記に一例を示します。

Section "Monitor"
    Identifier      "External DVI"
    Modeline        "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync +Vsync
    Option          "PreferredMode" "1280x1024_60.00"
EndSection
Section "Device"
    Identifier      "ATI Technologies, Inc. M22 [Radeon Mobility M300]"
    Driver          "ati"
    Option          "Monitor-DVI-0" "External DVI"
EndSection
Section "Screen"
    Identifier      "Primary Screen"
    Device          "ATI Technologies, Inc. M22 [Radeon Mobility M300]"
    DefaultDepth    24
    SubSection "Display"
        Depth       24
        Modes       "1280x1024" "1024x768" "640x480"
    EndSubSection
EndSection
Section "ServerLayout"
    Identifier      "Default Layout"
    Screen          "Primary Screen"
EndSection

xorg.confファイルの設定に関する詳細は、$ man xorg.confを参照願います。

xorg.confによる解像度設定2 -- 解像度が想定より低い場合の対処

まず試すべきこと

もし、ビデオカードが認識されているにもかかわらず、解像度が想定していたものより低い場合、下記を試してみて下さい。

背景: 私(訳注: 原文の筆者を指します)はUbuntu 9.04 x86を、ATI X1550搭載のビデオカードとふたつのLCDモニタ、DELL 2408(1920x1200まで表示可能)とSamsung 206BW(1680x1050まで表示可能)で使用していました。インストール後、最初のログイン時には、解像度は1152x864になっていました。xrandrはそれより高い解像度は表示していませんでした。/etc/X11/xorg.confを編集して対処する場合、Virtual Screen(仮想スクリーン)のSectionを追加し、システムを再起動して、改善するか試してみて下さい。改善しなかった場合は、続きを読んで下さい。

/etc/X11/xorg.confを以下の内容で作成して下さい。

Section "Monitor"
    Identifier      "Configured Monitor"
EndSection
Section "Screen"
    Identifier      "Default Screen"
    Monitor         "Configured Monitor"
    Device          "Configured Video Device"
    SubSection "Display"
        Virtual 3600 1200
    EndSubSection
EndSection
Section "Device"
    Identifier      "Configured Video Device"
EndSection

数値についての注釈: 上記のDELLのモニタを左に、Samsungのモニタを右に配置したとします。この場合、仮想スクリーンの横サイズは、ふたつのLCDの横サイズの合計となり3600=1920+1680となります。縦サイズは大きい方のものをとり、max(1200,1050)=1200となります。もし、片方のディスプレイを他方の上に配置したい場合、前述の計算の代わりに、横サイズをmax(width1, width2)、縦サイズをheight1+height2として下さい。

cvt/xrandrツールを使用してLCDの表示できる最大解像度を設定する

実際の手順は逆でしたが、私の場合はLCDが表示できる最大解像度を予め設定しておく必要がありました。実行したコマンドの一覧を例として示します。

aa@aa-desktop:/$ cvt 1920 1200 60
# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
Modeline "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync
aa@aa-desktop:/$ cvt 1680 1050 60
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
aa@aa-desktop:/$ xrandr --newmode "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync
aa@aa-desktop:/$ xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
aa@aa-desktop:/$ xrandr --addmode DVI-1 "1920x1200_60.00"
aa@aa-desktop:/$ xrandr --addmode DVI-0 "1680x1050_60.00"

関連サイト

UbuntuJapaneseWiki: UbuntuTips/Hardware/HowToChangeMonitorResolution (最終更新日時 2012-01-10 11:49:22 更新者 匿名)