Proses Permulaan dan Perkhidmatan Permulaan Sistem Pengurusan LFCS (SYSVINIT, SYSTEMD dan UPSTART) - Bahagian 7

Proses Permulaan dan Perkhidmatan Permulaan Sistem Pengurusan LFCS (SYSVINIT, SYSTEMD dan UPSTART) - Bahagian 7

Beberapa bulan yang lalu, Yayasan Linux mengumumkan LFCS (SYSADMIN YOUNDAY LINUX FOUNTUK) Pensijilan, program baru yang menarik yang tujuannya membolehkan individu dari semua hujung dunia untuk diperakui dalam melaksanakan tugas -tugas pentadbiran sistem perantaraan pada sistem linux. Ini termasuk menyokong sistem dan perkhidmatan yang sudah berjalan, bersama-sama dengan pencari masalah dan analisis yang pertama, ditambah dengan keupayaan untuk menentukan masa untuk menimbulkan masalah kepada pasukan kejuruteraan.

SYSADMIN YOUNDAY LINUX Yayasan - Bahagian 7

Video berikut menerangkan pengenalan ringkas kepada Program Persijilan Yayasan Linux.

Catatan ini adalah bahagian 7 dari siri 10-tutorial, di sini, kami akan menerangkan cara menguruskan proses dan perkhidmatan permulaan sistem Linux, yang diperlukan untuk peperiksaan pensijilan LFCS.

Menguruskan Proses Permulaan Linux

Proses boot sistem Linux terdiri daripada beberapa fasa, masing -masing diwakili oleh komponen yang berbeza. Rajah berikut secara ringkas meringkaskan proses boot dan menunjukkan semua komponen utama yang terlibat.

Proses Boot Linux

Apabila anda menekan Kuasa butang pada mesin anda, firmware yang disimpan dalam a Eeprom cip di papan induk memulakan memulakan Jawatan (Ujian diri kuasa) untuk memeriksa keadaan sumber perkakasan sistem. Apabila Jawatan selesai, firmware kemudian mencari dan memuatkan Peringkat 1 loader boot, terletak di Mbr atau di Efi Partition cakera pertama yang tersedia, dan mengawalnya.

Kaedah MBR

The Mbr terletak di sektor pertama cakera yang ditandakan sebagai bootable di BIOS tetapan dan adalah 512 saiz bait.

  1. Pertama 446 bait: Bootloader mengandungi kedua -dua kod mesej dan teks ralat yang boleh dilaksanakan.
  2. Seterusnya 64 bait: Jadual partition mengandungi rekod untuk setiap empat partition (utama atau dilanjutkan). Antara lain, setiap rekod menunjukkan status (aktif / tidak aktif), saiz, dan sektor permulaan / akhir bagi setiap partition.
  3. 2 bait terakhir: Nombor sihir berfungsi sebagai pemeriksaan pengesahan MBR.

Perintah berikut melakukan sandaran Mbr (Dalam contoh ini, /dev/sda adalah cakera keras pertama). Fail yang dihasilkan, mbr.BKP boleh menjadi berguna sekiranya jadual partition menjadi korup, sebagai contoh, menjadikan sistem tidak dapat dibebaskan.

Sudah tentu, untuk menggunakannya kemudian jika keperluan timbul, kita perlu menyimpannya dan menyimpannya di tempat lain (seperti USB Pemanduan, sebagai contoh). Fail itu akan membantu kami memulihkan MBR dan akan membawa kami sekali lagi jika dan hanya jika kami tidak mengubah susun atur cakera keras sementara itu.

Sandaran mbr
# dd jika =/dev/sda = mbr.BKP BS = 512 Count = 1 
Sandaran mbr di linux
Memulihkan MBR
# dd jika = mbr.BKP OF =/DEV/SDA BS = 512 Count = 1 
Pulihkan MBR di Linux

Kaedah EFI/UEFI

Untuk sistem menggunakan Efi/Uefi kaedah, firmware UEFI membaca tetapannya untuk menentukan aplikasi UEFI mana yang akan dilancarkan dan dari mana (i.e., di mana cakera dan partition partition EFI terletak).

Seterusnya, The Peringkat ke -2 Boot Loader (AKA Boot Manager) dimuatkan dan dijalankan. Grub [Boot bersatu besar] adalah pengurus boot yang paling kerap digunakan di linux. Salah satu daripada dua versi yang berbeza boleh didapati di kebanyakan sistem yang digunakan hari ini.

  1. Fail konfigurasi warisan grub:/boot/grub/menu.LST (pengagihan yang lebih lama, tidak disokong oleh firma EFI/UEFI).
  2. Fail konfigurasi GRUB2: Kemungkinan besar,/etc/lalai/grub.

Walaupun objektif LFCS peperiksaan tidak secara jelas meminta pengetahuan mengenai Grub dalaman, jika anda berani dan mampu merosakkan sistem anda (anda mungkin mahu mencubanya terlebih dahulu pada mesin maya, sekiranya berlaku), anda perlu menjalankan.

# UPDATE-GRUB 

Sebagai akar Setelah mengubah suai konfigurasi Grub untuk menerapkan perubahan.

Pada dasarnya, Grub memuatkan lalai kernel dan juga initrd atau initramfs gambar. Dalam beberapa perkataan, initrd atau initramfs membantu melakukan pengesanan perkakasan, pemuatan modul kernel dan penemuan peranti yang diperlukan untuk mendapatkan sistem fail akar sebenar dipasang.

Sebaik sahaja sistem fail root sebenar, kernel melaksanakan sistem dan pengurus perkhidmatan (di dalamnya atau sistemd, yang pengenalan proses atau PID sentiasa 1) untuk memulakan proses boot ruang pengguna biasa untuk membentangkan antara muka pengguna.

Kedua -duanya di dalamnya dan sistemd adalah daemon (proses latar belakang) yang menguruskan daemon lain, sebagai perkhidmatan pertama untuk memulakan (semasa boot) dan perkhidmatan terakhir untuk ditamatkan (semasa penutupan).

Systemd dan init

Perkhidmatan Bermula (SYSVINIT)

Konsep Runlevels di Linux menentukan cara yang berbeza untuk menggunakan sistem dengan mengawal perkhidmatan mana yang sedang berjalan. Dalam erti kata lain, runlevel mengawal tugas apa yang dapat dicapai dalam keadaan pelaksanaan semasa = runlevel (dan yang mana tidak boleh).

Secara tradisinya, proses permulaan ini dilakukan berdasarkan konvensyen yang berasal dari Sistem V Unix, Dengan sistem lulus melaksanakan koleksi skrip yang memulakan dan menghentikan perkhidmatan sebagai mesin memasuki runlevel tertentu (yang, dengan kata lain, adalah cara yang berbeza untuk menjalankan sistem).

Dalam setiap runlevel, perkhidmatan individu boleh ditetapkan untuk dijalankan, atau ditutup jika berjalan. Versi terkini beberapa pengagihan utama bergerak dari Sistem v standard memihak kepada pengurus perkhidmatan dan sistem yang agak baru yang dipanggil sistemd (yang bermaksud daemon sistem), tetapi biasanya menyokong SYSV Perintah untuk tujuan keserasian. Ini bermaksud bahawa anda boleh menjalankan sebahagian besar yang terkenal SYSV Alat init dalam pengedaran berasaskan SystemD.

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

Selain memulakan proses sistem, di dalamnya kelihatan kepada /etc/inittab fail untuk memutuskan apa yang mesti dimasukkan.

Runlevel Penerangan
0  Menghentikan sistem. Runlevel 0 adalah keadaan peralihan khas yang digunakan untuk menutup sistem dengan cepat.
1  Juga alias ke s, atau s, runlevel ini kadang -kadang dipanggil mod penyelenggaraan. Perkhidmatan apa, jika ada, dimulakan di runlevel ini berbeza dengan pengedaran. Ia biasanya digunakan untuk penyelenggaraan sistem peringkat rendah yang mungkin terjejas oleh operasi sistem biasa.
2  Multiuser. Pada sistem Debian dan derivatif, ini adalah lalai lalai, dan termasuk -jika ada - log masuk grafik. Pada sistem berasaskan topi merah, ini adalah mod multiuser tanpa rangkaian.
3  Pada sistem berasaskan topi merah, ini adalah mod multiuser lalai, yang menjalankan segala-galanya kecuali persekitaran grafik. Runlevel dan Tahap 4 dan 5 ini biasanya tidak digunakan pada sistem berasaskan Debian.
4  Biasanya tidak digunakan secara lalai dan oleh itu tersedia untuk penyesuaian.
5  Pada sistem berasaskan topi merah, mod multiuser penuh dengan log masuk GUI. Runlevel ini seperti tahap 3, tetapi dengan log masuk GUI tersedia.
6  Reboot sistem.

Untuk menukar antara RunLevels, kita hanya boleh mengeluarkan perubahan runlevel menggunakan di dalamnya Perintah: init N (di mana n adalah salah satu runlevels yang disenaraikan di atas). Sila ambil perhatian bahawa ini bukan cara yang disyorkan untuk mengambil sistem yang sedang berjalan ke runlevel yang berbeza kerana ia tidak memberi amaran kepada pengguna log masuk yang sedia ada (dengan itu menyebabkan mereka kehilangan kerja dan proses untuk menamatkan tidak normal).

Sebaliknya, menutup Perintah hendaklah digunakan untuk memulakan semula sistem (yang mula-mula menghantar mesej amaran kepada semua pengguna log masuk dan menyekat apa-apa log masuk selanjutnya, kemudian isyarat init untuk menukar runlevels); Walau bagaimanapun, runlevel lalai (sistem yang akan boot ke) mesti diedit di /etc/inittab fail pertama.

Atas sebab itu, ikuti langkah -langkah ini untuk menukar antara runlevels, sebagai akar, cari baris berikut /etc/inittab.

ID: 2: initdefault: 

dan tukar nombor 2 Untuk runlevel yang dikehendaki dengan editor teks pilihan anda, seperti VIM (diterangkan dalam cara menggunakan editor VI/VIM di Linux - Bahagian 2 siri ini).

Seterusnya, jalankan sebagai akar.

# shutdown -r sekarang 

Itu terakhir Perintah akan memulakan semula sistem, menyebabkan ia bermula di runlevel yang ditentukan semasa boot seterusnya, dan akan menjalankan skrip yang terletak di /etc/rc [runlevel].d direktori untuk menentukan perkhidmatan mana yang harus dimulakan dan mana yang tidak sepatutnya. Contohnya, untuk RunLevel 2 dalam sistem berikut.

Tukar Runlevels di Linux

Urus Perkhidmatan Menggunakan ChkConfig

Untuk mengaktifkan atau melumpuhkan perkhidmatan sistem pada boot, kami akan menggunakan arahan Chkconfig di Centos / OpenSuse dan SYSV-RC-CONF Dalam Debian dan Derivatif. Alat ini juga dapat menunjukkan kepada kita apa keadaan perkhidmatan yang telah dikonfigurasikan untuk runlevel tertentu.

Baca juga: Cara menghentikan dan melumpuhkan perkhidmatan yang tidak diingini di Linux

Menyenaraikan Konfigurasi Runlevel untuk Perkhidmatan.

# chkconfig -list [name service] # chkconfig -list postfix # chkconfig -list mysqld 
Penyenaraian Konfigurasi Runlevel

Dalam imej di atas kita dapat melihatnya Postfix ditetapkan untuk bermula apabila sistem memasuki runlevels 2 melalui 5, sedangkan mysqld akan berjalan secara lalai untuk runlevels 2 melalui 4. Sekarang anggap bahawa ini bukanlah tingkah laku yang diharapkan.

Contohnya, kita perlu menghidupkan mysqld Untuk Runlevel 5 juga, dan matikan postfix untuk runlevels 4 dan 5. Inilah yang akan kita lakukan dalam setiap kes (jalankan arahan berikut sebagai akar).

Membolehkan perkhidmatan untuk runlevel tertentu
# chkconfig -level [level (s)] perkhidmatan di # chkconfig -level 5 mysqld on 
Melumpuhkan perkhidmatan untuk runlevels tertentu
# chkconfig -level [level (s)] perkhidmatan off # chkconfig -level 45 postfix off 
Dayakan Perkhidmatan Lumpuhkan

Kami kini akan melaksanakan tugas yang sama dalam Berasaskan Debian menggunakan sistem SYSV-RC-CONF.

Urus Perkhidmatan Menggunakan SYSV-RC-CONF

Mengkonfigurasi perkhidmatan untuk memulakan secara automatik pada runlevel tertentu dan menghalangnya daripada memulakan semua yang lain.

1. Mari kita gunakan arahan berikut untuk melihat apakah runlevels di mana mdadm dikonfigurasi untuk memulakan.

# ls -l /etc /rc [0-6].D | grep -e 'rc [0-6] | mdadm' 
Semak runlevel perkhidmatan berjalan

2. Kami akan menggunakannya SYSV-RC-CONF untuk mengelakkan mdadm dari memulakan semua runlevels kecuali 2. Cukup periksa atau nyahtanda (dengan bar ruang) seperti yang dikehendaki (anda boleh naik, turun, kiri, dan kanan dengan kekunci anak panah).

# SYSV-RC-CONF 
SYSV RUNLEVEL CONFIG

Kemudian tekan q untuk berhenti.

3. Kami akan memulakan semula sistem dan menjalankan semula arahan dari LANGKAH 1.

# ls -l /etc /rc [0-6].D | grep -e 'rc [0-6] | mdadm' 
Sahkan perkhidmatan runlevel

Dalam imej di atas kita dapat melihatnya mdadm dikonfigurasikan untuk bermula hanya di runlevel 2.

Bagaimana dengan SystemD?

sistemd adalah pengurus perkhidmatan dan sistem lain yang diadopsi oleh beberapa pengagihan Linux utama. Ia bertujuan untuk membolehkan lebih banyak pemprosesan dilakukan selari semasa permulaan sistem (tidak seperti sysvinit, yang selalu cenderung lebih perlahan kerana ia mula memproses satu demi satu, memeriksa sama ada seseorang bergantung kepada yang lain, dan menunggu daemon untuk melancarkan lebih banyak perkhidmatan dapat dimulakan), dan berfungsi sebagai pengurusan sumber dinamik kepada sistem yang sedang berjalan.

Oleh itu, perkhidmatan dimulakan apabila diperlukan (untuk mengelakkan memakan sumber sistem) dan bukannya dilancarkan tanpa alasan yang kukuh semasa boot.

Melihat status semua proses yang berjalan pada sistem anda, kedua -duanya sistemd asli dan SYSV perkhidmatan, jalankan arahan berikut.

# Systemctl 
Periksa semua proses yang sedang berjalan

The Beban lajur menunjukkan sama ada definisi unit (rujuk ke Unit lajur, yang menunjukkan perkhidmatan atau apa sahaja yang dikekalkan oleh SystemD) telah dimuatkan dengan betul, sementara Aktif dan Sub Lajur menunjukkan status semasa unit tersebut.

Memaparkan maklumat mengenai status semasa perkhidmatan

Apabila Aktif lajur menunjukkan bahawa status unit selain aktif, kita dapat memeriksa apa yang berlaku menggunakan.

# Status SistemCTL [Unit] 

Contohnya, dalam imej di atas, Media-Samba.gunung berada dalam keadaan gagal. Jom lari.

# SYSTEMCTL STATUS Media-Samba.gunung 
Semak status perkhidmatan

Kita dapat melihatnya Media-Samba.gunung gagal kerana proses gunung di tuan rumah Dev1 tidak dapat mencari bahagian rangkaian di // 192.168.0.10/Gacanepa.

Memulakan atau menghentikan perkhidmatan

Setelah berkongsi rangkaian // 192.168.0.10/Gacanepa menjadi tersedia, mari cuba memulakan, kemudian berhenti, dan akhirnya mulakan semula unit Media-Samba.gunung. Setelah melakukan setiap tindakan, mari kita jalankan status sistem-samba.gunung untuk memeriksa statusnya.

# Systemctl Mula Media-Samba.Gunung # Systemctl Status Media-Samba.Gunung # Systemctl Stop Media-Samba.Gunung # Systemctl Mulakan semula Media-Samba.Gunung # Systemctl Status Media-Samba.gunung 
Memulakan perkhidmatan berhenti
Membolehkan atau melumpuhkan perkhidmatan untuk dimulakan semasa boot

Di bawah sistemd anda boleh mengaktifkan atau melumpuhkan perkhidmatan apabila ia but.

# Systemctl Enable [Service] # Dayakan Perkhidmatan # Systemctl Disable [Service] # Mencegah Perkhidmatan dari Bermula di Boot 

Proses membolehkan atau melumpuhkan perkhidmatan untuk memulakan secara automatik pada boot terdiri daripada menambah atau mengeluarkan pautan simbolik di /etc/Systemd/System/Multi-User.sasaran.mahu direktori.

Membolehkan perkhidmatan melumpuhkan

Sebagai alternatif, anda boleh mengetahui status semasa perkhidmatan (didayakan atau dilumpuhkan) dengan arahan.

# SystemCtl IS-Enabled [Service] 

Sebagai contoh,

# Systemctl adalah postfix yang dibolehkan.perkhidmatan 

Di samping itu, anda boleh reboot atau menutup sistem dengan.

# Systemctl Reboot # SystemCtl Shutdown 

Upstart

Upstart adalah pengganti berasaskan acara untuk /sbin/init Daemon dan dilahirkan dari keperluan untuk memulakan perkhidmatan sahaja, apabila mereka diperlukan (juga mengawasi mereka semasa mereka berlari), dan mengendalikan peristiwa seperti yang berlaku, dengan itu melampaui sistem sysvinit berasaskan klasik, berasaskan pergantungan.

Ia pada asalnya dibangunkan untuk pengedaran Ubuntu, tetapi digunakan dalam Red Hat Enterprise Linux 6.0. Walaupun ia bertujuan untuk sesuai untuk digunakan dalam semua pengagihan linux sebagai pengganti untuk sysvinit, pada waktunya ia dibayangi oleh sistemd. Pada 14 Februari 2014, Mark Shuttleworth (pengasas Canonical Ltd.) mengumumkan bahawa siaran masa depan Ubuntu akan menggunakan SystemD sebagai daemon init lalai.

Kerana ia SYSV Skrip permulaan untuk sistem telah begitu biasa untuk sekian lama, sebilangan besar pakej perisian termasuk skrip permulaan SYSV. Untuk menampung pakej sedemikian, Upstart menyediakan mod keserasian: ia menjalankan skrip permulaan SYSV di lokasi biasa (/etc/rc.D/RC?.d, /etc/init.D/RC?.d, /etc/rc?.d, atau lokasi yang serupa). Oleh itu, jika kita memasang pakej yang belum termasuk skrip konfigurasi awal, ia masih harus dilancarkan dengan cara yang biasa.

Selain itu, jika kami telah memasang utiliti seperti Chkconfig, anda sepatutnya dapat menggunakannya untuk menguruskan perkhidmatan berasaskan SYSV seperti yang kami lakukan pada sistem berasaskan sysvinit.

Skrip awal juga menyokong permulaan atau menghentikan perkhidmatan berdasarkan pelbagai tindakan yang lebih luas daripada skrip permulaan SYSV; Contohnya, upstart dapat melancarkan perkhidmatan setiap kali peranti perkakasan tertentu dilampirkan.

Sistem yang menggunakan skrip dan skrip asalnya secara eksklusif menggantikannya /etc/inittab fail dan spesifik runlevel SYSV Direktori skrip permulaan dengan .Conf Skrip dalam /etc/init direktori.

Ini *.Conf Skrip (juga dikenali sebagai definisi pekerjaan) umumnya terdiri daripada yang berikut:

    1. Penerangan mengenai proses.
    2. Runlevels di mana proses harus dijalankan atau peristiwa yang harus mencetuskannya.
    3. Runlevels di mana proses harus dihentikan atau peristiwa yang harus menghentikannya.
    4. Pilihan.
    5. Perintah untuk melancarkan proses.

Sebagai contoh,

# Perkhidmatan Ujian Saya - Demo Skrip Upstart Description "Di sini, perihalan 'Perkhidmatan Ujian Saya'" Pengarang "Dave Null <[email protected]>" # Stanzas # # stanzas Tentukan kapan dan bagaimana proses dimulakan dan dihentikan # lihat senarai stanza di sini: http: // upstart.Ubuntu.com/wiki/stanzas # respawn # Bila memulakan perkhidmatan bermula pada RunLevel [2345] # Bila menghentikan perkhidmatan berhenti di RunLevel [016] # secara automatik memulakan semula proses dalam hal Crash Respawn # Tentukan Direktori Kerja Chdir/Home/Dave/ MyFiles # Nyatakan Proses/Perintah (Tambahkan Argumen jika diperlukan) untuk menjalankan sandaran bash exec.SH Arg1 Arg2 

Untuk menggunakan perubahan, anda perlu memberitahu Upstart untuk memuatkan semula konfigurasinya.

# initctl konfigurasi semula 

Kemudian mulakan tugas anda dengan menaip arahan berikut.

$ sudo mulakan nama anda 

Di mana YourJobName adalah nama pekerjaan yang ditambah sebelumnya dengan YourJobName.Conf Skrip.

Panduan rujukan yang lebih lengkap dan terperinci untuk Upstart tersedia di laman web projek di bawah menu "Buku Masakan".

Ringkasan

Pengetahuan mengenai proses boot Linux diperlukan untuk membantu anda dengan tugas penyelesaian masalah serta dengan menyesuaikan prestasi komputer dan menjalankan perkhidmatan untuk keperluan anda.

Dalam artikel ini kami telah menganalisis apa yang berlaku dari saat ketika anda menekan Kuasa Tukar untuk menghidupkan mesin sehingga anda mendapat antara muka pengguna yang beroperasi sepenuhnya. Saya harap anda telah belajar membacanya seperti yang saya lakukan semasa menyatukannya. Jangan ragu untuk meninggalkan komen atau soalan anda di bawah. Kami sentiasa berharap dapat mendengar dari pembaca kami!

Menjadi Pentadbir Sistem Bersertifikat Linux