Какова цель файлов /etc/X11/Xsession.d?

Вопрос или проблема

Я использую Linux и у меня есть несколько вопросов о Xsession. Насколько я понимаю, сценарий /etc/X11/Xsession запускается, когда начинается сессия X Window System.

Но когда я изучал код в /etc/X11/Xsession.d, я немного запутался. Скрипты здесь запускаются по порядку, 99x11-common_start — последний, который содержит exec $STARTUP. Я зарегистрировал эту переменную, и она просто init --user.

Так что получается, что весь этот скрипт написан только для того, чтобы запустить init –user? Я удалил некоторые файлы и вошел в систему с другим пользователем, и все работало нормально (например, 75dbus_dbus-launch). Значит ли это, что Xsession просто запускает init --user?

Что насчет D-Bus сессии, кто ее запускает?

Запускается два демона D-Bus при загрузке: --session и --system. Демон в Xsession — это автобус сессии (пользователь владеет им).

~$ ps aux | grep dbus-daemon
message+   944  0.0  0.0  44504  5640 ?        Ss   07:55   0:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
sneetsh+  2428  0.0  0.0  43864  4340 ?        Ss   07:56   0:00 dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-xcqH0l6FdF
sneetsh+  2522  0.0  0.0  43028  3932 ?        S    07:56   0:00 /usr/bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
sneetsh+  4593  0.0  0.0  14328   964 pts/19   S+   08:17   0:00 grep --color=auto dbus-daemon

Вывод выше был получен из Ubuntu 16.04 и использует systemd.

  • Системный автобус запускается с помощью systemd

    ~$ service dbus status
    ● dbus.service - D-Bus System Message Bus
       Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
       Active: active (running) since Wed 2016-07-06 07:55:13 CET; 27min ago
         Docs: man:dbus-daemon(1)
     Main PID: 944 (dbus-daemon)
        Tasks: 1
       Memory: 3.5M
          CPU: 1.574s
       CGroup: /system.slice/dbus.service
               └─944 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
    
  • Автобус сессии запускается с помощью upstart

    ~$ initctl status dbus 
    dbus start/running, process 2428
    
    ~$ initctl show-config dbus 
    dbus
      start on starting xsession-init
    

    (Имейте в виду, что это демон upstart сессии, а не системный upstart)

Ubuntu до 15.10 использует upstart init.

Вы можете проверить это, используя pstree -up. Другой способ — зарегистрировать переменную DBUS_SESSION_BUS_ADDRESS из файла, который вы удалили, как вы сделали с STARTUP.

Ответ или решение

Файлы в директории /etc/X11/Xsession.d/ используются для настройки и управления процессом сессии X Window System на системах Linux. Когда пользователь начинает сессию X, выполняется общий скрипт /etc/X11/Xsession, который последовательно запускает все скрипты из директории /etc/X11/Xsession.d/. Эти скрипты могут выполнять различные действия, такие как настройка окружения, запуск необходимых сервисов или выполнение пользовательских программ.

Основные цели файлов в /etc/X11/Xsession.d/:

  1. Настройка окружения: Скрипты могут устанавливать переменные окружения и конфигурации, необходимые для полноценной работы сессии. Например, они могут изменять настройки путей, шрифтов и других параметров.

  2. Запуск необходимых демонов: Некоторые скрипты отвечают за запуск демонов, таких как dbus — сеансовый шина сообщений, которую приложения могут использовать для межпрограммного взаимодействия.

  3. Порядок выполнения: Скрипты запускаются в алфавитном порядке, и последними являются те, которые инициируют основную сессию. Например, скрипт 99x11-common_start завершает процесс, запускающий оболочку, как указано в переменной STARTUP, что часто является init --user, что позволяет запрашивать пользовательский уровень обслуживания.

  4. Модульность и расширяемость: Благодаря использованию отдельных файлов в этой директории, администраторы и пользователи могут легко добавлять или удалять функциональность без изменения основного скрипта сессии.

Запуск dbus:

Система использует два типа демонов dbus: системный и сеансовый. Системный демон запускается, как правило, при инициализации системы с помощью systemd, тогда как сеансовый демон, необходимый для управления сеансовыми сообщениями для текущего пользователя, запускается в процессе Xsession, что позволяет приложениям обмениваться данными в рамках одной пользовательской сессии.

Ответы на ваши вопросы:

  1. Неужели Xsession только запускает init --user? Нет, это не совсем так. В процессе запуска Xsession исполняются все скрипты из /etc/X11/Xsession.d/, которые могут включать в себя разные настройки и вызов программ, необходимых для начала работы графической сессии, а не только init --user.

  2. Кто запускает сеансовый dbus? Сеансовый dbus, как уже отмечалось выше, запускается из скриптов в директории /etc/X11/Xsession.d/, и, как правило, отвечает за взаимодействие приложений во время работы сеанса X.

Если вы удалили некоторые скрипты и они не мешают вашей работе с сессией, скорее всего, эти скрипты не были критически важными для вашего конкретного окружения или конфигурации.

При дальнейших манипуляциях с файлами в /etc/X11/Xsession.d/, рекомендуется внимательно отслеживать зависимые процессы и конфигурации, чтобы избежать непредвиденных проблем с графической сессией.

Оцените материал
Добавить комментарий

Капча загружается...