GNU/Linux >> Linux の 問題 >  >> Linux

システム全体の端末で環境を切り替えると呼ばれますか?

私は現在、Robot Operating System(ROS)を使用して自律型ドローンを作成しようとしています。これを行うために、 Raspbian Liteをインストールしました (ジェシー Raspberry Pi 3 現在、 ROSKineticを使用しています その上に。 Raspbian Liteだから 、インストールに付属するウィンドウマネージャーやデスクトップ環境はありませんでした。 Openbox Window Managerを使用することにしました 便宜上、その上にターミナルを設置しました。 sudo startxと呼ぶだけです 、ウィンドウマネージャが開き、 Ctrlでアクセスできます。 + alt + F2 `。

ここで私の質問は、システム全体の端末内で新しいセッションを作成するプロセスを理解していないという事実にあります。そもそもシステムワイドターミナルと呼んでいますか? Ctrlを使用して呼び出しているこれらのセッションは何ですか +シフト + F ?それらのいくつかはディスプレイマネージャーに対応しています そのうちのいくつかは端末に対応しています 、私が想像しているように、デスクトップ環境全体 収容することもできます。調べることができるマニュアルページはありますか?

承認された回答:

それらはカーネル仮想端末デバイスです 、ターミナルエミュレータによって物理フレームバッファと人間入力デバイスに多重化されます カーネル自体に組み込まれているプログラム。カーネル上で実行されているアプリケーションプログラムからは、シリアル端末デバイスなどの他の端末デバイスと同じように見えます。 。 (回線の規律はありますが、モデム制御はありません。)

システムはターミナルログインを実装します gettyを実行することによって プログラム(または同等のもの)とlogin ユーザーの資格情報を受け入れ、ログインセッションを呼び出すプログラム 。

Xサーバー プログラムは、物理フレームバッファと人間入力デバイスも使用する必要があります。それらをカーネルターミナルエミュレータと共有することをネゴシエートする必要があります。これは、1つの仮想端末を割り当て、それをカーネル端末エミュレーターから切断するようにカーネルに指示することによって行われます。

したがって、Xサーバーが特定の端末で「実行」されているように見えるのはなぜですか。カーネル端末エミュレーターは、割り当てられた仮想端末に切り替えるためのホットキーコードを認識すると、フレームバッファーと人間が入力するデバイスの制御をXサーバーに渡します。 Xサーバーが別の仮想端末に切り替えるためのホットキーコードを検出すると、Xサーバーは制御を取り消します。

これらのホットキーコードは必ずしも対称的ではありません。私のシステムの1つでは、仮想端末#2に切り替えるためにカーネル端末エミュレーションプログラムによって実装されたホットキーコードは Altです。 + F2 一方、同じアクションに対してXサーバーによって実装されるホットキーコードは Ctrlです。 + Alt + F2

グラフィカルログインに関しては 、ディスプレイマネージャー greeterを使用したXサーバーの起動を処理します プログラム。もちろん、Xサーバーを直接起動し、ディスプレイマネージャーを使用していません。ユーザーの資格情報が認証されると、デスクトップマネージャー デスクトップ環境を表示します 、Xクライアントのセットで構成されます さまざまな程度の複雑さのアプリケーション。複雑なデスクトップ環境の場合、デスクトップバスを介して相互接続された多数のサーバープログラムがあります。 。 (私のシステムの1つでは、いわゆる「小型で軽量」のGNOMEエディターにはD-BUSブローカーと他の9つが必要です。 実行するサーバープログラム。)

関連:Journalctl:ターミナルでテキストが切り捨てられないようにする方法は?

これらのXクライアントプログラムの一部はその他である可能性があります ターミナルエミュレーター、LXTerminal、Unicode RXVT、GNOMEターミナル、Terminate、roxterm、evilvte、xtermなどのユーザースペースエミュレーター。これらは、物理フレームバッファや人間が入力するデバイスを直接使用せず、疑似端末を使用します。 デバイス。

さらに読む

  • https://superuser.com/a/723442/38062
  • https://unix.stackexchange.com/a/316279/5132
  • https://unix.stackexchange.com/a/194218/5132
  • https://unix.stackexchange.com/a/178807/5132
  • https://stackoverflow.com/a/39302351/340790

Linux
  1. Linuxターミナルでファイルをコピーする

  2. Linuxターミナルでファイルの名前を変更します

  3. Linuxターミナルでファイルを移動する

  1. Linuxシステムの現在のランレベルはどれくらいですか?

  2. 「最後の」コマンドの出力?

  3. Ubuntuオペレーティングシステムで再起動をスケジュールする

  1. Linuxターミナルでラジオを聞く

  2. LinuxシステムのIDを変更する方法

  3. system() の出力をファイルにリダイレクトする方法は?