GNU/Linux >> Belajar Linux >  >> Linux

Memahami systemd saat startup di Linux

Dalam Belajar mencintai systemd , artikel pertama dalam seri ini, saya melihat fungsi dan arsitektur systemd dan kontroversi seputar perannya sebagai pengganti program init SystemV dan skrip startup. Pada artikel kedua ini, saya akan mulai menjelajahi file dan alat yang mengelola urutan startup Linux. Saya akan menjelaskan urutan startup systemd, cara mengubah target startup default (runlevel dalam istilah SystemV), dan cara beralih secara manual ke target yang berbeda tanpa melalui reboot.

Saya juga akan melihat dua alat systemd yang penting. Yang pertama adalah systemctl command, yang merupakan sarana utama untuk berinteraksi dengan dan mengirim perintah ke systemd. Yang kedua adalah journalctl , yang menyediakan akses ke jurnal sistem yang berisi sejumlah besar data riwayat sistem seperti kernel dan pesan layanan (baik pesan informasional maupun pesan kesalahan).

Pastikan untuk menggunakan sistem non-produksi untuk pengujian dan eksperimen dalam artikel ini dan yang akan datang. Sistem pengujian Anda harus memiliki desktop GUI (seperti Xfce, LXDE, Gnome, KDE, atau lainnya) yang diinstal.

Saya menulis di artikel saya sebelumnya bahwa saya berencana untuk membuat unit systemd dan menambahkannya ke urutan startup di artikel ini. Karena artikel ini menjadi lebih panjang dari yang saya perkirakan, saya akan menyimpannya untuk artikel berikutnya dalam seri ini.

Menjelajahi startup Linux dengan systemd

Selengkapnya tentang sysadmin

  • Aktifkan blog Sysadmin
  • Perusahaan Otomatis:panduan untuk mengelola TI dengan otomatisasi
  • eBook:Kemungkinan Otomatisasi untuk SysAdmins
  • Kisah dari lapangan:Panduan administrator sistem untuk otomatisasi TI
  • eBook:Panduan Kubernetes untuk SRE dan sysadmin
  • Artikel sysadmin terbaru

Sebelum Anda dapat mengamati urutan startup, Anda perlu melakukan beberapa hal untuk membuat urutan boot dan startup terbuka dan terlihat. Biasanya, sebagian besar distribusi menggunakan animasi startup atau layar splash untuk menyembunyikan pesan rinci yang seharusnya ditampilkan selama startup dan shutdown host Linux. Ini disebut layar boot Plymouth pada distro berbasis Red Hat. Pesan-pesan tersembunyi tersebut dapat memberikan banyak informasi tentang startup dan shutdown ke sysadmin mencari informasi untuk memecahkan masalah bug atau hanya belajar tentang urutan startup. Anda dapat mengubahnya menggunakan konfigurasi GRUB (Grand Unified Boot Loader).

File konfigurasi GRUB utama adalah /boot/grub2/grub.cfg , tetapi, karena file ini dapat ditimpa ketika versi kernel diperbarui, Anda tidak ingin mengubahnya. Sebagai gantinya, ubah /etc/default/grub file, yang digunakan untuk mengubah pengaturan default grub.cfg .

Mulailah dengan melihat versi /etc/default/grub saat ini yang belum dimodifikasi berkas:

[root@testvm1 ~]# cd /etc/default; cat grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=disimpan
GRUB_DISABLE_SUBMENU =true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_testvm1-swap rd.lvm.
lv=fedora_testvm1/root rd.lvm.lv=fedora_testvm1/swap rd.lvm.lv=fedora_
testvm1/usr rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
[root@testvm1 default]#

Bab 6 dari dokumentasi GRUB berisi daftar semua entri yang mungkin di /etc/default/grub file, tapi saya fokus pada hal berikut:

  • Saya mengubah GRUB_TIMEOUT , jumlah detik untuk hitungan mundur menu GRUB, dari lima hingga 10 untuk memberikan sedikit lebih banyak waktu untuk merespons menu GRUB sebelum hitungan mundur mencapai nol.
  • Saya menghapus dua parameter terakhir di GRUB_CMDLINE_LINUX , yang mencantumkan parameter baris perintah yang diteruskan ke kernel saat boot. Salah satu parameter ini, rhgb singkatan dari Red Hat Graphical Boot, dan ini menampilkan animasi ikon Fedora kecil selama inisialisasi kernel alih-alih menampilkan pesan waktu boot. Yang lainnya, tenang parameter, mencegah menampilkan pesan startup yang mendokumentasikan kemajuan startup dan kesalahan yang terjadi. Saya menghapus keduanya rhgb dan tenang karena sysadmin perlu melihat pesan-pesan ini. Jika terjadi kesalahan saat boot, pesan yang ditampilkan di layar dapat menunjukkan penyebab masalah.

Setelah Anda melakukan perubahan ini, file GRUB Anda akan terlihat seperti:

[root@testvm1 default]# cat grub
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=disimpan
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_testvm1-swap rd.lvm.
lv=fedora_testvm=fedora_test root rd.lvm.lv=fedora_testvm1/swap rd.lvm.lv=fedora_
testvm1/usr"
GRUB_DISABLE_RECOVERY="false"
[root@testvm1 default]#

grub2-mkconfig program menghasilkan grub.cfg file konfigurasi menggunakan konten /etc/default/grub file untuk mengubah beberapa pengaturan GRUB default. grub2-mkconfig program mengirimkan outputnya ke STDOUT . Ini memiliki -o opsi yang memungkinkan Anda menentukan file yang akan dikirimi aliran data, tetapi pengalihan juga mudah digunakan. Jalankan perintah berikut untuk memperbarui /boot/grub2/grub.cfg file konfigurasi:

[root@testvm1 grub2]# grub2-mkconfig> /boot/grub2/grub.cfg
Membuat file konfigurasi grub ...
Ditemukan gambar linux:/boot/vmlinuz-4.18.9- 200.fc28.x86_64
Gambar initrd ditemukan:/boot/initramfs-4.18.9-200.fc28.x86_64.img
Gambar linux ditemukan:/boot/vmlinuz-4.17.14-202.fc28. x86_64
Gambar initrd ditemukan:/boot/initramfs-4.17.14-202.fc28.x86_64.img
Gambar linux ditemukan:/boot/vmlinuz-4.16.3-301.fc28.x86_64
Ditemukan gambar initrd:/boot/initramfs-4.16.3-301.fc28.x86_64.img
Ditemukan gambar linux:/boot/vmlinuz-0-rescue-7f12524278bd40e9b10a085bc82dc504
Ditemukan gambar initrd:/boot/ initramfs-0-rescue-7f12524278bd40e9b10a085bc82dc504.img
selesai
[root@testvm1 grub2]#

Reboot sistem pengujian Anda untuk melihat pesan startup yang seharusnya tersembunyi di balik animasi boot Plymouth. Tetapi bagaimana jika Anda perlu melihat pesan startup dan belum menonaktifkan animasi boot Plymouth? Atau sudah, tetapi pesan mengalir terlalu cepat untuk dibaca? (Yang mereka lakukan.)

Ada beberapa opsi, dan keduanya melibatkan file log dan jurnal systemd—yang merupakan teman Anda. Anda dapat menggunakan kurang perintah untuk melihat konten /var/log/messages mengajukan. File ini berisi pesan boot dan startup serta pesan yang dihasilkan oleh sistem operasi selama operasi normal. Anda juga dapat menggunakan journalctl perintah tanpa opsi apa pun untuk melihat jurnal systemd, yang pada dasarnya berisi informasi yang sama:

[root@testvm1 grub2]# journalctl
-- Log dimulai pada Sat 2020-01-11 21:48:08 EST, berakhir pada Jum 2020-04-03 08:54:30 EDT. --
11 Jan 21:48:08 kernel f31vm.both.org:Linux versi 5.3.7-301.fc31.x86_64 ([email protected]) (gcc versi 9.2.1 20190827 ( Red Hat 9.2.1-1) (GCC)) #1 SMP Sen Okt
11 Jan 21:48:08 kernel f31vm.both.org:Baris perintah:BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.3 .7-301.fc31.x86_64 root=/dev/mapper/VG01-root untuk melanjutkan=/dev/mapper/VG01-swap rd.lvm.lv=VG01/root rd>
11 Jan 21:48:08 f31vm.both.org kernel:x86/fpu:Mendukung fitur XSAVE 0x001:'x87 floating point registers'
11 Jan 21:48:08 f31vm.both.org kernel:x86/fpu:Mendukung fitur XSAVE 0x002:'SSE registers'
11 Jan 21:48:08 f31vm.both.org kernel:x86/fpu:Mendukung fitur XSAVE 0x004:'AVX registers'
11 Jan 21:48:08 f31vm.both. org kernel:x86/fpu:xstate_offset[2]: 576, xstate_sizes[2]: 256
11 Jan 21:48:08 f31vm.both.org kernel:x86/fpu:Fitur xstate diaktifkan 0x7, ukuran konteksnya adalah 832 byte, menggunakan format 'standar'.
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-provide d peta RAM fisik:
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x00000000000000000-0x000000000009fbff] dapat digunakan
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x000000000009fc00-0x000000000009ffff] dicadangkan
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x00000000000f00000-0x00000000000fffff] dicadangkan
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x0000000000100000-0x00000000dffeffff] dapat digunakan
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x00000000dfff0000-0x00000000dfffffff] ACPI data
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x00000000fec00000-0x00000000fec00fff] dicadangkan
11 Jan 21:48:08 f31vm.both.org kernel:BIOS- e820:[mem 0x00000000fee00000-0x00000000fee00fff] dicadangkan
11 Jan 21:48:08 f31vm.both.org kernel:BIOS-e820:[mem 0x00000000fffc00000-0x00000000ffffffff] dicadangkan
11 Jan 21:48:08 f31vm kernel .both.org:BIOS-e820:[mem 0x0000000100000000-0x000000041ffffffff] dapat digunakan
11 Jan 2 1:48:08 f31vm.both.org kernel:NX (Execute Disable) perlindungan:aktif
11 Jan 21:48:08 f31vm.both.org kernel:SMBIOS 2.5 hadir.
11 Jan 21:48:08 f31vm.both.org kernel:DMI:innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
11 Jan 21:48:08 f31vm.both.org kernel:Hypervisor terdeteksi:KVM
11 Jan 21:48:08 f31vm.both.org kernel:kvm-clock:Menggunakan msrs 4b564d01 dan 4b564d00
11 Jan 21:48:08 f31vm.both.org kernel:kvm-clock:cpu 0, msr 30ae01001, jam cpu utama
11 Jan 21:48:08 f31vm.both.org kernel:kvm-clock:menggunakan offset terjadwal dari 8250734066 siklus
11 Jan 21:48:08 kernel f31vm.both.org :clocksource:kvm-clock:mask:0xffffffffffffff max_cycles:0x1cd42e4dffb, max_idle_ns:881590591483 ns
11 Jan 21:48:08 f31vm.both.org kernel:tsc:Terdeteksi prosesor 2807,992 MHz 11 Jan
48:08 f31vm.both.org kernel:e820:perbarui [mem 0x00000000-0x000000fff] dapat digunakan ==> dicadangkan
11 Jan 21:48:08 f31vm.both.org kernel:e820:hapus [mem 0x000a000 0-0x000fffff] dapat digunakan

Saya memotong aliran data ini karena panjangnya bisa ratusan ribu atau bahkan jutaan baris. (Daftar jurnal di stasiun kerja utama saya adalah 1.188.482 baris.) Pastikan untuk mencoba ini pada sistem pengujian Anda. Jika telah berjalan selama beberapa waktu—bahkan jika telah di-boot ulang berkali-kali—sejumlah besar data akan ditampilkan. Jelajahi data jurnal ini karena mengandung banyak informasi yang bisa sangat berguna saat melakukan penentuan masalah. Mengetahui seperti apa data ini untuk boot dan startup normal dapat membantu Anda menemukan masalah saat terjadi.

Saya akan membahas jurnal systemd, journalctl perintah, dan cara menyortir semua data tersebut untuk menemukan apa yang Anda inginkan secara lebih mendetail di artikel mendatang dalam seri ini.

Setelah GRUB memuat kernel ke dalam memori, kernel harus diekstrak terlebih dahulu dari versi terkompresi file sebelum dapat melakukan pekerjaan yang berguna. Setelah kernel mengekstrak dirinya sendiri dan mulai berjalan, kernel akan memuat systemd dan menyerahkan kendali padanya.

Ini adalah akhir dari proses boot. Pada titik ini, kernel dan systemd Linux sedang berjalan tetapi tidak dapat melakukan tugas produktif apa pun untuk pengguna akhir karena tidak ada lagi yang berjalan, tidak ada shell untuk menyediakan baris perintah, tidak ada proses latar belakang untuk mengelola jaringan atau tautan komunikasi lainnya, dan tidak ada yang memungkinkan komputer melakukan fungsi produktif apa pun.

Systemd sekarang dapat memuat unit fungsional yang diperlukan untuk membawa sistem ke status operasi target yang dipilih.

Target

Target systemd mewakili status sistem Linux saat ini atau yang diinginkan. Sama seperti skrip awal SystemV, target menentukan layanan yang harus ada agar sistem dapat berjalan dan aktif dalam status tersebut. Gambar 1 menunjukkan kemungkinan target run-state dari sistem Linux menggunakan systemd. Seperti yang terlihat di artikel pertama seri ini dan di halaman manual bootup systemd (man bootup), ada target perantara lain yang diperlukan untuk mengaktifkan berbagai layanan yang diperlukan. Ini dapat mencakup swap.target , timer.target , local-fs.target , dan banyak lagi. Beberapa target (seperti basic.target ) digunakan sebagai pos pemeriksaan untuk memastikan bahwa semua layanan yang diperlukan aktif dan berjalan sebelum beralih ke target tingkat yang lebih tinggi berikutnya.

Kecuali jika diubah saat boot di menu GRUB, systemd selalu memulai default.target . default.target file adalah tautan simbolis ke file target yang sebenarnya. Untuk workstation desktop, ini biasanya akan menjadi graphical.target , yang setara dengan runlevel 5 di SystemV. Untuk server, defaultnya lebih cenderung menjadi multi-pengguna.target , yang seperti runlevel 3 di SystemV. darurat.target file mirip dengan mode pengguna tunggal. Target dan layanan adalah unit sistem.

Tabel berikut, yang saya sertakan dalam artikel sebelumnya dalam seri ini, membandingkan target systemd dengan runlevel startup SystemV yang lama. Alias ​​target systemd disediakan oleh systemd untuk kompatibilitas mundur. Alias ​​target memungkinkan skrip—dan sysadmin—untuk menggunakan perintah SystemV seperti init 3 untuk mengubah runlevel. Tentu saja, perintah SystemV diteruskan ke systemd untuk interpretasi dan eksekusi.

target systemd tingkat run SystemV alias target Deskripsi
default.target     Target ini selalu diberi alias dengan tautan simbolis ke multi-pengguna.target atau graphical.target . systemd selalu menggunakan default.target untuk memulai sistem. default.target tidak boleh diberi alias ke halt.target , matikan.target , atau boot ulang.target .
graphical.target 5 runlevel5.target Target multi-pengguna. dengan GUI
  4 runlevel4.target Tidak terpakai. Runlevel 4 identik dengan runlevel 3 di dunia SystemV. Target ini dapat dibuat dan disesuaikan untuk memulai layanan lokal tanpa mengubah multi-pengguna.target default default .
multi-pengguna.target 3 runlevel3.target Semua layanan berjalan, tetapi hanya antarmuka baris perintah (CLI)
  2 runlevel2.target Multi-pengguna, tanpa NFS, tetapi semua layanan non-GUI lainnya berjalan
rescue.target 1 runlevel1.target Sistem dasar, termasuk memasang sistem file dengan hanya menjalankan layanan paling dasar dan shell penyelamat di konsol utama
darurat.target S   Mode pengguna tunggal—tidak ada layanan yang berjalan; sistem file tidak dipasang. Ini adalah tingkat operasi paling dasar dengan hanya shell darurat yang berjalan di konsol utama bagi pengguna untuk berinteraksi dengan sistem.
halt.target     Menghentikan sistem tanpa mematikannya
boot ulang.target 6 runlevel6.target Mulai ulang
matikan.target 0 runlevel0.target Menghentikan sistem dan mematikan daya

Setiap target memiliki satu set dependensi yang dijelaskan dalam file konfigurasinya. systemd memulai dependensi yang diperlukan, yang merupakan layanan yang diperlukan untuk menjalankan host Linux pada tingkat fungsionalitas tertentu. Ketika semua dependensi yang tercantum dalam file konfigurasi target dimuat dan dijalankan, sistem berjalan pada level target tersebut. Jika mau, Anda dapat meninjau urutan startup systemd dan target runtime di artikel pertama dalam seri ini, Belajar mencintai systemd .

Menjelajahi target saat ini

Banyak distribusi Linux default untuk menginstal antarmuka desktop GUI sehingga sistem yang diinstal dapat digunakan sebagai workstation. Saya selalu menginstal dari drive USB boot Fedora Live dengan desktop Xfce atau LXDE. Bahkan ketika saya menginstal server atau jenis infrastruktur host lainnya (seperti yang saya gunakan untuk router dan firewall), saya menggunakan salah satu instalasi ini yang menginstal desktop GUI.

Saya dapat menginstal server tanpa desktop (dan itu tipikal untuk pusat data), tetapi itu tidak memenuhi kebutuhan saya. Bukannya saya memerlukan desktop GUI itu sendiri, tetapi instalasi LXDE menyertakan banyak alat lain yang saya gunakan yang tidak ada dalam instalasi server default. Ini berarti lebih sedikit pekerjaan untuk saya setelah instalasi awal.

Tetapi hanya karena saya memiliki desktop GUI tidak berarti masuk akal untuk menggunakannya. Saya memiliki KVM 16-port yang dapat saya gunakan untuk mengakses antarmuka KVM dari sebagian besar sistem Linux saya, tetapi sebagian besar interaksi saya dengan mereka adalah melalui koneksi SSH jarak jauh dari workstation utama saya. Cara ini lebih aman dan menggunakan lebih sedikit sumber daya sistem untuk menjalankan multi-pengguna.target dibandingkan dengan graphical.target.

Untuk memulai, periksa target default untuk memverifikasi bahwa itu adalah graphical.target :

[root@testvm1 ~]# systemctl get-default
graphical.target
[root@testvm1 ~]#

Sekarang verifikasi target yang sedang berjalan. Itu harus sama dengan target default. Anda masih dapat menggunakan metode lama, yang menampilkan runlevel SystemV lama. Perhatikan bahwa runlevel sebelumnya ada di sebelah kiri; itu N (yang berarti Tidak Ada), menunjukkan bahwa runlevel tidak berubah sejak host di-boot. Angka 5 menunjukkan target saat ini, seperti yang didefinisikan dalam terminologi SystemV lama:

[root@testvm1 ~]# runlevel
N 5
[root@testvm1 ~]#

Perhatikan bahwa halaman manual runlevel menunjukkan bahwa runlevel sudah usang dan menyediakan tabel konversi.

Anda juga dapat menggunakan metode systemd. Tidak ada jawaban satu baris di sini, tetapi memberikan jawaban dalam istilah systemd:

[root@testvm1 ~]# systemctl list-units --type target
UNIT                   LOAD   ACTIVE SUB    DESKRIPSI              
basic.target     aktif       target aktif     dimuat aktif Volume Terenkripsi    
getty.target           dimuat aktif aktif Perintah Masuk              
graphical.target       dimuat aktif Antarmuka Grafis aktif      
local-fs-prebr.target   multi-user.target      loaded active active Multi-User System          
network-online.target  loaded active active Jaringan sedang Online          target   dimuat active active Network                    
nfs-client.target      loaded active active NFS client services        
nss-user-lookup.target loading active active Pencarian Nama Grup dan Pengguna
paths.target dimuat aktif aktif Paths                      
remote-fs-pre.target   dimuat aktif active Sistem File Jarak Jauh (Pra)  
remote-fs.target       dimuat aktif Sistem File Jarak Jauh aktif        
rpc_pipefs .rpc_pipefs aktif .Target
irisan. Target memuat irisan aktif aktif
soket active Swap                      
sysinit.target         dimuat aktif aktif Inisialisasi Sistem      
timers.target          loaded active active Timers            
telah dimuat dengan benar. Status aktivasi unit tingkat tinggi, yaitu generalisasi SUB.
SUB    =Status aktivasi unit tingkat rendah, nilainya bergantung pada jenis unit.

21 unit dimuat terdaftar. Lewati --all untuk melihat unit yang dimuat tetapi juga tidak aktif.
Untuk menampilkan semua file unit yang diinstal, gunakan 'systemctl list-unit-files'.

Ini menunjukkan semua target yang sedang dimuat dan aktif. Anda juga dapat melihat graphical.target dan multi-pengguna.target . multi-pengguna.target diperlukan sebelum graphical.target dapat dimuat. Dalam contoh ini, graphical.target aktif.

Beralih ke target lain

Beralih ke multi-pengguna.target itu mudah:

[root@testvm1 ~]# systemctl isolate multi-user.target 

Tampilan sekarang harus berubah dari desktop GUI atau layar login ke konsol virtual. Masuk dan daftar unit sistem yang aktif saat ini untuk memverifikasi graphical.target . itu tidak lagi berjalan:

[root@testvm1 ~]# systemctl list-units --type target 

Pastikan untuk menggunakan runlevel perintah untuk memverifikasi bahwa itu menunjukkan "runlevel" sebelumnya dan saat ini:

[root@testvm1 ~]# runlevel
5 3

Mengubah target default

Sekarang, ubah target default menjadi multi-pengguna.target sehingga akan selalu boot ke multi-pengguna.target untuk antarmuka baris perintah konsol daripada antarmuka desktop GUI. Sebagai pengguna root pada host pengujian Anda, ubah ke direktori tempat konfigurasi systemd dipertahankan dan lakukan daftar cepat:

[root@testvm1 ~]# cd /etc/systemd/system/; ll
drwxr-xr-x. 2 root root 4096 25 Apr  2018  basic.target.wants

lrwxrwxrwx. 1 root root   36 13 Agustus 16:23  default.target -> /lib/systemd/system/graphical.target
lrwxrwxrwx. 1 root root   39 25 Apr  2018  display-manager.service -> /usr/lib/systemd/system/lightdm.service
drwxr-xr-x. 2 root root 4096 25 Apr  2018  getty.target.wants
drwxr-xr-x. 2 root root 4096 18 Agustus 10:16  graphical.target.wants
drwxr-xr-x. 2 root root 4096 25 Apr  2018  local-fs.target.wants
drwxr-xr-x. 2 root root 4096 30 Okt 16:54  multi-user.target.wants

[root@testvm1 system]#

Saya mempersingkat daftar ini untuk menyoroti beberapa hal penting yang akan membantu menjelaskan bagaimana systemd mengelola proses boot. Anda seharusnya dapat melihat seluruh daftar direktori dan tautan di mesin virtual Anda.

default.target entri adalah tautan simbolik (symlink, tautan lunak) ke direktori /lib/systemd/system/graphical.target . Daftar direktori itu untuk melihat apa lagi yang ada di sana:

[root@testvm1 system]# ll /lib/systemd/system/ | less 

Anda akan melihat file, direktori, dan lebih banyak tautan dalam cantuman ini, tetapi carilah secara khusus untuk multi-pengguna.target dan graphical.target . Sekarang tampilkan konten default.target , yang merupakan tautan ke /lib/systemd/system/graphical.target :

[root@testvm1 system]# cat default.target 
#  SPDX-License-Identifier:LGPL-2.1+
#
#  File ini adalah bagian dari systemd.
#
#  systemd adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang dan/atau memodifikasinya
#  di bawah persyaratan GNU Lesser General Public License sebagaimana diterbitkan oleh
#  Free Software Foundation; baik versi 2.1 dari Lisensi, atau
#  (sesuai pilihan Anda) versi yang lebih baru.

[Unit]
Description=Graphical Interface
Documentation=man:systemd .special(7)
Memerlukan=multi-pengguna.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
[root@testvm1 system]#

Tautan ini ke graphical.target file menjelaskan semua prasyarat dan persyaratan yang diperlukan antarmuka pengguna grafis. Saya akan menjelajahi setidaknya beberapa opsi ini di artikel berikutnya dalam seri ini.

Untuk mengaktifkan host untuk boot ke mode multi-pengguna, Anda perlu menghapus tautan yang ada dan membuat tautan baru yang mengarah ke target yang benar. Jadikan PWD /etc/systemd/system , jika belum:

[root@testvm1 system]# rm -f default.target 
[root@testvm1 system]# ln -s /lib/systemd/system/multi-user.target default.target

Cantumkan default.target tautan untuk memverifikasi bahwa itu tertaut ke file yang benar:

[root@testvm1 system]# ll default.target 
lrwxrwxrwx 1 root root 37 Nov 28 16:08 default.target -> /lib/systemd/system/multi-user.target
[ root@testvm1 system]#

Jika tautan Anda tidak terlihat persis seperti ini, hapus dan coba lagi. Buat daftar konten default.target tautan:

[root@testvm1 system]# cat default.target 
#  SPDX-License-Identifier:LGPL-2.1+
#
#  File ini adalah bagian dari systemd.
#
#  systemd adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang dan/atau memodifikasinya
#  di bawah persyaratan GNU Lesser General Public License sebagaimana diterbitkan oleh
#  Free Software Foundation; baik versi 2.1 dari Lisensi, atau
#  (sesuai pilihan Anda) versi yang lebih baru.

[Unit]
Description=Multi-User System
Documentation=man :systemd.special(7)
Memerlukan=basic.target
Conflicts=rescue.service rescue.target
Setelah=basic.target rescue.service rescue.target
AllowIsolate=yes
[root@testvm1 system]#

default.target —yang sebenarnya merupakan tautan ke multi-pengguna.target pada titik ini—sekarang memiliki persyaratan yang berbeda di [Unit] bagian. Itu tidak memerlukan pengelola tampilan grafis.

Menyalakan ulang. Mesin virtual Anda harus boot ke login konsol untuk konsol virtual 1, yang diidentifikasi pada tampilan sebagai tty1. Sekarang setelah Anda mengetahui cara mengubah target default, ubah kembali ke graphical.target menggunakan perintah yang dirancang untuk tujuan tersebut.

Pertama, periksa target default saat ini:

[root@testvm1 ~]# systemctl get-default 
multi-user.target
[root@testvm1 ~]# systemctl set-default graphics.target
Dihapus /etc/systemd /system/default.target.
Membuat symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
[root@testvm1 ~]#

Masukkan perintah berikut untuk langsung membuka graphical.target dan halaman login pengelola tampilan tanpa harus reboot:

[root@testvm1 system]# systemctl isolate default.target 

Saya tidak tahu mengapa istilah "isolasi" dipilih untuk sub-perintah ini oleh pengembang systemd. Penelitian saya menunjukkan bahwa itu mungkin merujuk pada menjalankan target yang ditentukan tetapi "mengisolasi" dan mengakhiri semua target lain yang tidak diperlukan untuk mendukung target. Namun, efeknya adalah untuk mengalihkan target dari satu target run ke target lainnya—dalam hal ini, dari target multi-pengguna ke target grafis. Perintah di atas sama dengan perintah init 5 lama di skrip start SystemV dan program init.

Masuk ke desktop GUI, dan verifikasi bahwa itu berfungsi sebagaimana mestinya.

Meringkas

Artikel ini menjelajahi urutan startup systemd Linux dan mulai menjelajahi dua alat systemd penting, systemctl dan journalctl . Itu juga menjelaskan cara beralih dari satu target ke target lainnya dan mengubah target default.

Artikel berikutnya dalam seri ini akan membuat unit systemd baru dan mengonfigurasinya untuk dijalankan saat startup. Ini juga akan melihat beberapa opsi konfigurasi yang membantu menentukan di mana dalam urutan unit tertentu akan mulai, misalnya, setelah jaringan aktif dan berjalan.

Sumber daya

Ada banyak informasi tentang systemd yang tersedia di internet, tetapi banyak yang singkat, tumpul, atau bahkan menyesatkan. Selain sumber daya yang disebutkan dalam artikel ini, halaman web berikut menawarkan informasi yang lebih mendetail dan andal tentang startup systemd.

  • Proyek Fedora memiliki panduan praktis yang baik untuk systemd. Ini memiliki hampir semua yang perlu Anda ketahui untuk mengonfigurasi, mengelola, dan memelihara komputer Fedora menggunakan systemd.
  • Proyek Fedora juga memiliki lembar contekan bagus yang merujuk silang perintah SystemV lama ke perintah systemd yang sebanding.
  • Untuk informasi teknis terperinci tentang systemd dan alasan pembuatannya, lihat deskripsi Freedesktop.org tentang systemd.
  • "Lebih banyak sistem menyenangkan" dari Linux.com menawarkan informasi dan tips sistem yang lebih canggih.

Ada juga serangkaian artikel yang sangat teknis untuk sysadmin Linux oleh Lennart Poettering, perancang dan pengembang utama systemd. Artikel-artikel ini ditulis antara April 2010 dan September 2011, tetapi masih relevan sekarang seperti dulu. Banyak hal bagus lainnya yang telah ditulis tentang systemd dan ekosistemnya didasarkan pada makalah ini.

  • Memikirkan kembali PID 1
  • systemd untuk Administrator, Bagian I
  • systemd untuk Administrator, Bagian II
  • systemd untuk Administrator, Bagian III
  • systemd untuk Administrator, Bagian IV
  • systemd untuk Administrator, Bagian V
  • systemd untuk Administrator, Bagian VI
  • systemd untuk Administrator, Bagian VII
  • systemd untuk Administrator, Bagian VIII
  • systemd untuk Administrator, Bagian IX
  • systemd untuk Administrator, Bagian X
  • systemd untuk Administrator, Bagian XI

Linux
  1. Panduan untuk memahami pustaka perangkat lunak Linux di C

  2. Menambahkan layanan baru ke sistem Linuxd

  3. Memahami Perintah Dasar Linux

  1. Kelola startup menggunakan systemd

  2. Memahami panggilan sistem di Linux dengan strace

  3. Mengganti rc.local di systemd sistem Linux

  1. Cara membuat layanan Systemd di Linux

  2. Linux – Memahami Operasi Perintah Sinkronisasi Di Linux?

  3. Memahami Desktop Linux?