回答:
確信が持てるようになった今、答えを修正しています。
ANSIシーケンスがBIOSまたはカーネルの外部で処理されていると結論付けるのは誤りでした。実際、それらはカーネルで処理されます。LinuxNewbies IRCチャネルのhnaz_のおかげで、以前見逃していたものを見つけましたdrivers/char/vt.c
。仮想端末ドライバーが使用するDigital Equipment VT102端末のエミュレーションを実装します。
だから...決定的な答えとして、仮想端末のエスケープシーケンスを処理するソースコードを確認しました:仮想端末で256色のサポートが必要な場合は、エスケープシーケンスを解析するコードを拡張した後に独自のカーネルを構築する必要がありますより広い色の仕様を処理します。
この関数はcsi_m()と呼ばれます。この変更は、Xベースのターミナルエミュレータを拡張して、より豊富なカラーコードを指定するエスケープシーケンスを処理する変更と同様にする必要があります。他の変更も必要になる可能性がありますが、ここから開始します。
kmscon
です。端末(24ビットカラーを含む)を改善しようとするユーザーランド端末だと思います。その開発は、システム化された代替案を支持して停滞していますが。
256色のRXVT / xterm / URXVT / etcは、terminfoとTERM
変数の設定によって定義されます。ほとんどのLinuxディストリビューションでは、仮想端末はで定義されて/etc/inittab
おり、端末が使用できる色の数を定義するデフォルトの端末タイプを使用します。
TTYに8色以上を使用するように指示する方法はありますか?
はい。
フレームバッファが正しい解像度/ビット深度を使用していることを確認してください。vga=773
たとえば、1024x768と256色(8ビットの色深度)を得るために、カーネルオプションに追加してみてください。
別のTERM(例:)を設定しexport TERM=foo
ます。正しいものを見つけるために実験する必要があります。動作するものが見つかった場合/etc/inittab
、仮想端末がデフォルトで実行するように変更できます(次のセクションを参照)。
この記事では、あなたに役立つ他のオプションについて説明します。ゲッティの代替品としてQingy(QingyはGettYではありません)を推奨し、TERM変数の切り替えがオプションではない場合、探しているものを提供します。
gettyの交換といえば、gettyをGNU screen
途中のどこかに交換する手順を見たことがあると誓います。現時点ではリンクが見つかりませんが、には256色のTERMがあるscreen
ので、調べてみてください。
/etc/inittab
次のような行を使用して、仮想端末をセットアップします。
# Format:
# <id>:<runlevels>:<action>:<process>
#
1:2345:respawn:/sbin/getty 38400 tty1
2:2345:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/sbin/getty 38400 tty3
ここにマンページがあります/sbin/getty
(私のDebianシステムからですので、技術的にはagetty
プログラムです):
SYNOPSIS
agetty [-8ihLmnw] [-f issue_file] [-l login_program] [-I init]
[-t timeout] [-H login_host] baud_rate,... port [term]
baud_rate,... port [term]
最後にそこに注意してください。これは、/etc/inittab
行(/sbin/getty 38400 ttyN
)のコマンドと一致します- [term]
引数がないことに注意してください。したがって、デフォルトを取得します(echo $TERM
仮想コンソールにログインした直後に実行して、システムが使用するものを確認します)。もう一度マンページから:
ARGUMENTS
term The value to be used for the TERM environment variable. This over‐
rides whatever init(8) may have set, and is inherited by login and
the shell.
動作するTERMを見つけたら、inittabでgetty行を変更し、最後に適切なTERMを追加します。
1:2345:respawn:/sbin/getty 38400 tty1 TERM-with-256-colors
2:2345:respawn:/sbin/getty 38400 tty2 TERM-with-256-colors
fbtermを見てください-256色モードで実行できる代替フレームバッファです(TTYからrootとして実行するだけです)
私はそれで複雑な成功を収めました-いくつかのアプリケーションはうまく動作し、256色を報告します ただし、Emacs(TTYで256色が欲しかった主な理由)は機能していないようです。ここでは少し議論がありますが、実際には解決されていません。
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html
ただし、mplayerは動作するはずです!
emacs
内部で実行tmux
すると、周囲の端末のエスケープシーケンスを変換する必要があるため、役立つ場合があります。
テキストの前景色と背景色を設定するためのANSIエスケープシーケンスが、ここでの制限事項です。
記憶から、これらのシーケンスはエスケープ[01; 34mのように見えます。前景には30代のコードがあり、背景には40代のコードがあると思います。
ですから、あなたが探しているものを達成する方法はないと思います。