web-dev-qa-db-ja.com

KVM経由で接続されたCentOS7でモニターを手動で構成する方法

Gnome 3を搭載したCentOS7をデスクトップに新しくインストールしました。

KVMでこのマシンを使用する必要がありますが、何らかの理由でCentOS7はKVMでモニターを検出できないため、デフォルトで「不明なディスプレイ」に設定されています。 1024x768の解像度で(モニターをシステムに直接接続すると、すべてがより高い解像度で検出して動作します)。

より大きな解像度を使用できるように手動で構成するにはどうすればよいですか?

編集してみましたmonitors.xml新しい解像度ですが、再起動時にCentOS7は変更を拒否し、検出できないと言い、1024x768に戻しました。

9
Dave

私はここにソリューションのベースを見つけました: https://askubuntu.com/questions/186288/how-to-detect-and-configure-an-output-with-xrandr

CentOSを含む最新のLinuxディストリビューションでは、xrandrライブラリが画面の解像度や回転などの処理を担当します。システムは自動検出しないため、モニターが対応できるモードについて手動でシステムに通知する必要があります。

KVMでも同じ問題があり、サンプル出力は私のコンピューターからのものです。

ステップ1:

ポートの名前を見つけます。これはVGA1、HDMI1のようなものになります。 /var/log/Xorg.0.logから見つけることができるか、xrandrユーティリティを使用できます。

> xrandr
Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

私のKVMはVGA1と呼ばれるVGAポートに接続されています。KVMは自動検出をブロックするため、xrandrは1024x768の解像度しか見ませんでした。

ステップ2:

新しいモードについてxrandrに伝えます。モードは、ビデオ表示パラメータが付加された単なる文字列です。

ステップ2.1

必要な表示パラメータを見つけます。 1600x900 @ 60 Hzが欲しかった:

> gtf 1600 900 60 -x
# 1600x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 119.00 MHz
  Modeline "1600x900_60.00"  119.00  1600 1696 1864 2128  900 901 904 932  -HSync +Vsync

ステップ2.2

Gtfコマンドの値を使用して、xrandrで新しいモードを作成します。

> xrandr --newmode "1600x900" 119.00  1600 1696 1864 2128  900 901 904 932  -HSync +Vsync

最初のパラメータは新しいモードの名前です。実際には、好きな名前を付けることができます。後続の手順では同じ名前を使用します。

ステップ3

VGA1が1600x900と呼ばれるモードを理解することをxrandrに伝えます。

> xrandr --addmode VGA1 1600x900

ステップ4

新しいモードに切り替えるようにxrandrに指示します。

> xrandr --output VGA1 --mode 1600x900

注:間違えたためにモニターが実際に新しいモードを認識しない場合、空白の画面が表示されます。

空白の画面が表示される場合は、盲目的に次のように入力して回復できます。

> xrandr --output VGA1 --mode 1024x768

別の方法としては、SSH経由で別のコンピューターから接続し、コンソールではなくSSH経由でこのコマンドを実行します。

手順5

再起動中には保持されないため、newmode、addmode、outputコマンドを自動化するスクリプトを作成します。

14
Kevin Keane

これがほぼ解決策であることに同意します。これにより、画面が適切な解像度になりました。

$ cvt 1920 1080 60
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

ただし、画面の左側と右側の両方に2つの主要な黒い列があります。なんらかのオーバースキャンだと思います。

そのため、起動時にxorg.logから取得したいくつかの値をgrepする必要がありました。

$ grep 1080 /var/log/Xorg.0.log
[  2316.000] (II) modeset(0): Modeline "1920x1080"x0.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.5 kHz eP)

したがって、cvtの値をXorg.0.logの値に置き換えた後、正しい画面レイアウトが得られました。

$ xrandr --newmode "1920x1080_60.00" 148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync
1
Niels Roskam

ほぼ同じ状況で、上記の回答はこれを修正する方法についてのより完全な説明の1つですが、32インチのSamsungを2560x1440でレンダリングするには、さらに1レベル上げる必要がありました。

gtfは、タイミングを取得するために上記で使用された方法であり、ほとんど機能しますが、2560x1440に対応するモードを取得できません。私は-rスイッチを付けてcvtプログラムを使用しました(これには必要であり、crtには適していません。ブランキングなしでライブできるデバイスのみ)。

~% cvt -r  2560 1440 60
# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
Modeline "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync

このタイミングモードは、gtfによって提供される上記の情報の代わりに使用され、魅力のように機能しました。これをX11システムに「ベイク」できるようにしたいのですが、スクリプトを作成して追加し、モードに切り替えたので、うまく機能しました。

そして、私の老化した目は巨大なモニターを愛しています。超過のようなものは何もありません...

(次のモードの追加と切り替えを行うスクリプト)

 #!/bin/bash
 # Used to get timing: cvt -r  2560 1440 60
xrandr --newmode  "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
xrandr --addmode HDMI1 "25 60x1440R"
xrandr --output HDMI1 --mode "2560x1440R"
1
Schatzi

上記と他の「解決策」を試すために貴重な時間を数時間費やした後、私はこれに遭遇しました:

http://elrepo.org/tiki/kernel-ml

0
il60304