Почему на сервере Ubuntu в качестве цели systemd по умолчанию используется graphical.target?

20

Я был пользователем Ubuntu некоторое время, и на работе у нас есть много виртуальных серверов Ubuntu , каждый из которых работает Ubuntu 14.04 LTSдля развертывания наших веб-приложений, баз данных и других инструментов.

В настоящее время я изучаю Ubuntu 16.04 LTSнастольные системы и серверы, чтобы иметь возможность обновлять наши производственные серверы в ближайшем будущем, не вызывая проблем.

Начиная с Ubuntu 15.04 initи upstartбыли заменены Systemd, так что я тоже изучаю Systemd.

Я заметил, что мой компьютер для разработки под управлением Ubuntu 16.04 Desktop Edition имеет graphical.targetцель systemd по умолчанию, что логично.

Но затем я заметил, что тестовый сервер под управлением Ubuntu 16.04 Server Edition также использует graphical.targetв качестве цели systemd по умолчанию.

$ systemctl get-default
graphical.target

Так что я в замешательстве. На сервере нет графического слоя, так как получается, что целью по умолчанию является graphical.target?

Редактировать # 0

Как Ринзвинд предложил в комментариях, я посмотрел на цель, чтобы увидеть, активна она или нет ...

и ответ ДА:

admin@server1604:~$ systemctl get-default
graphical.target

admin@server1604:~$ systemctl status graphical.target
● graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static; vendor preset: enabled)
Active: active since jeu. 2016-10-13 16:03:18 CEST; 46min ago
Docs: man:systemd.special(7)

oct. 13 16:03:18 fdea systemd[1]: Reached target Graphical Interface.

Так что я немного запутался.

Редактировать # 1

Ответ Марка Стосберга указывает на тот факт, что он display-manager.serviceявляется частью дерева зависимостей graphical.targetна его собственном сервере 16.04, и добавляет, что на его компьютере не установлен и не работает диспетчер отображения. Я тоже смотрел на это, и действительно, на моем сервере эта зависимость есть:

admin@server1604:~$ systemctl list-dependencies graphical.target 
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service

...

И у этой цели есть красный круг слева, где у большинства других зависимостей есть зеленый.

И на этот раз результат соответствует:

admin@server16.04:~$ systemctl status display-manager.service 
● display-manager.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

Но вот еще одна странная вещь: в моем настольном выпуске display-manager.serviceэто не зависимость graphical.target:

me@desktop16.04:~ $ systemctl list-dependencies graphical.target | grep display
me@desktop16.04:~ $ 

Но я даже нашел альтернативу, потому что я запускаю Ubuntu-Gnomeс lightdmзаменой оконного менеджера по умолчанию:

me@desktop16.04:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
Реми Б.
источник
Вам не хватает 1 важной информации: graphical.targetактивен?
Rinzwind
Спасибо за ваш комментарий. Но на самом деле да, это активно! Что это означает ?
Реми Б.
Хм нашел что-то актуальное.
Rinzwind
часть, которая может иметь смысл: "... или account-daemon.service" Сервер тоже будет нуждаться в этом, я бы предположил. Хотя, по меньшей мере, сбивает с толку.
Rinzwind

Ответы:

10

Несмотря на название цели, на Ubuntu Server 16.04 ничего графически не работает. Вы можете эту команду, чтобы проверить и сравнить его с вашим рабочим столом, если вам нравится:

systemctl list-dependencies graphical.target 

На моем сервере Ubuntu 16.04 я вижу, что цели зависят от "display-manager.service", но менеджер дисплеев не установлен или не работает.

Я ожидаю, что серверы Ubuntu настроены таким образом для некоторой согласованности, хотя я согласен, что это сбивает с толку.

Марк Стосберг
источник
Договорились на запутанную пару. Кто-то, вероятно, думает, что недостаточно установить де
Rinzwind
@Rinzwind, я не понимаю твоей фразы «недостаточно установить де» (английский не мой основной язык)
Реми Б.
Вы, вероятно, правы насчет необходимости последовательности. Выпущена ли серверная версия с рабочего стола вместо альтернативной версии Debian?
Реми Б.
«де» означает среду рабочего стола. Я помню сообщение от нескольких лет назад, в котором говорилось, что Ubuntu начала использовать 1 базовую систему; но я не знаю, используют ли они сервер для создания рабочего стола или используют ли они рабочий стол для создания сервера. «graphical.target» устанавливает службу рабочего стола; он может иметь значение «», а затем не запускать DE, но это сбивает с толку (я ожидаю, что для хранения значения и сервера будет использоваться «multi-user.target»
Rinzwind
8

Из руководства RedHat :

Например, модуль graphical.target, который используется для запуска графического сеанса, запускает системные службы, такие как Диспетчер отображения GNOME (gdm.service) или Служба учетных записей (accounts-daemon.service), а также активирует многопользовательский режим. целевая единица. Аналогично, модуль multi-user.target запускает другие важные системные службы, такие как NetworkManager (NetworkManager.service) или D-Bus (dbus.service), и активирует другой целевой модуль с именем basic.target.

Поэтому его установка не является неправильной, поскольку он не активирует диспетчер отображения, когда служба, которая обрабатывает службу отображения, не установлена.

Для сервера вы можете установить его, multi-user.targetно он не нужен. Похоже, вы попадаете на уровень запуска 4, если вы делаете, и уровень запуска 5, когда вы этого не делаете.

Runlevel    Target Units    Description
0   runlevel0.target, poweroff.target   Shut down and power off the system.
1   runlevel1.target, rescue.target     Set up a rescue shell.
2   runlevel2.target, multi-user.target     Set up a non-graphical multi-user system.
3   runlevel3.target, multi-user.target     Set up a non-graphical multi-user system.
4   runlevel4.target, multi-user.target     Set up a non-graphical multi-user system.
5   runlevel5.target, graphical.target  Set up a graphical multi-user system.
6   runlevel6.target, reboot.target     Shut down and reboot the system. 
Rinzwind
источник
Буду признателен за отзыв о downvote.
Rinzwind
1

Рассмотрим более подробно первый уровень древовидной зависимости цели graphical.target:

admin@server1604:~$ systemctl list-dependencies graphical.target 
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service              (disabled)
● ├─grub-common.service
● ├─irqbalance.service
● ├─mdadm.service
● ├─ondemand.service
● ├─sysstat.service
● ├─systemd-update-utmp-runlevel.service (disabled)
● ├─ureadahead.service                   (disabled)
● └─multi-user.target

сравнивая его с первым уровнем multi-user.target:

admin@server16.04:~$ systemctl list-dependencies multi-user.target
multi-user.target
● ├─apache2.service
● ├─apport.service
● ├─atd.service
● ├─cron.service
● ├─dbus.service
● ├─grub-common.service
● ├─irqbalance.service
● ├─lxcfs.service
● ├─lxd-containers.service
● ├─mdadm.service
● ├─networking.service
● ├─ondemand.service
● ├─open-vm-tools.service

...

Я заметил , что , если мы удалим отключенные цели в graphical.targetдереве ( display-manager.service, systemd-update-utmp-runlevel.service, ureadahead.service), почти все из оставшихся:

  • apache2.service
  • apport.service
  • grub-common.service
  • grub-common.service
  • irqbalance.service
  • mdadm.service
  • ondemand.service
  • и sysstat.service

уже включены в первый уровень дерева зависимостей multi-user.target.

Хотя, мы должны еще раз спросить об этом факте, потому что все graphical.targetзависит от того multi-user.target, нет ли необходимости во всем этом. Это звучит достаточно странно.

Но после этого сокращения он остается одной услугой accounts-daemon.service, как отметил Ринзвинд в своем комментарии .

Таким образом, мы можем предположить, что graphical.targetэто необходимо для загрузки accounts-daemon.service.

Тем не менее, в этом случае это снова странно, потому что, я думаю, было бы более разумно создать для этой цели специальную цель, возможно, что-то похожее accounts.targetили любой правильный термин для ее описания. В любом случае, вероятно, у разработчиков Canonical были свои причины так думать.

Но мне любопытно узнать его причины.

Реми Б.
источник