文档:Linux会话的体系结构


20

我正在寻找一份良好的概述文档,以描述现代Linux会话中涉及的守护程序和服务堆栈。尽管已经阅读了有关dbus和的各种文档systemd,但我仍然不了解。

特别是,我正在寻找这些问题的答案(不要回答这些问题,它们只应澄清我正在寻找的文档类型):

  • 登录后,用户会话的根是哪个进程?

  • 应该启动哪些过程,为什么?无论正在启动Gnome,KDE,FVWM还是简单的shell,我都在寻找与桌面无关的答案。

  • 所有这些守护程序起什么作用?他们中的哪一个将独自运行,而这取决于其他人?哪个人应该由谁开始,为什么以及要花多长时间?谁应该维护那个动物园?

我问,因为我发现我有开机后马上运行的守护进程的一个整体动物园:systemd-journaldsystemd-udevddbus-daemonsystemd-logind。但还不够:除了这些,运行超轻量级PDF查看器zathura 进一步填充我的会话dbus-launchdbus-daemonat-spi2-registryd,和at-spi-bus-launcher,后者启动另一个dbus-daemon。他们之前都没有去过那里,也没有被邀请过,但是他们会待在房子周围,给我一种令人毛骨悚然的感觉,直到我注销为止。我确定我在这里遗漏了一些东西...

另一个示例:登录后,我systemd正在使用用户的UID运行,但是我不知道应该怎么做(因为版本206,我认为我不应该将其用作会话管理器,对吗?)。它有一个子进程(sd-pam),但我找不到相关的文档。

他们在做什么?这种设置背后的想法是什么?

为了阐明我的观点:在“过去”时代,足以知道 login将启动我的登录shell(bash执行~/.profile),从那时起,我可以根据情况继续构建会话,也许是启动screenstartx


4
这个问题无法回答,因为每个发行版都有自己的功能。更糟糕的是,桌面环境KDE和GNOME差异很大,这与启动X Windowing System之后发生的情况有关。更糟糕的是,发行版改变了它们的执行方式-您提到系统化的相对较新。现在,如果您想要一个与发行版无关的答案,那就是“ Linux内核启动init,其他一切都取决于init的配置方式”。这个答案很浅,也很广泛,而对于每个深层答案,您都必须至少将问题缩小到发行版本。
Thorsten Staerk'1

1
请分解您的问题。例如,我可以告诉您寻找gnome-session和startkde作为“根会话”过程,这需要更多说明。
Thorsten Staerk'1

1
@ thorsten-staerk:“无法回答,因为每个发行版都在做自己的东西”,所以您是在说,我无法对运行哪个重做作任何假设?我真不敢相信。抱歉,将问题拆分并不能提供我要的答案。但是,我将尝试重新表述“与桌面无关”:我正在寻找会话中期望的最低公分母,或者最小数量的运行中的重载(以及每个重载的合理性)。它们如何交互以及此设置如何随不同类型的会话而变化(终端会话中是否存在dbusd?通过SSH?)
stefan

1
Linux在仅LCD显示器的设备上运行。它也可以在没有AppStore和相机的手机上运行。它还在三星Galaxy和大型机上运行。它可以-有意义-使用几个TB的RAM,并且可以容纳几千字节。恐怕Linux会话的最低共同点是Linux,而您拥有“选择自由”,有时很难选择您需要的其他东西。对于台式机,我将尝试列出最低的公分母,但最好是问有关dbus的问题,而不要问“一切”。
Thorsten Staerk,2014年

Answers:


8

您的问题让我着迷,我在linuxintro上回答了它。这是为您的问题量身定制的答案:

当典型的装有Linux的PC(如Fedora,SUSE或Ubuntu)启动时,步骤如下:

  1. BIOS运行自检
  2. BIOS加载引导扇区并执行
  3. 执行诸如grub或lilo之类的Bootloader
  4. 显示引导菜单(可选)
  5. 内核加载
  6. 初始RAM磁盘已加载
  7. 内核执行
  8. 内核执行初始化
  9. 初始化执行,具体取决于您的发行版,版本和配置

    • SysV初始化脚本或
    • 系统或
    • 暴发户

所有这些程序的意义在于启动诸如

  • dbus,允许应用程序之间进行通信,以便一个应用程序可以从另一个正在运行的应用程序中调用函数。这通常是用户不可见的,例如,一个应用程序调用窗口管理器以使其自己的窗口成为焦点
  • 登录,允许用户登录CTRL_ALT_F *终端。ps -A看到的登录过程在systemd的情况下将是systemd-logind(可能会因分布而异)
  • udev有很多名称,例如,对我来说,我用ps -A作为systemd-udevd找到它。它将/ 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启动所有可执行文件,从/ etc / xdg / autostart启动.desktop文件(请参阅计划任务)。

16)当用户以图形方式登录并单击图标以打开控制台时,通常将执行bash。Bash将首先执行.bashrc,然后

17)用户打开登录外壳时,这意味着他需要通过密码或授权密钥登录。他可以在CTRL_ALT_F1控制台上或通过切换到计算机(例如localhost)来执行此操作。然后,将执行/etc/profile.d和.bashrc中的.sh脚本。


1
这是启动linux系统步骤的良好概述。特定软件(例如grub,lilo,u-boot)已更改,但功能相同。我怀疑您对初始化过程最感兴趣,因此请专注于步骤8和9。sysvinit(/ etc / inittab)已过时,取而代之的是systemd OR新贵。这两个都可以运行/监视sysvinit服务。
dturvene 2014年

没有应用程序通过d-bus进行调用来获得窗口焦点。-–
罗伯特·西默

0

答案是42。Thorsten Staerk在评论中已经解释了主要问题。

为了帮助您全面了解,您需要知道Linux和开源软件是由数百万志愿者和公司编写和维护的。因此,要跟上增长的步伐并不容易。

另一方面,有很多文档:每个软件的手册页,很好的解释什么是D-Bus,开发人员邮件列表, Google等。因此,请花一些时间阅读所有您感兴趣的软件包文档。如果您需要更快的文档,请在Unix&Linux上问一些好问题。

祝好运。


对如何操作电动打蛋器一无所知,但对蛋糕的制作却一无所知。“阅读您感兴趣的软件包的所有文档” –这是一个非常无用的答案。您提到的文档告诉了我这些功能。但是我想知道它们的用途。“只问一些好问题” –我的问题很简单直接:文档在哪里?
stefan 2014年

1
也许您需要学习如何提出要求才能获得期望的答案。在这种情况下,我想向您指出一个非常有用的常见问题解答如何通过智能方式提问

0

在给出答案的版本之前,让我从几个定义开始

Linux =='操作系统内核'Linux系统==“围绕Linux内核构建的某种系统”在Linux系统上的会话==“在Linux系统上运行的一些相关用户程序集”

您与内核的距离越远,两个“系统”实际拥有共同点的可能性就越小。这意味着“现代Linux会话”实际上没有任何明智的定义。

坦白说,期望应该有某种可以为您提供所有组件的总体系统文档,这是在开源世界的大多数地方都无法满足的期望。开源开发人员正在编写程序来解决(或重新解决!)他们关心的特定问题-因此他们将只记录其中的一部分-如果那样!:-)

您可能会对商业linux发行版中的手册有所好运,但是,鉴于大多数发行版的保守性,您可以认为它们的发行版不是“现代的”!

我要给出的主要建议是,unix / linux系统是非常普遍的。我曾经告诉人们我喜欢nix系统,因为我可以从init开始,然后从那里了解系统上正在发生的一切。Systemd和朋友对此进行了一些更改,但是基本原理是相同的-从顶部开始,然后向下进行-“组成会话的程序”通常是从您进入喜乐的那一刻开始的程序。因此,如果您使用ssh,您可能会得到默认外壳的任何内容,因为这就是ssh的工作方式。如果您通过图形界面登录,则将获得由登录管理器启动的所有内容,因为这就是您的登录管理器的工作方式

许多桌面框架通过运行各种用户或系统级别的服务守护程序使此操作变得更加困难-有时,当需要它们的第一个程序启动时,它们将按需启动-查看命令的命令行选项。您正在运行的程序中,很可能有一些选项可以停止此行为,并以“裸机”模式运行该应用程序。

不幸的是,这确实意味着“阅读单个程序文档”是理解所有内容的唯一方法,并且会话没有“最小数量的守护程序”-这只是给定发行版针对给定工作的方式登录/访问方法,以及特定于发行版,桌面和登录方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.