LFCS Managing System Startup Proses dan Layanan (Sysvinit, SystemD dan Upstart) - Bagian 7
- 1616
- 409
- Simon Cormier
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 7Video 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 LinuxSaat 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.
- 446 byte pertama: Bootloader berisi kode pesan yang dapat dieksekusi dan pesan kesalahan.
- 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.
- 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 = 1MBR cadangan di Linux
Memulihkan MBR
# dd if = mbr.bkp dari =/dev/sda bs = 512 Count = 1Kembalikan 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.
- File konfigurasi warisan grub:/boot/grub/menu.LST (distribusi yang lebih tua, tidak didukung oleh EFI/UEFI Firmwares).
- 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 initLayanan 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 LinuxKelola 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 mysqldListing 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 offAktifkan 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-CONFSYSV 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.
# SystemctlPeriksa 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.gunungPeriksa 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.gunungMulai 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 menonaktifkanAtau, 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:
- Deskripsi prosesnya.
- Runlevels di mana proses harus dijalankan atau peristiwa yang harus memicu itu.
- Runlevels di mana proses harus dihentikan atau peristiwa yang harus menghentikannya.
- Pilihan.
- 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- « 5 Alat baris perintah untuk menemukan file dengan cepat di linux
- LFCS Cara Menginstal dan Menggunakan Vi/Vim sebagai Editor Teks Lengkap - Bagian 2 »