スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntu vs CPU切替機&画面解像度

CPU切替機とUbuntuの解像度制御と格闘したお話


職場の環境で、1つのディスプレイにCPU切替機(ディスプレイ切替器)を利用して
 ・Windows7
 ・Ubuntu12.04
 ・Ubuntu10.04
を切り替えて使っている。


便利なのだけど、起動時にそのPCの画面をアクティブにしていないと画面解像度がおかしくなる事がわかった。
Ubuntu単体では問題なく1920x1200で認識してくれるのだけど、起動中にバックグラウンド(例えば、再起動中にWindows7を表示して作業していたり)にすると立ち上がり時に1024x768で認識されてきてしまう。
表示したままでログイン画面まで待つと問題ないが、その後切り替えて作業していてUbuntuの画面ロックがされるとまた同じく解像度が下がる。

いずれもログイン後ターミナルから

 "xrandr"

という、モニタの設定を行うコマンドを実行すれば再度正しく認識してくれるのだけど、いちいちめんどくさい。
ちなみに、Ubuntu10.04やWindows7でもおこる。が、こちらは一度ログインまで見届けたら自動で画面ロックがかかったとしても解像度がかわらないため運用上あまり問題ない。

 


ー 解決方法案 ー
 
 自動で認識してくれるのがダメなら固定しちゃえばいいじゃない!


でUbuntu12.04で画面解像度を固定にする方法を調べた。
https://wiki.ubuntulinux.jp/UbuntuTips/Hardware/HowToChangeMonitorResolution

 1. Lightdmで解像度を固定する
 2. xorg.confで解像度を固定する

の2通りがあるらしい。(各方法の細かい設定は、リンク先参照)



1. Lightdmでやってみる
  まず、方法1で手動で追加した解像度を読み込ませる方法。
 
 サイトを参考に"xrandr"コマンドで解像度を追加、指定するスクリプトを作成。
 そのスクリプトを/etc/lightdm/lightdm.confで読み込ませる(?)。
 
  display-setup-script=スクリプト名
 
 スクリプトはこんな感じ。

#!/bin/sh

xrandr --newmode "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync
xrandr --addmodes VGA1 1920x1200_60.00
xrandr --output VGA1 --mode 1920x1200_60.00



 再起動したところ、エラー画面が表示されGUIが起動しない。(スクリプト単体で実行するとうまくいくので、スクリプト自体はあっていると思う。)
 あわててCtrl+Alt+F1でコマンドから、lightdm.confを元に戻す。


 押してだめなら引いてみれ!
 xrandrコマンドを利用して不要な解像度を消しちゃえばいいじゃない!

  ”xrandr --delmode ****

 コマンドで試すも、自動で認識したやつは消せないっぽい。(メッセージをよく読んでない)


2.xorg.confでやってみる
 なぜかLightdmがだめだったので、方法2に挑戦。
 元々は、/etc/X11/xorg.confという設定ファイルががあった(過去)らしいのだが、Ubuntu12.04で当該フォルダをみるとxorg.confが存在しない。
 さらに調べると、いまはなくなっているらしい。
 http://askubuntu.com/questions/129941/my-ubuntu-12-04-has-no-xorg-conf-is-that-normal
 レベル高い・・・。まずxorg.confのひな形を作る。


 http://askubuntu.com/questions/7430/how-to-generate-xorg-conf-x-configure-segfaults
を参考に

  "sudo service lightdm stop"

 GUIデスクトップが終了されるので、Ctrl+Alt+F1を押して画面を切り替えてログイン。

  "sudo X -configure"

 と入力すると現在のディレクトリに"xorg.conf.new"というファイルが生成される。

  ”sudo start lightdm
 
 で再度GUIを開始して、先ほどのxorg.conf.newを編集する。
 さっぱりわからんですが、いろんなサイトを参考にして必要そうな箇所以外をがっつり削除する。
 参考にさせていただいたサイト。

 で、こんな感じで書いてみた。

$ cat /etc/X11/xorg.conf
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "EIZO"
ModelName "FlexScanSX2462W"
# ModeLine "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync
ModeLine "1920x1200_60.00" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync
Option "PreferredMode" "1920x1200_60.00"
Option "Enable" "True"
EndSection

Section "Device"
Identifier "Card0"
Driver "i915"
BusID "PCI:0:2:0"
# Option "IgnoreEDID" "on"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Modes "1920x1200_60.00"
EndSubSection
EndSection




 これを、/etc/X11/の配下に"xorg.conf"という名前で配置。
 これでOK、問題なくバックグラウンドでのブート、画面ロック後も希望の解像度で動作しました。


 ちなみに、xorg.confの中の
 # ModeLine "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync
 の行は、

  "cvt 1980 1200 60"

 で表示された結果の部分をパラメタとして与えるらしいのだが、それをしたところ微妙にサイズがあってなくて右側が5cmくらい黒い状態になっていた。
 困っていたところ、/var/log/Xorg.0.log をよく見たら自動で認識したときの値が出ていたのでそれを適用したらうまくいった。
 (コメント"#"なしの行)
 ・・・が、今回は自動認識していたからいいものの、そうでない場合は使えないな。




 もう一つのコメント行

 # Option "IgnoreEDID" "on"

 に関しては、参考にさせていただいたサイトにも関係するのだが、今回知った事としてモニタとPCの間でEDIDという技術で解像度等の情報をやり取りする事により自動で認識するらしい。それで、CPU切替機の中にはこの情報をActiveでないPCには流さないため、PCが解像度を認識できなくなる(あってるかな?)という事象があるらしい。
 ネットを調べると物理的に改造している強者もいるみたいだけど、これをみたときに「じゃそのEDIDをPCが無視して固定値にしちゃえばいいんじゃね?」という事で調べたのですが、結果としてこれがなくても問題なくいきました。
 一応ログとして残しておく。



もう少し勉強した方がいい事
 ・X11関連
 ・lightdm関連

スポンサーサイト

テーマ : UNIX/Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

感謝感謝!!

全く同じ問題で悩んでました。4時間くらい?
x11vncをログイン画面の時点で動作させるのに没頭してて、切替器が他のPCを選択してるときの動作に気付かず、リモートから再起動させてデフォルト解像度が低解像度になってしまう現象を何とかしようとしてパクりました。(^_-)
kdeだからか正常起動時のmodeが変な値だったのですがcvtで得た物にして、何とか切替器が他のPCを選択しているときにも正常起動出来るようになりました。感謝です。一時はP&Pとか切っちゃえばとか危ない考えもよぎりましたが、よかったよかった。
有難うございました。

Re: 感謝感謝!!

> 全く同じ問題で悩んでました。4時間くらい?
> x11vncをログイン画面の時点で動作させるのに没頭してて、切替器が他のPCを選択してるときの動作に気付かず、リモートから再起動させてデフォルト解像度が低解像度になってしまう現象を何とかしようとしてパクりました。(^_-)
> kdeだからか正常起動時のmodeが変な値だったのですがcvtで得た物にして、何とか切替器が他のPCを選択しているときにも正常起動出来るようになりました。感謝です。一時はP&Pとか切っちゃえばとか危ない考えもよぎりましたが、よかったよかった。
> 有難うございました。

解決にお役に立てて何よりです! しかし切り替え装置で4ポート位の物でDVI対応のものってかなり高価なものしかないですよね。
プロフィール

Author:Opecha-DaDa
ニッチな技術メモ的なブログになりつつありますが、だからこそあなたのお役に立てる内容があれば幸いです。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。