LFCS: Mengelola Proses dan Layanan Startup Sistem (SysVinit, Systemd, dan Pemula) - Bagian 7


Beberapa bulan yang lalu, Linux Foundation mengumumkan sertifikasi LFCS (Linux Foundation Certified Sysadmin), sebuah program baru yang menarik yang bertujuan memungkinkan individu dari seluruh penjuru dunia untuk dapatkan sertifikasi dalam melakukan tugas administrasi sistem dasar hingga menengah pada sistem Linux. Hal ini mencakup dukungan terhadap sistem dan layanan yang sudah berjalan, serta pencarian dan analisis masalah secara langsung, ditambah kemampuan untuk memutuskan kapan harus menyampaikan masalah kepada tim teknis.

Video berikut menjelaskan pengenalan singkat tentang Program Sertifikasi Linux Foundation.

Posting ini adalah Bagian 7 dari 10 seri tutorial, di sini, di bagian ini, kami akan menjelaskan cara Mengelola Proses dan Layanan Startup Sistem Linux, yang diperlukan untuk ujian sertifikasi LFCS.

Mengelola Proses Startup Linux

Proses booting sistem Linux terdiri dari beberapa fase yang masing-masing diwakili oleh komponen berbeda. Diagram berikut merangkum secara singkat proses booting dan menunjukkan semua komponen utama yang terlibat.

Saat Anda menekan tombol Daya pada mesin Anda, firmware yang disimpan dalam chip EEPROM di motherboard akan menginisialisasi POST ( Power-On Self Test) untuk memeriksa status sumber daya perangkat keras sistem. Ketika POST selesai, firmware kemudian mencari dan memuat boot loader tahap pertama, yang terletak di MBR atau di EFI partisi disk pertama yang tersedia, dan memberikan kendali padanya.

Metode MBR

MBR terletak di sektor pertama disk yang ditandai sebagai dapat di-boot dalam pengaturan BIOS dan berukuran 512 byte.

  1. 446 byte pertama: Bootloader berisi kode yang dapat dieksekusi dan teks pesan kesalahan.
  2. 64 byte berikutnya: Tabel Partisi berisi catatan untuk masing-masing empat partisi (primer atau perluasan). Antara lain, setiap record menunjukkan status (aktif/tidak aktif), ukuran, dan sektor awal/akhir setiap partisi.
  3. 2 byte terakhir: Angka ajaib berfungsi sebagai pemeriksaan validasi MBR.

Perintah berikut melakukan pencadangan MBR (dalam contoh ini, /dev/sda adalah hard disk pertama). File yang dihasilkan, mbr.bkp dapat berguna jika tabel partisi menjadi rusak, misalnya membuat sistem tidak dapat di-boot.

Tentu saja, agar dapat digunakan nanti jika diperlukan, kita perlu menyimpannya dan menyimpannya di tempat lain (seperti drive USB, misalnya). File itu akan membantu kita memulihkan MBR dan akan membantu kita menjalankannya kembali jika dan hanya jika kita tidak mengubah tata letak hard drive untuk sementara waktu.

Cadangan MBR
dd if=/dev/sda of=mbr.bkp bs=512 count=1

Memulihkan MBR
dd if=mbr.bkp of=/dev/sda bs=512 count=1

Metode EFI/UEFI

Untuk sistem yang menggunakan metode EFI/UEFI, firmware UEFI membaca pengaturannya untuk menentukan aplikasi UEFI mana yang akan diluncurkan dan dari mana (yaitu, di disk dan partisi mana Partisi EFI berada).

Selanjutnya, boot loader tahap ke-2 (alias boot manager) dimuat dan dijalankan. GRUB [GRand Unified Boot] adalah boot manager yang paling sering digunakan di Linux. Salah satu dari dua versi berbeda dapat ditemukan pada sebagian besar sistem yang digunakan saat ini.

  1. File konfigurasi lama GRUB: /boot/grub/menu.lst (distribusi lama, tidak didukung oleh firmware EFI/UEFI).
  2. File konfigurasi GRUB2: kemungkinan besar, /etc/default/grub.

Meskipun tujuan ujian LFCS tidak secara eksplisit meminta pengetahuan tentang internal GRUB, jika Anda berani dan mampu mengacaukan sistem Anda (Anda mungkin ingin mencobanya pertama di mesin virtual, untuk berjaga-jaga), Anda harus menjalankannya.

update-grub

Sebagai root setelah memodifikasi konfigurasi GRUB untuk menerapkan perubahan.

Pada dasarnya, GRUB memuat kernel default dan gambar initrd atau initramfs. Singkatnya, initrd atau initramfs membantu melakukan deteksi perangkat keras, memuat modul kernel, dan penemuan perangkat yang diperlukan untuk memasang sistem file root yang sebenarnya.

Setelah sistem file root sebenarnya aktif, kernel mengeksekusi manajer sistem dan layanan (init atau systemd, yang identifikasi prosesnya atau PIDnya selalu 1) untuk memulai proses pengguna normal- proses boot ruang untuk menyajikan antarmuka pengguna.

Baik init dan systemd adalah daemon (proses latar belakang) yang mengelola daemon lain, sebagai layanan pertama yang dimulai (saat boot) dan layanan terakhir yang dihentikan (saat shutdown).

Memulai Layanan (SysVinit)

Konsep runlevel di Linux menentukan cara berbeda untuk menggunakan sistem dengan mengontrol layanan mana yang sedang berjalan. Dengan kata lain, runlevel mengontrol tugas apa yang dapat diselesaikan dalam status eksekusi saat ini=runlevel (dan tugas mana yang tidak dapat diselesaikan).

Secara tradisional, proses startup ini dilakukan berdasarkan konvensi yang berasal dari System V UNIX, dengan sistem meneruskan eksekusi kumpulan skrip yang memulai dan menghentikan layanan saat mesin memasuki runlevel tertentu (yang, dengan kata lain, , adalah mode berbeda dalam menjalankan sistem).

Dalam setiap runlevel, layanan individual dapat diatur untuk dijalankan, atau dimatikan jika dijalankan. Versi terbaru dari beberapa distribusi besar beralih dari standar System V ke layanan yang agak baru dan manajer sistem yang disebut systemd (yang merupakan singkatan dari daemon sistem), tetapi biasanya mendukung perintah sysv untuk tujuan kompatibilitas. Ini berarti Anda dapat menjalankan sebagian besar alat init sysv yang terkenal dalam distribusi berbasis sistemd.

Baca Juga: Mengapa 'systemd' menggantikan 'init' di Linux

Selain memulai proses sistem, init melihat ke file /etc/inittab untuk memutuskan runlevel apa yang harus dimasukkan.

Runlevel

Deskripsi

0

Hentikan sistem. Runlevel 0 adalah keadaan transisi khusus yang digunakan untuk mematikan sistem dengan cepat.

1

Juga disebut dengan s, atau S, runlevel ini terkadang disebut mode pemeliharaan. Layanan apa, jika ada, yang dimulai pada runlevel ini bervariasi berdasarkan distribusi. Biasanya digunakan untuk pemeliharaan sistem tingkat rendah yang mungkin terganggu oleh pengoperasian sistem normal.

2

Multipengguna. Pada sistem Debian dan turunannya, ini adalah runlevel default, dan mencakup -jika tersedia- login grafis. Pada sistem berbasis Red-Hat, ini adalah mode multipengguna tanpa jaringan.

3

Pada sistem berbasis Red-Hat, ini adalah mode multipengguna default, yang menjalankan semuanya kecuali lingkungan grafis. Runlevel dan level 4 dan 5 ini biasanya tidak digunakan pada sistem berbasis Debian.

4

Biasanya tidak digunakan secara default dan oleh karena itu tersedia untuk penyesuaian.

5

Pada sistem berbasis Red-Hat, mode multipengguna penuh dengan login GUI. Runlevel ini seperti level 3, tetapi dengan login GUI tersedia.

6

Nyalakan ulang sistem.

Untuk beralih antar runlevel, kita cukup melakukan perubahan runlevel menggunakan perintah init: init N (di mana N adalah salah satu runlevel yang tercantum di atas). Harap dicatat bahwa ini bukan cara yang disarankan untuk membawa sistem yang sedang berjalan ke runlevel yang berbeda karena tidak memberikan peringatan kepada pengguna yang sudah login (sehingga menyebabkan mereka kehilangan pekerjaan dan proses berhenti secara tidak normal).

Sebaliknya, perintah shutdown harus digunakan untuk memulai ulang sistem (yang pertama-tama mengirimkan pesan peringatan ke semua pengguna yang login dan memblokir login selanjutnya; kemudian memberi sinyal init untuk berpindah runlevel); namun, runlevel default (yang akan menjadi tempat booting sistem) harus diedit terlebih dahulu di file /etc/inittab.

Oleh karena itu, ikuti langkah-langkah berikut untuk beralih antar runlevel dengan benar. Sebagai root, cari baris berikut di /etc/inittab.

id:2:initdefault:

dan ubah angka 2 untuk runlevel yang diinginkan dengan editor teks pilihan Anda, seperti vim (dijelaskan dalam Cara menggunakan editor vi/vim di Linux – Bagian 2 dari seri ini).

Selanjutnya, jalankan sebagai root.

shutdown -r now

Perintah terakhir itu akan memulai ulang sistem, menyebabkannya memulai pada runlevel yang ditentukan pada boot berikutnya, dan akan menjalankan skrip yang terletak di /etc/rc[runlevel].d direktori untuk memutuskan layanan mana yang harus dimulai dan mana yang tidak. Misalnya untuk runlevel 2 pada sistem berikut.

Kelola Layanan menggunakan chkconfig

Untuk mengaktifkan atau menonaktifkan layanan sistem saat boot, kita akan menggunakan perintah chkconfig di CentOS/openSUSE dan sysv-rc-conf di Debian dan turunannya. Alat ini juga dapat menunjukkan kepada kita keadaan layanan yang telah dikonfigurasi sebelumnya untuk runlevel tertentu.

Baca Juga: Cara Menghentikan dan Menonaktifkan Layanan yang Tidak Diinginkan di Linux

Mencantumkan konfigurasi runlevel untuk suatu layanan.

chkconfig --list [service name]
chkconfig --list postfix
chkconfig --list mysqld

Pada gambar di atas kita dapat melihat bahwa postfix diatur untuk dimulai ketika sistem memasuki runlevel 2 hingga 5, sedangkan mysqld akan berjalan secara default untuk runlevel 2 hingga 4. Sekarang anggaplah ini bukan perilaku yang diharapkan.

Misalnya, kita perlu mengaktifkan mysqld untuk runlevel 5 juga, dan mematikan postfix untuk runlevel 4 dan 5. Inilah yang akan kita lakukan dalam setiap kasus (jalankan perintah berikut sebagai root).

Mengaktifkan layanan untuk runlevel tertentu
chkconfig --level [level(s)] service on
chkconfig --level 5 mysqld on
Menonaktifkan layanan untuk runlevel tertentu
chkconfig --level [level(s)] service off
chkconfig --level 45 postfix off

Sekarang kita akan melakukan tugas serupa di sistem berbasis Debian menggunakan sysv-rc-conf.

Kelola Layanan menggunakan sysv-rc-conf

Mengonfigurasi layanan untuk memulai secara otomatis pada runlevel tertentu dan mencegahnya dimulai pada runlevel lainnya.

1. Mari gunakan perintah berikut untuk melihat runlevel apa saja yang mdadm dikonfigurasikan untuk memulai.

ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

2. Kita akan menggunakan sysv-rc-conf untuk mencegah mdadm dimulai pada semua runlevel kecuali 2. Cukup centang atau hapus centang (dengan spasi) sesuai keinginan (Anda dapat bergerak ke atas, bawah, kiri, dan kanan dengan tombol panah).

sysv-rc-conf

Lalu tekan q untuk keluar.

3. Kami akan memulai ulang sistem dan menjalankan kembali perintah dari LANGKAH 1.

ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

Pada gambar di atas kita dapat melihat bahwa mdadm dikonfigurasi untuk memulai hanya pada runlevel 2.

Bagaimana dengan sistemd?

systemd adalah layanan dan manajer sistem lain yang diadopsi oleh beberapa distribusi Linux besar. Hal ini bertujuan untuk memungkinkan lebih banyak pemrosesan dilakukan secara paralel selama startup sistem (tidak seperti sysvinit, yang selalu cenderung lebih lambat karena memulai proses satu per satu, memeriksa apakah satu proses bergantung pada yang lain, dan menunggu daemon untuk diluncurkan sehingga lebih banyak layanan dapat dimulai), dan berfungsi sebagai manajemen sumber daya dinamis pada sistem yang sedang berjalan.

Oleh karena itu, layanan dimulai saat diperlukan (untuk menghindari konsumsi sumber daya sistem) alih-alih diluncurkan tanpa alasan yang kuat saat boot.

Melihat status semua proses yang berjalan di sistem Anda, baik layanan asli systemd dan layanan SysV, jalankan perintah berikut.

systemctl

Kolom LOAD menunjukkan apakah definisi unit (lihat kolom UNIT, yang menunjukkan layanan atau apa pun yang dikelola oleh systemd) dimuat dengan benar, sedangkan ACTIVE< Kolom dan SUB menunjukkan status terkini dari unit tersebut.

Menampilkan informasi tentang status layanan saat ini

Ketika kolom AKTIF menunjukkan bahwa status suatu unit selain aktif, kita dapat memeriksa apa yang terjadi dengan menggunakan.

systemctl status [unit]

Misalnya pada gambar di atas, media-samba.mount dalam keadaan gagal. Ayo lari.

systemctl status media-samba.mount

Kita dapat melihat bahwa media-samba.mount gagal karena proses mount pada host dev1 tidak dapat menemukan network share di //192.168.0.10/gacanepa.

Memulai atau Menghentikan Layanan

Setelah jaringan berbagi //192.168.0.10/gacanepa tersedia, mari kita coba memulai, lalu berhenti, dan terakhir memulai ulang unit media-samba.mount. Setelah melakukan setiap tindakan, jalankan systemctl status media-samba.mount untuk memeriksa statusnya.

systemctl start media-samba.mount
systemctl status media-samba.mount
systemctl stop media-samba.mount
systemctl restart media-samba.mount
systemctl status media-samba.mount

Mengaktifkan atau menonaktifkan layanan untuk memulai saat boot

Di bawah systemd Anda dapat mengaktifkan atau menonaktifkan layanan saat boot.

systemctl enable [service] 		# enable a service 
systemctl disable [service] 		# prevent a service from starting at boot

Proses mengaktifkan atau menonaktifkan layanan untuk memulai secara otomatis saat boot terdiri dari penambahan atau penghapusan tautan simbolik di direktori /etc/systemd/system/multi-user.target.wants.

Alternatifnya, Anda dapat mengetahui status layanan saat ini (diaktifkan atau dinonaktifkan) dengan perintah.

systemctl is-enabled [service]

Misalnya,

systemctl is-enabled postfix.service

Selain itu, Anda dapat me-reboot atau mematikan sistem dengan.

systemctl reboot
systemctl shutdown

Pemula

Pemula adalah pengganti daemon /sbin/init berbasis peristiwa dan lahir dari kebutuhan untuk memulai layanan saja, ketika dibutuhkan (juga mengawasinya saat mereka sedang berjalan), dan menangani peristiwa yang terjadi, sehingga melampaui sistem sysvinit klasik yang berbasis ketergantungan.

Awalnya dikembangkan untuk distribusi Ubuntu, tetapi digunakan di Red Hat Enterprise Linux 6.0. Meskipun dimaksudkan agar cocok untuk diterapkan di semua distribusi Linux sebagai pengganti sysvinit, seiring berjalannya waktu, ia dibayangi oleh systemd. Pada tanggal 14 Februari 2014, Mark Shuttleworth (pendiri Canonical Ltd.) mengumumkan bahwa rilis Ubuntu mendatang akan menggunakan systemd sebagai daemon init default.

Karena skrip startup SysV untuk sistem sudah sangat umum sejak lama, sejumlah besar paket perangkat lunak menyertakan skrip startup SysV. Untuk mengakomodasi paket-paket tersebut, Upstart menyediakan mode kompatibilitas: Ia menjalankan skrip startup SysV di lokasi biasa (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d, atau lokasi serupa). Jadi, jika kita menginstal sebuah paket yang belum menyertakan skrip konfigurasi Pemula, paket tersebut akan tetap diluncurkan dengan cara biasa.

Selain itu, jika kami telah menginstal utilitas seperti chkconfig, Anda seharusnya dapat menggunakannya untuk mengelola layanan berbasis SysV seperti yang kami lakukan pada sistem berbasis sysvinit.

Skrip pemula juga mendukung memulai atau menghentikan layanan berdasarkan variasi tindakan yang lebih luas dibandingkan skrip startup SysV; misalnya, Pemula dapat meluncurkan layanan setiap kali perangkat keras tertentu terpasang.

Sistem yang menggunakan Pemula dan skrip aslinya secara eksklusif mengganti file /etc/inittab dan direktori skrip startup SysV khusus runlevel dengan .conf skrip di direktori /etc/init.

Skrip *.conf ini (juga dikenal sebagai definisi pekerjaan) umumnya terdiri dari yang berikut:

    1. Deskripsi proses.
    2. Runlevel tempat proses harus dijalankan atau kejadian yang harus memicunya.
    3. Runlevel di mana proses harus dihentikan atau kejadian yang harus menghentikannya.
    4. Pilihan.
    5. Perintah untuk meluncurkan proses.

Misalnya,

My test service - Upstart script demo description "Here goes the description of 'My test service'" author "Dave Null <[email >"
Stanzas

#
Stanzas define when and how a process is started and stopped
See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
When to start the service
start on runlevel [2345]
When to stop the service
stop on runlevel [016]
Automatically restart process in case of crash
respawn
Specify working directory
chdir /home/dave/myfiles
Specify the process/command (add arguments if needed) to run
exec bash backup.sh arg1 arg2

Untuk menerapkan perubahan, Anda perlu memberi tahu pemula untuk memuat ulang konfigurasinya.

initctl reload-configuration

Kemudian mulai pekerjaan Anda dengan mengetikkan perintah berikut.

sudo start yourjobname

Dimana namapekerjaananda adalah nama pekerjaan yang ditambahkan tadi dengan skrip namapekerjaananda.conf.

Panduan referensi yang lebih lengkap dan rinci untuk Pemula tersedia di situs web proyek di bawah menu “Buku Masak”.

Ringkasan

Pengetahuan tentang proses boot Linux diperlukan untuk membantu Anda memecahkan masalah serta menyesuaikan kinerja komputer dan menjalankan layanan sesuai kebutuhan Anda.

Dalam artikel ini kami telah menganalisis apa yang terjadi sejak Anda menekan tombol Daya untuk menghidupkan mesin hingga Anda mendapatkan antarmuka pengguna yang beroperasi penuh. Saya harap Anda telah belajar membacanya sebanyak yang saya lakukan saat menyusunnya. Jangan ragu untuk meninggalkan komentar atau pertanyaan Anda di bawah. Kami selalu menantikan kabar dari pembaca kami!