virshコンソールとttyサイズ


11

ssh経由で接続する仮想化サーバーがあります。ウィンドウのサイズを変更すると、自動的にサーバーに伝播されます。stty -a列と行の値を確認することで、最も簡単に確認できます。

次にvirsh console、KVMベースの仮想マシンのシリアルインターフェイスに接続するために使用します。ウィンドウのサイズを変更すると、仮想サーバーに反映されません。これはstty -a、ウィンドウサイズを変更しても仮想マシンで更新されないをチェックすると最も簡単に確認できます。これは、ターミナルで改行が正しく機能せず、クライアントのウィンドウサイズがサーバーのデフォルトサイズと一致しない限り、フォーマット(emacs、manなど)をウィンドウサイズに依存するアプリケーションが混乱することを意味します。

回避策は、ウィンドウサイズをsttyを使用してクライアントウィンドウと一致するように手動で設定することですが、この情報を取得して仮想マシンのウィンドウサイズを自動的に設定する方法はないのでしょうか。

回答:


7

ほとんどの場合、この問題はシェルで回避できます。

コマンド:

eval `/usr/bin/resize`

COLUMNSおよびLINESシェル変数を適切に設定してから、それらをエクスポートします。したがって、bashでは、次のものを.bash_profile(または.profile、使用するものに応じて)に追加できます。

PROMPT_COMMAND="eval `/usr/bin/resize`"

またはzshで:

function precmd {
    eval `/usr/bin/resize`
}

そのため、各プロンプトが表示される直前にサイズ変更が実行されます。その効果は、結果としてウィンドウの変更が即座に処理されるsshやtelnetの効果とは異なりますが、おそらくこれが最良の方法だと思います。


少しハックですが、それでも良い解決策です。ありがとうございました!
pehrs

xtermのresizeコマンドなしで実行するには、この回答も参照してください。unix.stackexchange.com
a

2

TelnetおよびSSHには、これらの設定を構成するための帯域外チャネルがあります。シリアルインターフェースにはありません。参照:http : //tools.ietf.org/html/rfc1073およびhttp://tools.ietf.org/html/rfc4254#page-14


2
制御チャネルが関係していることがわかりました。しかし、問題は残っています。KVMベースの仮想マシンのコンソールにはより良い回避策がありますか?(私はマシンの再構成を気にしません)
pehrs

0

マークの答えに追加するだけで、Serverfaultではコメントできません。

ターゲットドメインがOpenBSD 6.6の場合、サイズ変更は別の場所にあり、少なくともxbase66セットが必要です。

さらに、デフォルトのkshを使用している場合は、次のコマンドを実行するだけで十分です。

eval `/usr/X11R6/bin/resize`

これがRed HatのKVM管理ガイドに含まれていないのは残念です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.