LFCS: Kusimamia Mchakato na Huduma za Kuanzisha Mfumo (SysVinit, Systemd na Upstart) - Sehemu ya 7


Miezi michache iliyopita, Wakfu wa Linux ulitangaza uthibitisho wa LFCS (Linux Foundation Certified Sysadmin), programu mpya ya kusisimua ambayo lengo lake ni kuruhusu watu kutoka pande zote za dunia kupata uthibitisho katika kutekeleza majukumu ya msingi hadi ya kati ya usimamizi wa mfumo kwenye mifumo ya Linux. Hii ni pamoja na kusaidia mifumo na huduma ambazo tayari zinaendeshwa, pamoja na kutafuta na uchanganuzi wa matatizo, pamoja na uwezo wa kuamua wakati wa kuibua masuala kwa timu za wahandisi.

Video ifuatayo inaelezea utangulizi mfupi wa Mpango wa Uthibitishaji wa Msingi wa Linux.

Chapisho hili ni Sehemu ya 7 ya mfululizo wa mafunzo 10, hapa katika sehemu hii, tutaeleza jinsi ya Kudhibiti Mchakato na Huduma za Kuanzisha Mfumo wa Linux, ambazo zinahitajika kwa ajili ya mtihani wa uidhinishaji wa LFCS.

Kusimamia Mchakato wa Kuanzisha Linux

Mchakato wa kuwasha mfumo wa Linux una awamu kadhaa, kila moja ikiwakilishwa na sehemu tofauti. Mchoro ufuatao unatoa muhtasari wa mchakato wa boot na unaonyesha vipengele vyote muhimu vinavyohusika.

Unapobonyeza kitufe cha Nguvu kwenye mashine yako, programu dhibiti ambayo imehifadhiwa kwenye EEPROM chip katika ubao mama huanzisha POST ( Mtihani wa Nguvu ya Kujiendesha) ili kuangalia hali ya rasilimali za vifaa vya mfumo. POST inapokamilika, programu dhibiti hutafuta na kupakia hatua ya 1 kipakiaji cha kuwasha, kilicho katika MBR au katika EFI. kizigeu cha diski ya kwanza inayopatikana, na inatoa udhibiti kwake.

MBR iko katika sekta ya kwanza ya diski iliyotiwa alama kuwa inayoweza kuwashwa katika mipangilio ya BIOS na ina ukubwa wa 512.

  1. Baiti 446 za Kwanza: Kipakiaji kinajumuisha msimbo unaoweza kutekelezeka na maandishi ya ujumbe wa hitilafu.
  2. Baiti 64 zinazofuata: Jedwali la Kugawa lina rekodi kwa kila sehemu nne (za msingi au zilizopanuliwa). Miongoni mwa mambo mengine, kila rekodi inaonyesha hali (inayofanya kazi/haifanyiki), saizi, na sekta za kuanza/kumalizia za kila kizigeu.
  3. Baiti 2 za mwisho: Nambari ya uchawi hutumika kama ukaguzi wa uthibitishaji wa MBR.

Amri ifuatayo hufanya nakala rudufu ya MBR (katika mfano huu, /dev/sda ni diski kuu ya kwanza). Faili inayotokana, mbr.bkp inaweza kusaidia iwapo jedwali la kizigeu litaharibika, kwa mfano, kuufanya mfumo uweze kuwashwa.

Bila shaka, ili kuitumia baadaye ikiwa haja itatokea, tutahitaji kuihifadhi na kuihifadhi mahali pengine (kama USB gari, kwa mfano). Faili hiyo itatusaidia kurejesha MBR na itatufanya tuende tena ikiwa na tu ikiwa hatutabadilisha mpangilio wa gari ngumu wakati huo huo.

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

Kwa mifumo inayotumia mbinu ya EFI/UEFI, mfumo dhibiti wa UEFI husoma mipangilio yake ili kubaini ni programu gani ya UEFI itazinduliwa na kutoka wapi (yaani, ni diski gani na kugawanya Sehemu ya EFI iko).

Kisha, hatua ya 2 kipakiaji cha kuwasha (kidhibiti cha buti) kinapakiwa na kuendeshwa. GRUB [Grand Unified Boot] ndicho kidhibiti cha kuwasha kinachotumiwa mara nyingi zaidi katika Linux. Moja ya matoleo mawili tofauti yanaweza kupatikana kwenye mifumo mingi inayotumiwa leo.

  1. Faili ya usanidi wa urithi wa GRUB: /boot/grub/menu.lst (usambazaji wa zamani, hautumiki na mifumo dhibiti ya EFI/UEFI).
  2. GRUB2 faili ya usanidi: kuna uwezekano mkubwa, /etc/default/grub.

Ingawa malengo ya mtihani wa LFCS hayaombi kwa uwazi maarifa kuhusu GRUB washiriki, kama wewe ni jasiri na unaweza kumudu kuharibu mfumo wako (unaweza kutaka kuijaribu. kwanza kwenye mashine ya kawaida, ikiwa tu), unahitaji kukimbia.

# update-grub

Kama mzizi baada ya kurekebisha usanidi wa GRUB ili kutekeleza mabadiliko.

Kimsingi, GRUB hupakia kernel chaguo-msingi na picha ya initrd au initramfs. Kwa maneno machache, initrd au initramfs husaidia kufanya utambuzi wa maunzi, upakiaji wa moduli ya kernel na ugunduzi wa kifaa muhimu ili kupata mfumo halisi wa faili wa mizizi.

Mara tu mfumo halisi wa faili unapokuwa juu, kernel itatekeleza mfumo na meneja wa huduma (init au systemd, ambayo kitambulisho cha mchakato au PID huwa 1 kila wakati) ili kuanza mtumiaji wa kawaida- mchakato wa kuwasha nafasi ili kuwasilisha kiolesura cha mtumiaji.

init na systemd zote ni daemons (michakato ya usuli) ambayo hudhibiti daemoni zingine, kama huduma ya kwanza kuanza (wakati wa kuwasha) na huduma ya mwisho kusitishwa (wakati wa kuzima).

Kuanzisha huduma (SysVinit)

Dhana ya viwango vya kukimbia katika Linux inabainisha njia tofauti za kutumia mfumo kwa kudhibiti huduma zinazoendeshwa. Kwa maneno mengine, runlevel inadhibiti ni kazi gani zinaweza kukamilishwa katika hali ya sasa ya utekelezaji = runlevel (na ni zipi haziwezi).

Kijadi, mchakato huu wa uanzishaji ulifanywa kulingana na kanuni ambazo zilitokana na Mfumo wa V UNIX, na mfumo kupita kutekeleza mkusanyiko wa hati zinazoanza na kusimamisha huduma kwani mashine inaingia katika kiwango maalum cha kukimbia (ambayo, kwa maneno mengine. , ni njia tofauti ya kuendesha mfumo).

Ndani ya kila kiwango cha kukimbia, huduma za kibinafsi zinaweza kuwekwa, au kuzimwa ikiwa zinaendeshwa. Matoleo ya hivi punde ya baadhi ya usambazaji mkubwa yanaondoka kwenye kiwango cha System V ili kupendelea huduma mpya na kidhibiti cha mfumo kiitwacho systemd (kinachowakilisha mfumo wa daemon), lakini kwa kawaida. saidia sysv amri kwa madhumuni ya uoanifu. Hii inamaanisha kuwa unaweza kuendesha zana nyingi zinazojulikana za sysv za init katika usambazaji wa msingi wa mfumo.

Soma Pia: Kwa nini ‘systemd’ inachukua nafasi ya ‘init’ katika Linux

Kando na kuanzisha mchakato wa mfumo, init hutazama faili ya /etc/inittab ili kuamua ni kiwango gani cha kukimbia lazima kiingizwe.

Ili kubadilisha kati ya viwango vya kukimbia, tunaweza tu kutoa mabadiliko ya kiwango cha kukimbia kwa kutumia init amri: init N (ambapo N ni mojawapo ya viwango vya kukimbia vilivyoorodheshwa hapo juu). Tafadhali kumbuka kuwa hii sio njia inayopendekezwa ya kupeleka mfumo unaoendesha hadi kiwango tofauti cha kukimbia kwa sababu haitoi onyo kwa watumiaji walioingia walioingia (hivyo kuwafanya kupoteza kazi na michakato kusitishwa isivyo kawaida).

Badala yake, amri ya kuzima inapaswa kutumika kuanzisha upya mfumo (ambao kwanza hutuma ujumbe wa onyo kwa watumiaji wote walioingia na kuzuia kuingia tena; kisha huashiria init kubadili viwango vya kukimbia); hata hivyo, kiwango cha uendeshaji chaguo-msingi (kile ambacho mfumo utaanza) lazima kihaririwe katika /etc/inittab faili kwanza.

Kwa sababu hiyo, fuata hatua hizi ili kubadili vizuri kati ya viwango vya kukimbia, Kama mzizi, tafuta mstari ufuatao katika /etc/inittab.

id:2:initdefault:

na ubadilishe nambari 2 ya kiwango cha kukimbia unachotaka na kihariri cha maandishi unachopendelea, kama vile vim (ilivyofafanuliwa katika Jinsi ya kutumia kihariri cha vi/vim katika Linux - Sehemu ya 2 ya mfululizo huu).

Ifuatayo, endesha kama mzizi.

# shutdown -r now

Amri hiyo ya mwisho itawasha upya mfumo, na kuufanya uanze katika kiwango cha kukimbia kilichobainishwa wakati wa kuwasha kinachofuata, na itaendesha hati zilizo katika /etc/rc[runlevel].d saraka ili kuamua ni huduma zipi zinapaswa kuanzishwa na zipi hazifai. Kwa mfano, kwa runlevel 2 katika mfumo ufuatao.

Ili kuwezesha au kuzima huduma za mfumo kwenye kuwasha, tutatumia amri ya chkconfig katika CentOS/openSUSE na sysv-rc-conf katika Debian na derivatives. Zana hii inaweza pia kutuonyesha ni hali gani iliyosanidiwa awali ya huduma kwa kiwango fulani cha kukimbia.

Soma Pia: Jinsi ya Kusimamisha na Kuzima Huduma Zisizotakikana kwenye Linux

Kuorodhesha usanidi wa kiwango cha kukimbia kwa huduma.

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

Katika picha iliyo hapo juu tunaweza kuona kwamba postfix imewekwa ili kuanza mfumo unapoingia katika viwango vya uendeshaji 2 hadi 5, ambapo mysqld b> itakuwa inaendeshwa kwa chaguomsingi kwa viwango vya kukimbia 2 hadi 4. Sasa tuseme kwamba hii sio tabia inayotarajiwa.

Kwa mfano, tunahitaji kuwasha mysqld kwa runlevel 5 pia, na kuzima postfix kwa runlevels 4 na 5. Hivi ndivyo tungefanya katika kila kesi (endesha amri zifuatazo kama mzizi).

# chkconfig --level [level(s)] service on
# chkconfig --level 5 mysqld on
# chkconfig --level [level(s)] service off
# chkconfig --level 45 postfix off

Sasa tutafanya kazi zinazofanana katika mfumo wa Debian-msingi kwa kutumia sysv-rc-conf.

Kusanidi huduma kuanza kiotomatiki kwenye kiwango maalum cha kukimbia na kuizuia kuanza kwa zingine zote.

1. Hebu tutumie amri ifuatayo ili kuona ni viwango vipi vya kukimbia ambapo mdadm imesanidiwa kuanza.

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

2. Tutatumia sysv-rc-conf ili kuzuia mdadm kuanza kwenye viwango vyote vya kukimbia isipokuwa 2. Angalia tu au ubatilishe uteuzi (kwa upau wa nafasi) unavyotaka (unaweza kusogea juu, chini, kushoto, na kulia kwa vitufe vya vishale).

# sysv-rc-conf

Kisha ubonyeze q ili kuacha.

3. Tutaanzisha upya mfumo na kuendesha tena amri kutoka HATUA YA 1.

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

Katika picha iliyo hapo juu tunaweza kuona kwamba mdadm imesanidiwa kuanza kwenye runlevel 2 pekee.

Vipi kuhusu systemd?

systemd ni kidhibiti kingine cha huduma na mfumo ambacho kinapitishwa na usambazaji mkubwa wa Linux. Inalenga kuruhusu uchakataji zaidi kufanywa sambamba wakati wa kuanzisha mfumo (tofauti na sysvinit, ambayo daima huwa ya polepole kwa sababu huanza kuchakata moja baada ya nyingine, kuangalia kama moja inategemea nyingine, na kusubiri. damoni kuzindua ili huduma zaidi ziweze kuanza), na kutumika kama usimamizi madhubuti wa rasilimali kwa mfumo unaoendesha.

Kwa hivyo, huduma zinaanzishwa inapohitajika (ili kuepuka kutumia rasilimali za mfumo) badala ya kuzinduliwa bila sababu thabiti wakati wa buti.

Kuangalia hali ya michakato yote inayoendeshwa kwenye mfumo wako, huduma za systemd asili na SysV, endesha amri ifuatayo.

# systemctl

Safu ya LOAD inaonyesha kama ufafanuzi wa kitengo (rejelea safu wima ya UNIT, ambayo inaonyesha huduma au kitu chochote kinachodumishwa na systemd) ilipakiwa ipasavyo, huku ACTIVE na SUB safu wima zinaonyesha hali ya sasa ya kitengo kama hicho.

Wakati safu wima ya ACTIVE inaonyesha kuwa hali ya kitengo haitumiki, tunaweza kuangalia kilichotokea kwa kutumia.

# systemctl status [unit]

Kwa mfano, katika picha iliyo hapo juu, media-samba.mount iko katika hali ya kushindwa. Hebu tukimbie.

# systemctl status media-samba.mount

Tunaweza kuona kwamba media-samba.mount imeshindwa kwa sababu mchakato wa kupachika kwenye seva pangishi dev1 haukuweza kupata ushiriki wa mtandao katika //192.168.0.10/gacanepa.

Kuanzisha au Kusimamisha Huduma

Mara tu kipengele cha kushiriki mtandao //192.168.0.10/gacanepa kinapopatikana, hebu tujaribu kuanza, kisha tusimamishe, na hatimaye kuanzisha upya kitengo media-samba.mount. Baada ya kutekeleza kila kitendo, hebu tuendeshe systemctl status media-samba.mount ili kuangalia hali yake.

# 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

Chini ya systemd unaweza kuwezesha au kuzima huduma inapojiwasha.

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

Mchakato wa kuwezesha au kuzima huduma kuanza kiotomatiki kwenye kuwasha inajumuisha kuongeza au kuondoa viungo vya ishara kwenye saraka ya /etc/systemd/system/multi-user.target.wants.

Vinginevyo, unaweza kujua hali ya sasa ya huduma (imewezeshwa au imezimwa) kwa amri.

# systemctl is-enabled [service]

Kwa mfano,

# systemctl is-enabled postfix.service

Kwa kuongeza, unaweza kuanzisha upya au kuzima mfumo na.

# systemctl reboot
# systemctl shutdown

Anza

Upstart ni badala ya tukio la /sbin/init daemon na ilitokana na hitaji la kuanzisha huduma pekee, wakati zinahitajika (pia kuzisimamia wakati wao zinaendeshwa), na kushughulikia matukio yanapotokea, na hivyo kupita mfumo wa sysvinit wa kawaida, unaotegemea utegemezi.

Hapo awali ilitengenezwa kwa usambazaji wa Ubuntu, lakini inatumika katika Red Hat Enterprise Linux 6.0. Ingawa ilikusudiwa kufaa kutumwa katika usambazaji wote wa Linux kama mbadala wa sysvinit, baada ya muda ilifunikwa na systemd. Mnamo Februari 14, 2014, Mark Shuttleworth (mwanzilishi wa Canonical Ltd.) alitangaza kwamba matoleo yajayo ya Ubuntu yangetumia systemd kama daemon chaguo-msingi ya init.

Kwa sababu SysV hati ya kuanzisha mfumo imekuwa ya kawaida sana kwa muda mrefu, idadi kubwa ya vifurushi vya programu ni pamoja na hati za uanzishaji za SysV. Ili kushughulikia vifurushi kama hivyo, Upstart hutoa modi ya uoanifu: Huendesha hati za kuanzisha SysV katika maeneo ya kawaida (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d, au eneo sawa). Kwa hivyo, ikiwa tutasakinisha kifurushi ambacho bado hakijumuishi hati ya usanidi ya Upstart, bado inapaswa kuzinduliwa kwa njia ya kawaida.

Zaidi ya hayo, ikiwa tumesakinisha huduma kama vile chkconfig, unapaswa kuwa na uwezo wa kuzitumia kudhibiti huduma zako za SysV kama vile tungefanya kwenye mifumo ya msingi ya sysvinit.

Hati za Uanzishaji pia zinaauni huduma za kuanzia au kusimamisha huduma kulingana na anuwai ya vitendo kuliko hati za uanzishaji za SysV; kwa mfano, Upstart inaweza kuzindua huduma wakati wowote kifaa maalum cha maunzi kimeambatishwa.

Mfumo unaotumia Upstart na hati zake asili huchukua nafasi ya /etc/inittab faili na saraka za hati za kuanzia za runlevel SysV na .conf hati katika saraka ya /etc/init.

Hati hizi za *.conf (pia hujulikana kama ufafanuzi wa kazi) kwa ujumla huwa na yafuatayo:

    1. Maelezo ya mchakato.
    2. Huendesha ngazi ambapo mchakato unapaswa kutekelezwa au matukio ambayo yanafaa kuuanzisha.
    3. Huendesha viwango ambapo mchakato unapaswa kusimamishwa au matukio ambayo yanafaa kuusimamisha.
    4. Chaguo.
    5. Agiza kuzindua mchakato.

    Kwa mfano,

    # 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
    

    Ili kutekeleza mabadiliko, utahitaji kuwaambia upstart ili kupakia upya usanidi wake.

    # initctl reload-configuration
    

    Kisha anza kazi yako kwa kuandika amri ifuatayo.

    $ sudo start yourjobname
    

    Ambapo jina lako la kazi ni jina la kazi ambayo iliongezwa awali na hati ya yourjobname.conf.

    Mwongozo kamili na wa kina zaidi wa marejeleo wa Upstart unapatikana katika tovuti ya mradi chini ya menyu Kitabu cha Kupikia.

    Muhtasari

    Maarifa ya mchakato wa kuwasha Linux ni muhimu ili kukusaidia kwa kazi za utatuzi na pia kurekebisha utendakazi wa kompyuta na huduma zinazoendeshwa kulingana na mahitaji yako.

    Katika makala haya tumechanganua kile kinachotokea kuanzia unapobofya swichi ya Nguvu ili kuwasha mashine hadi upate kiolesura kinachofanya kazi kikamilifu. Natumai umejifunza kuisoma kama vile nilivyojifunza wakati wa kuiweka pamoja. Jisikie huru kuacha maoni au maswali yako hapa chini. Tunatazamia kila wakati kusikia kutoka kwa wasomaji wetu!