最新のLinuxセッションに関係するデーモンとサービスのスタックを説明する優れた概要ドキュメントを探しています。 dbus
とsystemd
に関するさまざまなドキュメントを読んだことがありますが、それでも全体像はわかりません。
特に、私はこれらの質問に対する答えを探しています(質問に答えないでください。彼らは私が探しているドキュメントの種類を明確にするだけです):
ログイン後、どのプロセスがユーザーのセッションのルートになりますか?
開始する必要があるプロセスとその理由Gnome、KDE、FVWM、または単純なシェルが起動しているかどうかに関係なく、デスクトップにとらわれない答えを探しています。
これらすべてのデーモンはどのような役割を果たしますか?それらのどれが単独で実行され、他に依存しますか?誰が、誰が、なぜ、どのくらいの期間、始めるべきか。そして、誰がその動物園を維持すべきですか?
起動直後にデーモンのZoo全体が実行されていることがわかったので、私は尋ねています:_systemd-journald
_、_systemd-udevd
_、_dbus-daemon
_、_systemd-logind
_。しかし、十分ではありません。これらとは別に、超軽量PDFビューアzathura
furtherを実行すると、セッションに_dbus-launch
_、_dbus-daemon
_、_at-spi2-registryd
_が入力されます、および_at-spi-bus-launcher
_、後者はさらに別の_dbus-daemon
_を起動します。誰もそこに行ったことがなく、招待されたこともありませんが、私がログアウトするまで、彼らは家の周りにとどまり、不気味な気持ちになります。ここに何か欠けていると確信しています...
別の例:ログイン後、ユーザーUIDでsystemd
を実行していますが、どうすればよいかわかりません(バージョン206以降、私は 想定されていません を使用すると思いますそれはセッションマネージャーとしてですよね?)子プロセス_(sd-pam)
_があり、ドキュメントを見つけることができませんでした。
彼らは何をしますか?このセットアップの背後にあるアイデアは何ですか?
私の視点を明確にするために:「昔」では、login
がログインシェル(bash
、_~/.profile
_を実行)を起動することを知っていれば十分であり、その時点から状況に応じて、セッションの構築を続行します。おそらく、screen
またはstartx
を起動します。
私はあなたの質問にとても魅了されたので、私はそれに答えました linuxintroで 。ここにあなたの質問に合わせた答えがあります:
Fedora、SUSE、UbuntuなどのLinuxを搭載した一般的なPCを起動すると、手順は次のようになります。
ディストリビューション、バージョン、構成に応じて、initが実行されます
これらすべてのプログラムの意味は、次のようなサービスを開始することです。
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スクリプトが実行されます。
自分のバージョンの答えを与える前に、いくつかの定義から始めましょう
Linux == 'オペレーティングシステムカーネル "Linuxシステム==" Linuxカーネルを中心に構築されたある種のシステム "Linuxシステムでのセッション==" Linuxシステムで実行されている関連ユーザープログラムのセット "
カーネルから離れれば離れるほど、2つの「システム」が実際に共通のものを持つ可能性は低くなります。つまり、「モダンLinuxセッション」の賢明な定義は実際にはありません。
率直に言って、すべてのコンポーネントを提供するある種の包括的なシステムドキュメントがあるべきだという期待は、オープンソースの世界のほとんどの部分で満たされない期待です。オープンソース開発者は、関心のある特定の問題を解決(または再解決!)するプログラムを作成しているので、その部分を文書化するだけです。 :-)
商用のLinuxディストリビューションで利用できるマニュアルの方が幸運かもしれませんが、それらのほとんどの保守的な性質を考えると、それらのリリースは「最新」ではないと主張できます。
私が与える重要なアドバイスは非常に一般的な意味では unix/linuxシステムは相殺的であるということです。私は、initから始めて、そこからシステムで起こっていることすべてを理解できるので、nixシステムが好きだと人々に言っていました。 Systemdとその仲間たちはそれを少し変えましたが、基本的な原則は同じです-上から始めて下に向かって-「セッションを構成するプログラム」は通常、あなたが相続人に入った時点から始まったものです。したがって、sshを実行すると、デフォルトのシェルが何であれ、おそらくそれがsshの動作と同じように取得されます。グラフィカルインターフェースを介してログインすると、ログインマネージャーによって開始されたものがすべて取得されます。これがログインマネージャーの動作方法です。
多くのデスクトップフレームワークは、さまざまなユーザーまたはシステムレベルのサービスデーモンを実行することにより、これを少し難しくします-時には、それらを必要とする最初のプログラムが起動するときにオンデマンドで起動されます-のコマンドラインオプションを見てください実行中のプログラムの場合、この動作を停止し、アプリケーションを「ベア」モードで実行するオプションがかなりあります。
残念ながら、これは「個々のプログラムのドキュメントを読む」ことがすべてを理解する唯一の方法であり、セッションに「デーモンの最小セット」がないことを意味します-特定のディストリビューションが特定のに対して機能する方法がありますログイン/アクセス方法、およびその配布、デスクトップ、およびログイン方法固有。
答えは42です。ThorstenStaerkは、主な問題をコメントですでに説明しています。
全体像をつかむのを助けるために、Linuxとオープンソースのソフトウェアは何百万人ものボランティアと企業によって書かれ、維持されていることを知る必要があります。したがって、成長に追いつくのは簡単ではありません。
一方で、たくさんのドキュメントがあります:すべてのソフトウェアのマンページ、 D-Bus が何であるかについての良い説明、開発者のメーリングリスト Google など。ですから、数年かけて、興味のあるパッケージのすべてのドキュメントを読んでください。もっと早く必要な場合は、 nix&Linux でいくつかの良い質問をしてください。
幸運を。