Mengapa Server Ubuntu memiliki graphical.target sebagai target systemd default?

20

Saya telah menjadi pengguna Ubuntu untuk sementara waktu, dan di tempat kerja kami memiliki banyak server Ubuntu VM , yang semuanya berjalan Ubuntu 14.04 LTSuntuk menyebarkan aplikasi web kami, database, dan alat-alat lainnya.

Saya sedang belajar Ubuntu 16.04 LTS, desktop dan server, untuk dapat meningkatkan server produksi kami dalam waktu dekat tanpa menimbulkan masalah.

Sejak Ubuntu 15.04, initdan upstarttelah digantikan oleh Systemd, jadi saya juga belajar Systemd.

Saya perhatikan bahwa komputer pengembangan saya yang menjalankan Ubuntu 16.04 Desktop Edition telah graphical.targetsebagai target systemd default, yang logis.

Tapi kemudian saya perhatikan bahwa server pengujian yang menjalankan Ubuntu 16.04 Server edisi juga menggunakan graphical.targetsebagai target systemd default.

$ systemctl get-default
graphical.target

Jadi saya bingung. Server tidak memiliki lapisan grafis, jadi bagaimana target defaultnya graphical.target?

Edit # 0

Seperti yang disarankan Rinzwind di komentar, saya melihat target untuk melihat apakah itu aktif atau tidak ...

dan jawabannya adalah YA:

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.

Jadi saya sedikit lebih bingung.

Edit # 1

Jawaban Mark Stosberg menunjukkan fakta bahwa itu display-manager.serviceadalah bagian dari pohon dependensi graphical.targetpada server 16,04 sendiri, dan dia menambahkan bahwa tidak ada manajer tampilan yang diinstal atau dijalankan pada mesinnya. Saya melihat itu juga, dan memang, di server saya ketergantungan ini ada:

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

...

Dan target ini memiliki lingkaran merah di sebelah kiri, di mana sebagian besar dependensi lainnya berwarna hijau.

Dan kali ini hasilnya konsisten:

[email protected]:~$ systemctl status display-manager.service 
● display-manager.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

Tapi di sini ada hal aneh lainnya: pada edisi desktop saya, display-manager.serviceini bukan ketergantungan graphical.target:

[email protected]:~ $ systemctl list-dependencies graphical.target | grep display
[email protected]:~ $ 

Tetapi saya bahkan menemukan alternatif karena saya menjalankan Ubuntu-Gnomedengan lightdmmengganti window manager default:

[email protected]:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
Rémi B.
sumber
Anda kehilangan 1 informasi penting: graphical.targetaktif?
Rinzwind
Terima kasih atas komentar Anda. Tapi nyatanya, itu aktif! Apa artinya ?
Rémi B.
Hmm menemukan sesuatu yang relevan.
Rinzwind
bagian yang mungkin masuk akal: "... or accounts-daemon.service" Server akan memerlukan ini juga saya anggap. Meskipun membingungkan untuk sedikitnya.
Rinzwind

Jawaban:

10

Terlepas dari nama targetnya, tidak ada grafis yang berjalan di Ubuntu Server 16.04. Anda dapat perintah ini untuk memeriksa dan membandingkannya dengan desktop Anda jika Anda suka:

systemctl list-dependencies graphical.target 

Pada server Ubuntu 16.04 saya, saya melihat bahwa target tergantung pada "display-manager.service", tetapi tidak ada manajer tampilan yang diinstal atau dijalankan.

Saya berharap server Ubuntu diatur dengan cara ini untuk semacam konsistensi, meskipun saya setuju itu membingungkan.

Mark Stosberg
sumber
Menyetujui pary yang membingungkan. Seseorang mungkin berpikir tidak menetapkan cukup sudah
Rinzwind
@Rinzwind, saya tidak mengerti frasa Anda "tidak menyetel de sudah cukup" (bahasa Inggris bukan bahasa utama saya)
Rémi B.
Anda mungkin benar tentang perlunya konsistensi. Apakah edisi server dibuat dari desktop alih-alih dengan cara alternatif dari debian?
Rémi B.
'de' berarti lingkungan desktop. Saya ingat pemberitahuan dari beberapa tahun yang lalu di mana dikatakan Ubuntu mulai menggunakan sistem basis1; tapi saya tidak tahu apakah mereka menggunakan server untuk membuat desktop atau jika mereka menggunakan desktop untuk membuat server. "graphical.target" mengatur layanan desktop; itu dapat memiliki nilai "" dan kemudian tidak memulai DE tetapi membingungkan itu (saya berharap bahwa untuk menyimpan nilai dan server untuk menggunakan "multi-user.target"
Rinzwind
8

Dari manual redhat :

Misalnya, unit graphical.target, yang digunakan untuk memulai sesi grafis, memulai layanan sistem seperti Manajer Tampilan GNOME (gdm.service) atau Layanan Akun (accounts-daemon.service) dan juga mengaktifkan multi-pengguna. unit target. Demikian pula, unit multi-user.target memulai layanan sistem penting lainnya seperti NetworkManager (NetworkManager.service) atau D-Bus (dbus.service) dan mengaktifkan unit target lain bernama basic.target.

Jadi tidak salah untuk mengaturnya karena tidak mengaktifkan manajer tampilan ketika layanan yang menangani layanan tampilan tidak diatur.

Untuk server Anda dapat mengaturnya multi-user.targettetapi tidak diperlukan. Sepertinya Anda berakhir di runlevel 4 jika Anda melakukannya dan runlevel 5 ketika Anda tidak.

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
sumber
Saya akan sangat menghargai umpan balik pada downvote.
Rinzwind
1

Memeriksa lebih detail tingkat pertama ketergantungan pohon target 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

sebuah membandingkannya dengan tingkat pertama dari multi-user.target:

[email protected]:~$ 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

...

Saya melihat bahwa jika kita menghapus target cacat di graphical.targetpohon ( display-manager.service, systemd-update-utmp-runlevel.service, ureadahead.service), hampir semua yang tersisa:

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

sudah termasuk dalam tingkat pertama pohon dependensi multi-user.target.

Meskipun, kita harus bertanya lagi tentang fakta ini, karena graphical.targettergantung dari multi-user.target, tidak perlu semua hal ini. Kedengarannya cukup aneh.

Tapi setelah pengurangan ini, tetap satu layanan accounts-daemon.service, seperti, Rinzwind tunjukkan dalam komentarnya .

Jadi kita dapat mengasumsikan bahwa graphical.targetdiperlukan untuk memuat accounts-daemon.service.

Namun, dalam hal itu lagi aneh, karena saya pikir akan lebih masuk akal untuk membuat target khusus untuk tujuan itu, mungkin sesuatu seperti accounts.targetatau istilah yang tepat untuk menggambarkannya. Bagaimanapun, mungkin pengembang Canonical memiliki alasan untuk membuat mereka berpikir seperti itu.

Tapi saya tetap penasaran ingin tahu alasannya.

Rémi B.
sumber