再起動せずにテキストコンソールのスクロール速度を変更する方法はありますか?現在Fedoraを使用していますが、ディストリビューションとは関係のない回答に感謝します。
https://www.kernel.org/doc/Documentation/fb/vesafb.txt
カーネルを再起動せずに、上記のvesafbカーネルパラメータで "ywrap"を使用したいと思います。
答え1
stty
関係ありません。
回線規律で設定されたハードウェア回線速度がゼロでない場合、仮想端末には意味がありません。これはシリアルデバイスの回線速度を制御するので、実際のシリアルデバイスによって形成される「ターミナル」にのみ意味があります。カーネルに組み込まれた端末エミュレータはシリアルデバイスを処理しません。
ywrap
万病の歯磨き粉ではありません。
ターミナルエミュレータがサポートするディスプレイハードウェアなどのメカニズムは、ywrap
(ほぼ)フルハイトフルライン幅スクロール機能を備えたターミナルエミュレータにのみ役立ちます。
明らかな理由から、端末エミュレータはこれらのハードウェア機構を利用できない。別の言葉左右の余白をサポートしている場合、スクロール操作は全行幅をスクロールしません。ただし、Linuxカーネルに組み込まれている端末エミュレータは、最初からDECSLRM(「DEC Set Left and Right Margins」)制御シーケンス(または同様のもの)をサポートしていないため、ここで部分行スクロールは問題になりません。
しかし、高さスクロールの一部です。 Linuxカーネルの組み込み端末エミュレータするアプリケーションがスクロールに参加する画面の最初の行と最後の行を設定できるようにするDECSTBM(「DEC Set Top and Bottom Margins」)制御シーケンスをサポートします。そして、この制御シーケンスはterminfoエントリchange_scroll_region
の関数として正しくリストされていますlinux
。このようなものを使用してくださいスクロールエリア実際、フルスクリーンTUIアプリケーションでは非常に一般的です。 vim
たとえば、全幅ウィンドウをスクロールするときに使用します。
Linuxカーネル用のドライバは、fbcon
スクロール操作がフルスクリーンイメージの3/4以上を維持して移動する場合にのみ、このメカニズムを使用します。ywrap
これは、部分高さスクロールを使用するとywrap
一部のコピーも含まれるため、画面の「スクロールされていない」部分は、ハードウェアがスクロールしても同じ場所に残っているように見えるためです。みんな画面。スクロール領域が小さいほど、ywrap
ディスプレイの一部がスクロールしないように見えるようにする必要があるコピーの量が増えるため、使い勝手が悪くなります。
制御シーケンスはサポートされていません。
仮想端末とは異なり、実際の端末にはスクロール速度を選択できる制御シーケンスがある場合があります。例:DEC VTシリーズには、DECSCLM(「DEC Rolling Mode」、DEC Special Mode Flag#4)というフラグがあります。 (ECMA-48 RM制御シーケンスを介して)リセットすると、端末はできるだけ早くスクロールします。設定されている場合(ECMA-48 SM制御シーケンスを介して)、端末がゆっくりスクロールし、スクロール中に遅延が挿入されます。
Linuxカーネルに組み込まれているターミナルエミュレータが完全なDEC VTエミュレーションである場合、これはスクロール速度を制御する方法です。しかしそれは真実ではない。一部のユーザー空間端末エミュレーターはxterm
このモードフラグを実装するのが好きですが、これを行うカーネル端末エミュレーターはないことがわかっています。 Linuxカーネルに組み込まれた端末エミュレータは確かにそうではありません。
答え2
VTサブシステムにLinuxカーネルフレームバッファドライバモジュールの使用を停止するように指示すると、再起動せずに削除できます(参照:ドキュメント/コンソール/console.txt細部):
# tl;dr
reload_fb() {
echo 0 > /sys/devices/virtual/vtconsole/vtcon1/bind
rmmod uvesafb
modprobe uvesafb scroll=ywrap
}
reload_fb
警告する:vtcon0がダミードライバ(EFIなど)またはバグを持っている場合(BIOSファームウェアにはバグがある傾向がある)、動作しているfbドライバを再起動またはロードするまで動作するコンソールディスプレイを取得できない場合があります。ディスプレイのみの動作を停止します。コマンドを入力できますが、出力は表示できません。 X11は影響を受けていないようです。だから、SSH経由または同じシステム上のX端末を介してリモートでログインすることをお勧めします。
メモ:eyoung100が提案したようにこのドライバを使用する場合は、uvesafb
このパッケージもインストールする必要がありますv86d
。
ロードされたすべてのコンソールドライバを一覧表示できます。
[root@linflas ~]# cd /sys/devices/virtual/vtconsole
[root@linflas vtconsole]# grep -H "" vtcon*/[bn]*
vtcon0/bind:0
vtcon0/name:(S) dummy device
vtcon1/bind:1
vtcon1/name:(M) frame buffer device