Я ищу хорошую обзорную документацию, описывающую стек демонов и сервисов, задействованных в современной сессии Linux. Несмотря на то, что я прочитал различные документы о dbus
, и systemd
я до сих пор не понимаю общую картину.
В частности, я ищу ответы на эти вопросы (не отвечайте на вопросы, они должны только уточнить, какую документацию я ищу):
После входа в систему, какой процесс является корнем сеанса пользователя?
Какие процессы следует запустить и почему? Я ищу независимый от рабочего стола ответ, независимо от того, запущен ли Gnome, KDE, FVWM или простая оболочка.
Какую роль играют все эти демоны? Кто из них будет бежать один, а кто зависит от других? Кто должен начинаться кем, почему и как долго? И кто должен поддерживать этот зоопарк?
Я спрашиваю, потому что я обнаружил , что у меня есть целый зоопарк демоны работают сразу после загрузки: systemd-journald
, systemd-udevd
, dbus-daemon
,
systemd-logind
. Но не достаточно: Помимо этого, бег ультра-легкого PDF-просмотрщик zathura
дополнительно заполнит мою сессию с dbus-launch
,
dbus-daemon
, at-spi2-registryd
и at-spi-bus-launcher
, последним запуском еще другим dbus-daemon
. Никого из них там не было, никто не был приглашен, но они будут оставаться в доме, вызывая у меня жуткое чувство, пока я не выйду из дома. Я уверен, что что-то здесь не хватает ...
Другой пример: после входа в систему у меня systemd
работает пользовательский UID, но я понятия не имею, что он должен делать (начиная с версии 206, я думаю, я не должен использовать это в качестве диспетчера сеансов, верно?). У него есть дочерний процесс (sd-pam)
, о котором я не смог найти документацию.
Что они делают? В чем идея этой установки?
Чтобы прояснить мою точку зрения: в «старые времена» было достаточно знать,
login
что запустит мою оболочку входа в систему ( bash
выполняя ~/.profile
), и с этого момента я мог бы продолжить создание сеанса, в зависимости от обстоятельств, может быть, запуска screen
или startx
.
источник
Ответы:
Я так очарован твоим вопросом, что ответил на него на linuxintro . Вот ответ с учетом вашего вопроса:
При загрузке типичного ПК с Linux, такого как Fedora, SUSE или Ubuntu, действия будут следующими:
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 (см. Планирование задач ).
16) Когда пользователь вошел в систему графически и щелкнул значок, чтобы открыть консоль, обычно выполняется bash. Bash сначала выполнит .bashrc, затем
17) Когда пользователь открывает оболочку входа в систему, это означает, что ему необходимо войти в систему с помощью пароля или авторизованного ключа. Он может сделать это на консоли CTRL_ALT_F1 или с помощью ssh'ing для компьютера, например, localhost. Затем будут выполнены сценарии .sh из /etc/profile.d и .bashrc.
источник
Ответ 42. Торстен Стаерк объяснил уже основную проблему в комментариях.
Чтобы помочь вам получить общее представление, вам нужно знать, что программное обеспечение для Linux и Open Source написано и поддерживается миллионами добровольцев и компаний. Так что не просто идти в ногу с ростом.
С другой стороны, есть много документации: справочные страницы для каждого программного обеспечения, хорошее объяснение, что такое D-Bus , списки рассылки для разработчиков, Google и так далее. Так что потратьте несколько лет и прочитайте все документы по интересующим вас пакетам. Если вам это нужно быстрее, просто задайте несколько хороших вопросов в Unix & Linux .
Удачи.
источник
Прежде чем дать свою версию ответа, позвольте мне начать с пары определений
Linux == Ядро операционной системы "Система Linux ==" Сеанс системы, построенной вокруг ядра Linux "Сессия в системе Linux ==" Некоторый набор связанных пользовательских программ, работающих в системе Linux "
Чем дальше вы уходите от ядра, тем менее вероятно, что любые две «системы» будут иметь что-то общее. Это означает, что на самом деле нет никакого разумного определения «современной сессии Linux»
Честно говоря, ожидание того, что должна быть какая-то всеобъемлющая системная документация, которая дает вам все компоненты, - это ожидание, которое просто не будет выполнено в большинстве частей мира с открытым исходным кодом. Разработчики открытого исходного кода пишут программы для решения (или повторного решения!) Конкретных проблем, о которых они заботятся, поэтому они просто документируют эту часть, если это так! :-)
Возможно, вам повезет больше с руководствами, доступными в коммерческих дистрибутивах Linux, однако, учитывая консервативный характер большинства из них, вы можете утверждать, что их выпуски не являются «современными»!
Ключевой совет, который я бы дал, заключается в том, что системы Unix / Linux в очень общем смысле являются иерархическими. Раньше я говорил людям, что мне нравятся nix-системы, потому что я мог начать с init, и оттуда понимать все, что происходит в системе. Systemd и друзья немного изменили это, но основной принцип тот же - начните сверху и снизу - программы, составляющие сессию, как правило, начинаются с момента, когда вы входите в иерархию. Итак, если вы используете ssh, вы, вероятно, просто получите оболочку по умолчанию, как это работает ssh. Если вы войдете в систему с помощью графического интерфейса, вы получите все, что запускается вашим менеджером входа, как работает ваш менеджер входа в систему.
Многие платформы рабочего стола делают это немного сложнее, запуская различные демоны обслуживания на уровне пользователя или системы - и иногда они запускаются по требованию, когда запускается первая программа, которая нуждается в них - посмотрите параметры командной строки программы, которые вы запускаете, вполне вероятно, что есть возможность остановить это поведение и запустить приложение в «голом» режиме.
К сожалению, это означает, что «чтение документации по отдельным программам» - это единственный способ понять все это, и что для сессии не существует «минимального набора демонов» - это просто способ, которым данный дистрибутив работает для данного метод входа в систему / доступа, и это зависит от распределения, рабочего стола и метода входа в систему.
источник