LFCS Managing System Startup Proses dan Layanan (Sysvinit, SystemD dan Upstart) - Bagian 7

LFCS Managing System Startup Proses dan Layanan (Sysvinit, SystemD dan Upstart) - Bagian 7

Beberapa bulan yang lalu, Linux Foundation mengumumkan LFCS (Linux Foundation Certified Sysadmin) Sertifikasi, program baru yang menarik yang tujuannya memungkinkan individu dari seluruh ujung dunia untuk mendapatkan sertifikasi dalam melakukan tugas administrasi sistem dasar hingga menengah pada sistem Linux. Ini termasuk mendukung sistem dan layanan yang sudah berjalan, bersama dengan pencarian dan analisis masalah pertama, ditambah kemampuan untuk memutuskan kapan harus mengangkat masalah ke tim teknik.

Sysadmin Bersertifikat Linux Foundation - Bagian 7

Video berikut menjelaskan pengantar singkat untuk Program Sertifikasi Linux Foundation.

Posting ini adalah bagian 7 dari seri 10-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 boot sistem Linux terdiri dari beberapa fase, masing -masing diwakili oleh komponen yang berbeda. Diagram berikut secara singkat merangkum proses boot dan menunjukkan semua komponen utama yang terlibat.

Proses boot Linux

Saat Anda menekan Kekuatan Tombol di mesin Anda, firmware yang disimpan di a Eeprom chip di motherboard menginisialisasi POS (Tes mandiri power-on) untuk memeriksa keadaan sumber daya perangkat keras sistem. Ketika POS selesai, firmware kemudian mencari dan memuat Tahap pertama boot loader, terletak di Mbr atau di Efi Partisi disk pertama yang tersedia, dan memberikan kendali untuk itu.

Metode MBR

Itu Mbr terletak di sektor pertama disk yang ditandai sebagai booting di Bios Pengaturan dan IS 512 ukuran byte.

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

Perintah berikut melakukan cadangan Mbr (Dalam contoh ini, /dev/sda adalah hard disk pertama). File yang dihasilkan, mbr.BKP bisa berguna jika tabel partisi menjadi korup, misalnya, membuat sistem tidak bisa dibotolkan.

Tentu saja, untuk menggunakannya nanti jika diperlukan, kita perlu menyimpannya dan menyimpannya di tempat lain (seperti a USB drive, misalnya). File itu akan membantu kami mengembalikan MBR dan akan membuat kami pergi sekali lagi jika dan hanya jika kami tidak mengubah tata letak hard drive sementara itu.

Cadangan MBR
# dd if =/dev/sda dari = mbr.BKP BS = 512 Count = 1 
MBR cadangan di Linux
Memulihkan MBR
# dd if = mbr.bkp dari =/dev/sda bs = 512 Count = 1 
Kembalikan MBR di Linux

Metode EFI/UEFI

Untuk sistem yang menggunakan Efi/Uefi Metode, firmware UEFI membaca pengaturannya untuk menentukan aplikasi UEFI mana yang akan diluncurkan dan dari mana (i.e., di mana disk dan partisi partisi EFI berada).

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

  1. File konfigurasi warisan grub:/boot/grub/menu.LST (distribusi yang lebih tua, tidak didukung oleh EFI/UEFI Firmwares).
  2. File Konfigurasi Grub2: Kemungkinan besar,/etc/default/grub.

Meskipun tujuan dari LFCS ujian tidak secara eksplisit meminta pengetahuan tentang Grub internal, jika Anda berani dan mampu mengacaukan sistem Anda (Anda mungkin ingin mencobanya terlebih dahulu di mesin virtual, untuk berjaga -jaga), Anda perlu menjalankan.

# UPDATE-GRUB 

Sebagai akar Setelah memodifikasi konfigurasi Grub untuk menerapkan perubahan.

Pada dasarnya, Grub memuat default inti dan initrd atau initramfs gambar. Dalam beberapa kata, initrd atau initramfs membantu melakukan deteksi perangkat keras, pemuatan modul kernel dan penemuan perangkat yang diperlukan untuk mendapatkan sistem file root yang sebenarnya.

Setelah sistem file root nyata sudah habis, kernel mengeksekusi sistem dan manajer layanan (init atau Systemd, Identifikasi prosesnya atau PID selalu 1) untuk memulai proses boot-ruang pengguna normal untuk menyajikan antarmuka pengguna.

Keduanya init Dan Systemd adalah daemon (proses latar belakang) yang mengelola daemon lain, sebagai layanan pertama yang memulai (selama boot) dan layanan terakhir untuk berakhir (selama shutdown).

Systemd dan init

Layanan awal (Sysvinit)

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

Secara tradisional, proses startup ini dilakukan berdasarkan konvensi yang berasal dari Sistem v Unix, Dengan sistem yang meneruskan koleksi skrip yang memulai dan menghentikan layanan saat mesin memasuki runlevel spesifik (yang, dengan kata lain, adalah mode yang berbeda dalam menjalankan sistem).

Di dalam setiap runlevel, layanan individual dapat diatur untuk dijalankan, atau ditutup jika berjalan. Versi terbaru dari beberapa distribusi utama bergerak menjauh dari Sistem V Standar yang mendukung layanan dan manajer sistem yang agak baru yang dipanggil Systemd (yang merupakan singkatan dari System Daemon), tetapi biasanya mendukung Sysv Perintah untuk tujuan kompatibilitas. Ini berarti Anda dapat menjalankan sebagian besar yang terkenal Sysv alat init dalam distribusi berbasis systemd.

Baca juga: Mengapa 'Systemd' menggantikan 'init' di linux

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

Runlevel Keterangan
0  Menghentikan sistem. Runlevel 0 adalah keadaan transisi khusus yang digunakan untuk mematikan sistem dengan cepat.
1  Juga alias ke S, atau S, runlevel ini kadang -kadang 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 operasi sistem normal.
2  Multiuser. Pada sistem dan turunan Debian, ini adalah runlevel default, dan termasuk -Jika tersedia- Login grafis. Pada sistem berbasis merah, ini adalah mode multiuser tanpa jaringan.
3  Pada sistem berbasis merah, ini adalah mode multiuser 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 karenanya tersedia untuk kustomisasi.
5  Pada sistem berbasis merah, mode multiuser penuh dengan login GUI. Runlevel ini seperti Level 3, tetapi dengan login GUI yang tersedia.
6  Reboot sistem.

Untuk beralih di antara runlevels, kami dapat dengan mudah mengeluarkan perubahan runlevel menggunakan init Perintah: init N (Di mana N adalah salah satu runlevel yang tercantum di atas). Harap dicatat bahwa ini bukan cara yang disarankan untuk membawa sistem berjalan ke level yang berbeda karena tidak memberikan peringatan kepada pengguna yang ada yang ada (sehingga menyebabkan mereka kehilangan pekerjaan dan proses untuk mengakhiri secara tidak normal).

Sebagai gantinya, matikan Perintah harus digunakan untuk memulai kembali sistem (yang pertama kali mengirimkan pesan peringatan kepada semua pengguna yang masuk dan memblokir login lebih lanjut; kemudian sinyal init untuk beralih runlevels); Namun, runlevel default (yang sistem akan boot untuk) harus diedit di /etc/inittab file terlebih dahulu.

Untuk alasan itu, ikuti langkah -langkah ini untuk beralih dengan benar di antara runlevels, sebagai root, cari baris berikut /etc/inittab.

ID: 2: initdefault: 

dan ubah angkanya 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 sekarang 

Itu terakhir Perintah akan memulai kembali sistem, menyebabkannya mulai di runlevel yang ditentukan selama boot berikutnya, dan akan menjalankan skrip yang terletak di /etc/rc [runlevel].D direktori untuk memutuskan layanan mana yang harus dimulai dan mana yang seharusnya tidak. Misalnya, untuk Runlevel 2 di sistem berikut.

Ubah Runlevels di Linux

Kelola layanan menggunakan chkconfig

Untuk mengaktifkan atau menonaktifkan layanan sistem saat boot, kami akan menggunakan perintah chkconfig di centos / opensuse dan SYSV-RC-CONF dalam Debian dan Derivatif. Alat ini juga dapat menunjukkan kepada kita apa keadaan layanan yang sudah dikonfigurasi sebelumnya untuk runlevel tertentu.

Baca juga: Cara menghentikan dan menonaktifkan layanan yang tidak diinginkan di Linux

Mendaftarkan konfigurasi runlevel untuk suatu layanan.

# chkconfig -list [nama layanan] # chkconfig -list postfix # chkconfig -list mysqld 
Listing RunLevel Configuration

Pada gambar di atas kita bisa melihatnya postfix diatur untuk memulai ketika sistem memasuki runlevels 2 melalui 5, sedangkan mysqld akan berjalan secara default untuk runlevels 2 melalui 4. Sekarang anggaplah ini bukan perilaku yang diharapkan.

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

Mengaktifkan layanan untuk runlevel tertentu
# chkconfig -level [level (s)] layanan di # chkconfig -level 5 mysqld on 
Menonaktifkan layanan untuk runlevels tertentu
# chkconfig -level [level (s)] layanan off # chkconfig -level 45 postfix off 
Aktifkan Layanan Nonaktifkan

Kami sekarang akan melakukan tugas serupa di a Berbasis debian menggunakan sistem SYSV-RC-CONF.

Kelola Layanan Menggunakan SYSV-RC-CONF

Mengkonfigurasi Layanan untuk Mulai Secara Otomatis pada Runlevel Spesifik dan Mencegahnya Memulai Semua Lainnya.

1. Mari kita gunakan perintah berikut untuk melihat apa runlevels di mana mdadm dikonfigurasi untuk memulai.

# ls -l /etc /rc [0-6].d | grep -e 'rc [0-6] | mdadm' 
Periksa Runlevel of Service Running

2. Kami akan menggunakan SYSV-RC-CONF untuk mencegah mdadm memulai semua runlevel kecuali 2. Cukup periksa atau hapus centang (dengan bilah ruang) sesuai keinginan (Anda dapat naik, ke bawah, kiri, dan kanan dengan tombol panah).

# SYSV-RC-CONF 
SYSV RunLevel Config

Lalu tekan Q berhenti.

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

# ls -l /etc /rc [0-6].d | grep -e 'rc [0-6] | mdadm' 
Verifikasi Layanan Runlevel

Pada gambar di atas kita bisa melihatnya mdadm dikonfigurasi untuk memulai hanya di runlevel 2.

Bagaimana dengan systemd?

Systemd adalah Layanan dan Manajer Sistem lain yang sedang diadopsi oleh beberapa distribusi Linux utama. Ini bertujuan untuk memungkinkan lebih banyak pemrosesan dilakukan secara paralel selama startup sistem (tidak seperti Sysvinit, Yang selalu cenderung lebih lambat karena mulai memproses satu per satu, memeriksa apakah seseorang bergantung pada yang lain, dan menunggu daemon untuk diluncurkan sehingga lebih banyak layanan dapat dimulai), dan untuk berfungsi sebagai manajemen sumber daya yang dinamis ke sistem yang sedang berjalan.

Dengan demikian, layanan dimulai saat dibutuhkan (untuk menghindari sumber daya sistem yang mengonsumsi) alih -alih diluncurkan tanpa alasan yang solid selama boot.

Melihat status semua proses yang berjalan di sistem Anda, keduanya Systemd asli dan Sysv layanan, jalankan perintah berikut.

# Systemctl 
Periksa semua proses berjalan

Itu MEMUAT kolom menunjukkan apakah definisi unit (merujuk ke SATUAN kolom, yang menunjukkan layanan atau apa pun yang dikelola oleh SystemD) dimuat dengan benar, sedangkan AKTIF Dan SUB Kolom menunjukkan status saat ini dari unit tersebut.

Menampilkan informasi tentang status layanan saat ini

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

# Systemctl Status [Unit] 

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

# Systemctl Status Media-Samba.gunung 
Periksa status layanan

Kita bisa melihat itu media-samba.gunung gagal karena proses pemasangan pada host dev1 tidak dapat menemukan berbagi jaringan di // 192.168.0.10/Gacanepa.

Layanan Memulai atau Menghentikan

Setelah jaringan berbagi // 192.168.0.10/Gacanepa menjadi tersedia, mari kita coba untuk memulai, lalu berhenti, dan akhirnya restart unit media-samba.gunung. Setelah melakukan setiap tindakan, mari kita jalankan status Systemctl media-samba.memasang untuk memeriksa statusnya.

# Systemctl Mulai media-samba.mount # Systemctl Status media-samba.mount # systemctl stop media-samba.mount # systemctl restart media-samba.mount # Systemctl Status media-samba.gunung 
Mulai Layanan Berhenti
Mengaktifkan atau menonaktifkan layanan untuk memulai selama boot

Di bawah Systemd Anda dapat mengaktifkan atau menonaktifkan layanan saat sepatu bot itu.

# Systemctl Aktifkan [Layanan] # Aktifkan Layanan # Systemctl Nonaktifkan [Layanan] # Cegah layanan mulai dari boot 

Proses mengaktifkan atau menonaktifkan layanan untuk memulai secara otomatis pada boot terdiri dari menambahkan atau menghapus tautan simbolik di /etc/systemd/system/multi-pengguna.target.keinginan direktori.

Mengaktifkan layanan yang menonaktifkan

Atau, Anda dapat menemukan status layanan saat ini (diaktifkan atau dinonaktifkan) dengan perintah.

# Systemctl IS-Enabled [Layanan] 

Misalnya,

# Systemctl IS-Enabled Postfix.melayani 

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

# Systemctl Reboot # Systemctl Shutdown 

Pemula

Pemula adalah pengganti berbasis acara untuk /SBIN/INIT Daemon dan lahir dari kebutuhan untuk memulai layanan saja, ketika mereka dibutuhkan (juga mengawasi mereka saat mereka berjalan), dan menangani acara saat terjadi, sehingga melampaui sistem Sysvinit yang berbasis ketergantungan klasik.

Awalnya dikembangkan untuk distribusi Ubuntu, tetapi digunakan di Red Hat Enterprise Linux 6.0. Meskipun itu dimaksudkan untuk cocok untuk penempatan di semua distribusi Linux sebagai pengganti Sysvinit, pada saatnya dibayangi oleh Systemd. Pada 14 Februari 2014, Mark Shuttleworth (pendiri Canonical Ltd.) mengumumkan bahwa rilis Ubuntu di masa mendatang akan menggunakan SystemD sebagai init daemon default.

Karena Sysv Script startup untuk sistem telah sangat umum begitu lama, sejumlah besar paket perangkat lunak termasuk skrip startup sysv. Untuk mengakomodasi paket seperti itu, Upstart menyediakan mode kompatibilitas: ia menjalankan skrip startup SYSV di lokasi yang biasa (/etc/rc.d/rc?.D, /etc/init.d/rc?.D, /etc/rc?.D, atau lokasi serupa). Jadi, jika kita menginstal paket yang belum menyertakan skrip konfigurasi pemula, itu masih harus diluncurkan dengan cara biasa.

Selain itu, jika kami telah menginstal utilitas seperti chkconfig, Anda harus dapat menggunakannya untuk mengelola layanan berbasis sysv Anda seperti yang kami lakukan di sistem berbasis sysvinit.

Script pemula juga mendukung layanan awal atau penghentian berdasarkan berbagai tindakan yang lebih luas daripada skrip startup SYSV; Misalnya, pemula dapat meluncurkan layanan setiap kali perangkat perangkat keras tertentu terpasang.

Sistem yang menggunakan pemula dan skrip asalnya secara eksklusif menggantikan /etc/inittab file dan runlevel spesifik Sysv direktori skrip startup dengan .conf skrip di /etc/init direktori.

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

    1. Deskripsi prosesnya.
    2. Runlevels di mana proses harus dijalankan atau peristiwa yang harus memicu itu.
    3. Runlevels di mana proses harus dihentikan atau peristiwa yang harus menghentikannya.
    4. Pilihan.
    5. Perintah untuk meluncurkan proses.

Misalnya,

# Layanan Uji Saya - Deskripsi Demo Script Upstart "Berikut ini deskripsi 'Layanan Uji Saya'" Penulis "Dave Null <[email protected]>" # Stanzas # # Stanzas Tentukan kapan dan bagaimana proses dimulai dan berhenti # lihat daftar bait di sini: http: // upstart.Ubuntu.com/wiki/stanzas # respawn # Kapan memulai layanan Mulai pada runlevel [2345] # Kapan harus menghentikan layanan berhenti di runlevel [016] # secara otomatis restart proses jika terjadi respawn # tentukan direktori kerja chdir/home/dave/dave/ MyFiles # Tentukan proses/perintah (tambahkan argumen jika diperlukan) untuk menjalankan cadangan bash exec.sh arg1 arg2 

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

# InitCTL Reload-Configuration 

Kemudian mulai pekerjaan Anda dengan mengetik perintah berikut.

$ sudo Mulai nama Anda 

Di mana Yourjobname adalah nama pekerjaan yang ditambahkan sebelumnya dengan Yourjobname.conf naskah.

Panduan referensi yang lebih lengkap dan terperinci untuk Upstart tersedia di situs web proyek di bawah menu "Cookbook".

Ringkasan

Pengetahuan tentang proses boot Linux diperlukan untuk membantu Anda dengan tugas pemecahan masalah serta dengan mengadaptasi kinerja komputer dan menjalankan layanan dengan kebutuhan Anda.

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

Menjadi Administrator Sistem Bersertifikat Linux