web-dev-qa-db-ja.com

ドキュメント:Linuxセッションのアーキテクチャ

最新のLinuxセッションに関係するデーモンとサービスのスタックを説明する優れた概要ドキュメントを探しています。 dbussystemdに関するさまざまなドキュメントを読んだことがありますが、それでも全体像はわかりません。

特に、私はこれらの質問に対する答えを探しています(質問に答えないでください。彼らは私が探しているドキュメントの種類を明確にするだけです):

  • ログイン後、どのプロセスがユーザーのセッションのルートになりますか?

  • 開始する必要があるプロセスとその理由Gnome、KDE、FVWM、または単純なシェルが起動しているかどうかに関係なく、デスクトップにとらわれない答えを探しています。

  • これらすべてのデーモンはどのような役割を果たしますか?それらのどれが単独で実行され、他に依存しますか?誰が、誰が、なぜ、どのくらいの期間、始めるべきか。そして、誰がその動物園を維持すべきですか?

起動直後にデーモンのZoo全体が実行されていることがわかったので、私は尋ねています:_systemd-journald_、_systemd-udevd_、_dbus-daemon_、_systemd-logind_。しかし、十分ではありません。これらとは別に、超軽量PDFビューアzathurafurtherを実行すると、セッションに_dbus-launch_、_dbus-daemon_、_at-spi2-registryd_が入力されます、および_at-spi-bus-launcher_、後者はさらに別の_dbus-daemon_を起動します。誰もそこに行ったことがなく、招待されたこともありませんが、私がログアウトするまで、彼らは家の周りにとどまり、不気味な気持ちになります。ここに何か欠けていると確信しています...

別の例:ログイン後、ユーザーUIDでsystemdを実行していますが、どうすればよいかわかりません(バージョン206以降、私は 想定されていません を使用すると思いますそれはセッションマネージャーとしてですよね?)子プロセス_(sd-pam)_があり、ドキュメントを見つけることができませんでした。

彼らは何をしますか?このセットアップの背後にあるアイデアは何ですか?

私の視点を明確にするために:「昔」では、loginがログインシェル(bash、_~/.profile_を実行)を起動することを知っていれば十分であり、その時点から状況に応じて、セッションの構築を続行します。おそらく、screenまたはstartxを起動します。

20
stefan

私はあなたの質問にとても魅了されたので、私はそれに答えました linuxintroで 。ここにあなたの質問に合わせた答えがあります:

Fedora、SUSE、UbuntuなどのLinuxを搭載した一般的なPCを起動すると、手順は次のようになります。

  1. BIOSはセルフチェックを実行します
  2. BIOSはブートセクタをロードして実行します
  3. Grubやliloのようなブートローダーが実行されます
  4. ブートメニューが表示されます(オプション)
  5. カーネルが読み込まれる
  6. 初期RAMディスクがロードされます
  7. カーネルが実行されます
  8. カーネルがinitを実行する
  9. ディストリビューション、バージョン、構成に応じて、initが実行されます

    • SysV initスクリプトまたは
    • systemdまたは
    • 新興

これらすべてのプログラムの意味は、次のようなサービスを開始することです。

  • dbusこれにより、アプリケーション間の通信が可能になり、あるアプリケーションが実行中の別のアプリケーションから関数を呼び出すことができます。これは通常、ユーザーには見えないものです。ウィンドウマネージャーを呼び出して独自のウィンドウにフォーカスを置くアプリケーション
  • loginこれにより、ユーザーはCTRL_ALT_F *端末にログインできます。 ps -Aで見られるログインのプロセスは、systemdの場合はsystemd-logindになります(ディストリビューションによっても異なる場合があります)
  • udevこれは、たとえば私にとっては、systemd-udevdとしてps-Aを使用して見つけました。それは例えばを割り当てます。デバイスは/ dev /で、接続するデバイスに処理します。 USBディスク
  • cronは、/ etc/crontabのタイムテーブルに基づいてコマンドを実行し、ブート時にコマンドを開始する「@reboot」機能も備えています。

10)systemdによって処理されるログインプロセスは、仮想端末へのログインを待機します。通常、CTRL_ALT_F1を押すことでアクセスできます。

11)通常、デフォルトでは、initプロセスはディスプレイマネージャーを起動します。 kdm(KDEディスプレイマネージャー)またはxdm

12)ディスプレイマネージャがグラフィカルシステムを起動します。 Xorg以外にグラフィカルシステムは実際にはありません(hildonは組み込みデバイス用です)。

13)ディスプレイマネージャーは、ログイン画面を表示するようにXorgサーバーにアドバイスします


これで起動が完了し、コンピューターはユーザーがログインするのを待ちます


14)ディスプレイマネージャーのユーザーログで、KDE、GNOME、XFCE4などのデスクトップ環境が起動します。ユーザーのKDEセッションのルートプロセスはstartkdeと呼ばれ、GNOMEのルートプロセスはgnome-sessionと呼ばれ、XFCE4のルートプロセスはxfce4-sessionと呼ばれます。

15)KDEは通常、すべての実行可能ファイルを〜/ .kde/Autostartから開始し、.desktopファイルを/ etc/xdg/autostartから開始します( scheduling tasks を参照)。

16)ユーザーがグラフィカルにログインし、アイコンをクリックしてコンソールを開くと、通常、bashが実行されます。 Bashは最初に.bashrcを実行し、次に

17)ユーザーがシェルでログインを開くと、これはパスワードまたは許可されたキーを使用してログインする必要があることを意味します。彼は、CTRL_ALT_F1コンソールで、またはコンピューターにSSH接続することでこれを行うことができます。 localhost。次に、/ etc /profile.dおよび.bashrcの.shスクリプトが実行されます。

8
Thorsten Staerk

自分のバージョンの答えを与える前に、いくつかの定義から始めましょう

Linux == 'オペレーティングシステムカーネル "Linuxシステム==" Linuxカーネルを中心に構築されたある種のシステム "Linuxシステムでのセッション==" Linuxシステムで実行されている関連ユーザープログラムのセット "

カーネルから離れれば離れるほど、2つの「システム」が実際に共通のものを持つ可能性は低くなります。つまり、「モダンLinuxセッション」の賢明な定義は実際にはありません。

率直に言って、すべてのコンポーネントを提供するある種の包括的なシステムドキュメントがあるべきだという期待は、オープンソースの世界のほとんどの部分で満たされない期待です。オープンソース開発者は、関心のある特定の問題を解決(または再解決!)するプログラムを作成しているので、その部分を文書化するだけです。 :-)

商用のLinuxディストリビューションで利用できるマニュアルの方が幸運かもしれませんが、それらのほとんどの保守的な性質を考えると、それらのリリースは「最新」ではないと主張できます。

私が与える重要なアドバイスは非常に一般的な意味では unix/linuxシステムは相殺的であるということです。私は、initから始めて、そこからシステムで起こっていることすべてを理解できるので、nixシステムが好きだと人々に言っていました。 Systemdとその仲間たちはそれを少し変えましたが、基本的な原則は同じです-上から始めて下に向かって-「セッションを構成するプログラム」は通常、あなたが相続人に入った時点から始まったものです。したがって、sshを実行すると、デフォルトのシェルが何であれ、おそらくそれがsshの動作と同じように取得されます。グラフィカルインターフェースを介してログインすると、ログインマネージャーによって開始されたものがすべて取得されます。これがログインマネージャーの動作方法です。

多くのデスクトップフレームワークは、さまざまなユーザーまたはシステムレベルのサービスデーモンを実行することにより、これを少し難しくします-時には、それらを必要とする最初のプログラムが起動するときにオンデマンドで起動されます-のコマンドラインオプションを見てください実行中のプログラムの場合、この動作を停止し、アプリケーションを「ベア」モードで実行するオプションがかなりあります。

残念ながら、これは「個々のプログラムのドキュメントを読む」ことがすべてを理解する唯一の方法であり、セッションに「デーモンの最小セット」がないことを意味します-特定のディストリビューションが特定のに対して機能する方法がありますログイン/アクセス方法、およびその配布、デスクトップ、およびログイン方法固有。

0
tjb63

答えは42です。ThorstenStaerkは、主な問題をコメントですでに説明しています。

全体像をつかむのを助けるために、Linuxとオープンソースのソフトウェアは何百万人ものボランティアと企業によって書かれ、維持されていることを知る必要があります。したがって、成長に追いつくのは簡単ではありません。

一方で、たくさんのドキュメントがあります:すべてのソフトウェアのマンページ、 D-Bus が何であるかについての良い説明、開発者のメーリングリスト Google など。ですから、数年かけて、興味のあるパッケージのすべてのドキュメントを読んでください。もっと早く必要な場合は、 nix&Linux でいくつかの良い質問をしてください。

幸運を。

0
user55518