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


20

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

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

  • ログインした後、ユーザーのセッションのルートはどのプロセスですか?

  • どのプロセスを開始する必要があり、なぜですか?Gnome、KDE、FVWM、または単純なシェルのいずれが起動されているかにかかわらず、デスクトップに依存しない回答を探しています。

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

私は右の起動後に実行しているデーモンの全体の動物園を持っていることがわかったので、私は、求めています:systemd-journaldsystemd-udevddbus-daemonsystemd-logind。しかし、十分ではない:これらとは別に、超軽量PDFビューアを実行すると、zathura さらにと私のセッションを移入しdbus-launchdbus-daemonat-spi2-registryd、そしてat-spi-bus-launcher、後者の打ち上げさらに別のdbus-daemon。それらのどれも以前にそこにいなかったし、誰も招待されていないが、彼らは家の周りにとどまり、ログアウトするまで気味が悪い。私はここに何かが欠けていると確信しています...

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

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

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


4
すべてのディストリビューションが独自の処理を行うため、この質問には答えられません。さらに悪いことに、KDEとGNOMEのデスクトップ環境は大きく異なり、X Windowing Systemの起動後に何が起こるかに関係しています。さらに悪いことに、ディストリビューションはそれを行う方法を変更します-比較的新しいsystemdに言及します。ディストリビューションに依存しない回答が必要な場合は、「Linuxカーネルがinitを起動し、他のすべてはinitの構成方法に依存します」です。この回答は広範で浅いものですが、すべての深い回答については、少なくともディストリビューションバージョンまで質問を絞り込む必要があります。
トールステンスターク14年

1
質問を分けてください。たとえば、「ルートセッション」プロセスとしてgnome-sessionとstartkdeを探すように指示できますが、これにはさらに説明が必要です。
トールステンスターク14年

1
@ thorsten-staerk:「すべてのディストリビューションが独自の処理を行うため、答えられません」それで、どのデーモンが実行されているかについて、私は推測できないと言っているのですか?本当に信じられない。申し訳ありませんが、質問を分割しても、探している答えは得られません。しかし、私は「デスクトップに依存しない」と言い直そうとします。セッションで予想される、最も一般的な分母、または実行中のデーモンの最小セット(およびそれぞれの正当化)を探しています。彼らはどのように相互作用し、どのようにセッションの異なる種類で、このセットが変更(dbusdは、SSH経由で端末セッションにあるのでしょうか??)
ステファン

1
Linuxは、LCDディスプレイ以外のデバイスで実行されています。AppStoreもカメラも持たない携帯電話でも実行されています。また、Samsung Galaxyとメインフレームで実行されています。理にかなって、数テラバイトのRAMを使用でき、数キロバイトに収まります。Linuxセッションの最も一般的な分母はLinuxであり、必要なものを選択するのがsometimesい「選択の自由」があることを恐れています。デスクトップについては、最も一般的な分母をリストしようとしますが、「すべて」ではなく、dbusについて質問する方が良いでしょう。
トールステンスターク14年

回答:


8

私はあなたの質問にとても魅了されたので、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。これは通常、ユーザーには見えないものです。たとえば、ウィンドウマネージャーを呼び出して独自のウィンドウをフォーカスするアプリケーション
  • ユーザーがCTRL_ALT_F *端末にログインできるようにするログイン。ps -Aで見られるログインのプロセスは、systemdの場合はsystemd-logindになります(ディストリビューションによっても異なる場合があります)
  • 多くの名前を持つudev。たとえば、私にとっては、systemd-udevdとしてps -Aで見つけることができます。たとえば、/ dev /のデバイスハンドルを、接続するデバイス(USBディスクなど)に割り当てます。
  • / etc / crontabのタイムテーブルに基づいてコマンドを実行するcron。また、起動時にコマンドを開始する「@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から起動します(タスクのスケジューリングを参照)。

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

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


1
これは、Linuxシステムを起動する手順の一般的な概要です。特定のソフトウェア(grub、lilo、u-bootなど)は変更されますが、機能は同じです。initプロセスに最も興味があるのではないかと思うので、ステップ8と9に焦点を合わせます。sysvinit(/ etc / inittab)は、systemd OR upstartを支持してほとんど廃止されました。どちらもsysvinitサービスを実行/監視できます。
dturvene 14年

アプリケーションがウィンドウをフォーカスするためにd-busを介して呼び出すことはありません。-
ロバートSiemer

0

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

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

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

がんばろう。


電気泡立て器の操作方法に関するすべてを知っていても、ケーキの作り方については何もわかりません。「興味のあるパッケージのすべてのドキュメントを読む」-これはかなり役に立たない答えです。あなたが言及したドキュメンテーションは、これらのことが何をするかを教えてくれました。しかし、私はそれらが何のために使われているのか知りたいです。「いくつかの良い質問をしてください」—私の質問は単純明快です:ドキュメントはどこにありますか?
ステファン14年

1
おそらく、あなたが期待する答えを得るために尋ねる方法を学ぶ必要があるでしょう。この場合、私は非常に便利なのFAQにあなたを指すようにたいスマートウェイの質問をする方法

0

回答のバージョンを提供する前に、いくつかの定義から始めましょう。

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

カーネルから離れるほど、2つの「システム」が実際に共通点を持つ可能性は低くなります。つまり、「Modern Linux Session」についての賢明な定義は実際にはないということです。

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

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.