LFCS: Sarrafa Tsarin Farko da Sabis (SysVinit, Systemd da Upstart) - Sashe na 7


Watanni biyu da suka gabata, Gidauniyar Linux ta sanar da takardar shedar LFCS (Linux Foundation Certified Sysadmin), sabon shiri ne mai kayatarwa wanda manufarsa ita ce baiwa mutane daga kowane lungu na duniya damar samun bodar yin aiki na asali zuwa matsakaicin ayyukan gudanarwa na tsarin akan tsarin Linux. Wannan ya haɗa da goyan bayan tsarin da ayyuka masu gudana, tare da gano matsala da bincike na farko, da ikon yanke shawara lokacin da za a ɗaga al'amura ga ƙungiyoyin injiniyanci.

Bidiyo mai zuwa yana bayyana taƙaitaccen gabatarwa ga Shirin Takaddar Gidauniyar Linux.

Wannan sakon shine Sashe na 7 na jerin koyarwa 10, anan a wannan bangare, zamuyi bayanin yadda ake Sarrafa Tsarin Farawa da Sabis na Linux, waɗanda ake buƙata don jarrabawar takaddun shaida na LFCS.

Gudanar da Tsarin Farawa na Linux

Tsarin boot na tsarin Linux ya ƙunshi matakai da yawa, kowannensu yana wakilta da wani sashi daban. Zane mai zuwa yana taƙaita tsarin taya kuma yana nuna duk manyan abubuwan da ke tattare da su.

Lokacin da kuka danna maɓallin Power akan injin ku, firmware ɗin da aka adana a cikin guntu EEPROM a cikin motherboard yana fara POST ( Gwajin Kai-Akan Ƙarfi) don bincika yanayin albarkatun kayan aikin tsarin. Lokacin da aka gama POST, firmware ɗin sai ta bincika ta loda mataki na farko boot loader, wanda ke cikin MBR ko a cikin EFI. bangaren faifai na farko da ake samu, kuma yana ba da iko gare shi.

MBR yana cikin sashin farko na faifan da aka yiwa alama a matsayin bootable a cikin saitunan BIOS kuma yana da girman 512 bytes.

  1. Na farko 446 bytes: Bootloader yana ƙunshe da lambar da za a iya aiwatarwa da kuma rubutun saƙon kuskure.
  2. Baiti 64 na gaba: Teburin Rarraba ya ƙunshi rikodin kowane bangare huɗu (na farko ko tsawaita). Daga cikin wasu abubuwa, kowane rikodin yana nuna matsayi (aiki/baya aiki), girman, da farawa/ƙare sassan kowane bangare.
  3. Baytes 2 na ƙarshe: Lambar sihirin tana aiki azaman tabbatarwa na MBR.

Umurni mai zuwa yana aiwatar da ajiyar MBR (a cikin wannan misali, /dev/sda shine babban diski na farko). Fayil ɗin da aka samu, mbr.bkp na iya zuwa da amfani idan teburin ɓangaren ya lalace, misali, yana sa tsarin ba zai iya yin booting ba.

Tabbas, domin mu yi amfani da shi daga baya idan bukatar hakan ta taso, muna bukatar mu ajiye shi mu adana shi a wani wuri daban (kamar kebul na USB, misali). Wannan fayil ɗin zai taimake mu mu maido da MBR kuma zai sa mu sake komawa idan kuma kawai idan ba mu canza shimfidar rumbun kwamfutarka ba a halin yanzu.

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

Don tsarin amfani da hanyar EFI/UEFI, UEFI firmware yana karanta saitunan sa don tantance ko wane aikace-aikacen UEFI za a ƙaddamar da kuma daga ina (watau faifan diski da ɓarna. Ana samun ɓangaren EFI).

Bayan haka, ana loda mataki na biyu boot loader (wanda aka fi sani da boot Manager) kuma yana gudana. GRUB [Grand Unified Boot] shine mafi yawan amfani da manajan taya a Linux. Ana iya samun ɗayan nau'ikan nau'ikan nau'ikan guda biyu akan yawancin tsarin da ake amfani da su a yau.

  1. Fayil ɗin sanyi na gado na GRUB: /boot/grub/menu.lst (tsohuwar rarrabawa, ba ta goyon bayan EFI/UEFI firmwares).
  2. GRUB2 fayil ɗin sanyi: mai yiwuwa, /etc/default/grub.

Ko da yake makasudin jarrabawar LFCS ba su fito fili suna neman ilimi game da GRUBin ciki ba, idan kana da jajircewa kuma za ka iya ɓata tsarinka (zaka iya gwada shi. na farko akan na'urar kama-da-wane, kawai idan akwai), kuna buƙatar gudu.

# update-grub

A matsayin tushen bayan an gyara tsarin GRUB don amfani da canje-canje.

Ainihin, GRUB yana loda tsohuwar kernel da hoton initrd ko initramfs. A cikin 'yan kalmomi, initrd ko initramfs suna taimakawa wajen gano kayan aikin, ƙwanƙwasa ƙirar kernel da gano na'urar da ake buƙata don samun ainihin tushen tsarin fayil ɗin.

Da zarar tushen tushen fayil ɗin ya tashi, kernel yana aiwatar da tsarin da manajan sabis (init ko systemd, wanda tsarin gano tsari ko PID koyaushe 1) don fara mai amfani na yau da kullun- tsarin taya sararin samaniya domin gabatar da mai amfani.

Dukansu init da systemd su ne daemons (tsari na baya) waɗanda ke sarrafa sauran daemons, a matsayin sabis na farko da za a fara (a lokacin boot) kuma sabis na ƙarshe don ƙarewa (lokacin rufewa).

Ayyukan Farawa (SysVinit)

Manufar runlevels a cikin Linux yana ƙayyadaddun hanyoyi daban-daban don amfani da tsarin ta hanyar sarrafa ayyukan da ke gudana. A wasu kalmomi, runlevel yana sarrafa abin da ayyuka za a iya yi a cikin halin yanzu na kisa = runlevel (kuma waɗanda ba za su iya ba).

A al'adance, an yi wannan tsari na farawa ne bisa ƙa'idodin da suka samo asali da System V UNIX, tare da tsarin yana aiwatar da tarin rubutun da ke farawa da dakatar da ayyuka yayin da na'ura ta shiga wani takamaiman matakin (wanda, a wasu kalmomi). , wani yanayi ne daban na tafiyar da tsarin).

A cikin kowane runlevel, ana iya saita sabis na mutum ɗaya don gudana, ko kuma a rufe idan yana gudana. Sabbin sigogin wasu manyan rarrabawa suna ƙaura daga ƙa'idar System V don goyon bayan sabon sabis da manajan tsarin da ake kira systemd (wanda ke nufin tsarin daemon), amma yawanci. goyan bayan sysv umarni don dalilai masu dacewa. Wannan yana nufin cewa za ku iya gudanar da mafi yawan sanannunsysv kayan aikin init a cikin rarraba tushen tsarin.

Karanta Hakanan: Me yasa 'systemd' ke maye gurbin 'init' a cikin Linux

Bayan fara tsarin tsarin, init yana duba fayil ɗin /etc/inittab don yanke shawarar abin da dole ne a shigar da runlevel.

Don canzawa tsakanin runlevels, za mu iya kawai ba da canjin runlevel ta amfani da umarnin init: init N (inda N yana ɗaya daga cikin matakan da aka jera a sama). Da fatan za a lura cewa wannan ba shine shawarar da aka ba da shawarar ɗaukar tsarin tafiyarwa zuwa wani matakin gudu daban ba saboda ba ya ba da gargaɗi ga masu amfani da ke ciki (don haka yana sa su rasa aiki da tafiyar matakai don ƙarewa ba daidai ba).

Maimakon haka, ya kamata a yi amfani da umarnin rufe don sake kunna tsarin (wanda zai fara aika saƙon gargaɗi ga duk masu amfani da shiga kuma yana toshe duk wani ƙarin shiga; sannan yana nuna alamar shiga don canza matakan runlevels); duk da haka, tsohon runlevel (wanda tsarin zai yi booting zuwa) dole ne a gyara shi a cikin fayil ɗin /etc/inittab da farko.

Don haka, bi waɗannan matakan don canzawa da kyau tsakanin runlevels, A matsayin tushen, nemi layi mai zuwa a /etc/inittab.

id:2:initdefault:

kuma canza lambar 2 don runlevel ɗin da ake so tare da editan rubutu da kuka fi so, kamar vim (wanda aka kwatanta a Yadda ake amfani da editan vi/vim a Linux – Sashe na 2 na wannan jerin).

Na gaba, gudu a matsayin tushen.

# shutdown -r now

Wannan umarni na na ƙarshe zai sake kunna tsarin, yana sa shi farawa a ƙayyadaddun runlevel yayin boot na gaba, kuma zai gudanar da rubutun da ke cikin /etc/rc[runlevel].d directory don yanke shawarar waɗanne ayyuka ya kamata a fara da waɗanda bai kamata ba. Misali, don runlevel 2 a cikin tsarin mai zuwa.

Don kunna ko kashe ayyukan tsarin akan taya, za mu yi amfani da umarnin chkconfig a cikin CentOS/openSUSE da sysv-rc-conf a cikin Debian da abubuwan da aka samo asali. Wannan kayan aikin kuma na iya nuna mana menene yanayin da aka riga aka tsara na sabis don wani matakin runduna.

Karanta Hakanan: Yadda ake Tsayawa da Kashe ayyukan da ba'a so a Linux

Lissafin tsarin daidaitawar runlevel don sabis.

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

A cikin hoton da ke sama muna iya ganin cewa an saita postfix don farawa lokacin da tsarin ya shiga runlevels 2 ta 5, yayin da mysqld b> zai gudana ta tsohuwa don matakan gudu 2 zuwa 4. Yanzu a ɗauka cewa wannan ba halin da ake tsammani ba ne.

Misali, muna buƙatar kunna mysqld don runlevel 5 haka nan, kuma mu kashe postfix don runlevels 4 da 5. Ga abin da za mu yi a kowane hali (gudanar da aikin. bin umarni azaman tushen).

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

Yanzu za mu yi irin wannan ayyuka a cikin tsarin Debian-based ta amfani da sysv-rc-conf.

Saita sabis don farawa ta atomatik akan takamaiman runlevel kuma hana shi farawa akan duk wasu.

1. Bari mu yi amfani da wannan umarni don ganin menene runlevels inda aka saita mdadm don farawa.

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

2. Za mu yi amfani da sysv-rc-conf don hana mdadm farawa a kan duk runlevels ban da 2. Kawai duba ko cirewa (tare da sandar sarari) yadda ake so (zaka iya matsa sama, ƙasa, hagu, da dama tare da maɓallan kibiya).

# sysv-rc-conf

Sannan danna q don barin.

3. Za mu sake kunna tsarin kuma mu sake gudanar da umarni daga MATA 1.

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

A cikin hoton da ke sama muna iya ganin cewa an saita mdadm don farawa kawai akan runlevel 2.

Menene Game da Systemd?

systemd wani sabis ne kuma mai sarrafa tsarin wanda manyan rarrabawar Linux da yawa ke ɗauka. Yana da nufin ba da damar yin ƙarin aiki a layi daya yayin farawa tsarin (sabanin sysvinit, wanda ko da yaushe yakan kasance a hankali saboda yana fara aiki ɗaya bayan ɗaya, bincika ko ɗayan ya dogara da wani, kuma yana jira. daemons don ƙaddamar da ƙarin ayyuka za su iya farawa), kuma don yin aiki a matsayin sarrafa albarkatun albarkatu zuwa tsarin aiki.

Don haka, ana fara ayyuka lokacin da ake buƙata (don guje wa cinye albarkatun tsarin) maimakon a ƙaddamar da shi ba tare da dalili mai ƙarfi ba yayin taya.

Duban matsayin duk hanyoyin da ke gudana akan tsarin ku, duka systemd na asali da ayyukan SysV, suna gudanar da umarni mai zuwa.

# systemctl

Rukunin LOAD yana nuna ko ma'anar naúrar (koma zuwa ginshiƙin UNIT, wanda ke nuna sabis ɗin ko duk wani abu da systemd ke kiyayewa) an ɗora shi da kyau, yayin da ACTIVE da SUB ginshikan suna nuna halin yanzu na wannan naúrar.

Lokacin da ginshiƙin ACTIVE ya nuna cewa matsayin naúrar ban da aiki, za mu iya duba abin da ya faru ta amfani da shi.

# systemctl status [unit]

Misali, a hoton da ke sama, media-samba.mount yana cikin yanayin rashin nasara. Mu gudu.

# systemctl status media-samba.mount

Za mu iya ganin cewa media-samba.mount ya gaza saboda tsarin hawan da ke kan masaukin dev1 ya kasa samun rabon hanyar sadarwa a //192.168.0.10/gacanepa.

Farawa ko Tsaida Ayyuka

Da zarar cibiyar sadarwa ta raba //192.168.0.10/gacanepa, bari mu yi ƙoƙarin farawa, sannan mu tsaya, kuma a ƙarshe za mu sake kunna naúrar media-samba.mount. Bayan yin kowane aiki, bari mu gudanar da tsarin systemctl media-samba.mount don bincika matsayinsa.

# 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

Ƙarƙashin systemd kuna iya kunna ko kashe sabis idan ta tashi.

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

Tsarin kunna ko kashe sabis don farawa ta atomatik akan taya ya ƙunshi ƙara ko cire hanyoyin haɗin gwiwa a cikin /etc/systemd/system/multi-user.target.wants directory.

A madadin, zaku iya gano matsayin sabis na yanzu (an kunna ko kashe) tare da umarnin.

# systemctl is-enabled [service]

Misali,

# systemctl is-enabled postfix.service

Bugu da kari, za ka iya sake yi ko rufe tsarin da.

# systemctl reboot
# systemctl shutdown

Upstart

Upstart shine maye gurbin tushen taron don /sbin/init daemon kuma an haife shi ne saboda buƙatar fara sabis kawai, lokacin da ake buƙata (kuma yana kula da su yayin da suke suna gudana), da kuma sarrafa abubuwan da suka faru yayin da suke faruwa, don haka sun zarce na al'ada, tsarin sysvinit na tushen dogaro.

An samo asali ne don rarraba Ubuntu, amma ana amfani dashi a cikin Red Hat Enterprise Linux 6.0. Ko da yake an yi niyya don dacewa da turawa a cikin duk rarrabawar Linux a matsayin maye gurbin sysvinit, cikin lokaci systemd ya lulluɓe shi. A ranar 14 ga Fabrairu, 2014, Mark Shuttleworth (wanda ya kafa Canonical Ltd.) ya ba da sanarwar cewa sakin Ubuntu na gaba zai yi amfani da tsarin azaman tsoho init daemon.

Saboda rubutun farawa na SysV na tsarin ya kasance gama gari na tsawon lokaci, babban adadin fakitin software sun haɗa da rubutun farawa na SysV. Don ɗaukar irin waɗannan fakiti, Upstart yana ba da yanayin dacewa: Yana gudanar da rubutun farawa na SysV a cikin wuraren da aka saba (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d, ko makamancinsa). Don haka, idan muka shigar da fakitin da har yanzu bai haɗa da rubutun daidaitawa na Upstart ba, yakamata ya ƙaddamar da shi ta hanyar da aka saba.

Bugu da ƙari, idan mun shigar da kayan aiki kamar chkconfig, ya kamata ku iya amfani da su don sarrafa ayyukan tushen SysV kamar yadda za mu yi akan tsarin sysvinit.

Rubutun Upstart kuma suna goyan bayan farawa ko dakatar da sabis dangane da ayyuka daban-daban fiye da rubutun farawa na SysV; misali, Upstart na iya ƙaddamar da sabis a duk lokacin da aka haɗa wani na'ura ta musamman.

Tsarin da ke amfani da Upstart da rubutunsa na asali na musamman ya maye gurbin fayil ɗin /etc/inittab da ƙayyadaddun kundayen adireshi na rubutun farawa-runlevel SysV tare da .conf Rubutun da ke cikin /etc/init directory.

Waɗannan rubutun *.conf (kuma aka sani da ma'anar aiki) gabaɗaya sun ƙunshi abubuwa masu zuwa:

    1. Bayyana tsarin.
    2. Matsakaicin inda tsarin ya kamata ya gudana ko abubuwan da zasu haifar da shi.
    3. Runlevels inda yakamata a dakatar da tsari ko abubuwan da yakamata su dakatar da shi.
    4. Zaɓuɓɓuka.
    5. Umarni don ƙaddamar da tsari.

    Misali,

    # 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
    

    Don aiwatar da canje-canje, kuna buƙatar gaya wa upstart don sake shigar da tsarin sa.

    # initctl reload-configuration
    

    Sannan fara aikinku ta hanyar buga umarni mai zuwa.

    $ sudo start yourjobname
    

    Inda sunan aikinku shine sunan aikin da aka ƙara a baya tare da rubutun yourjobname.conf.

    Ana samun ƙarin cikakken cikakken jagorar tunani na Upstart a cikin gidan yanar gizon aikin a ƙarƙashin menu \Littafin dafa abinci.

    Takaitawa

    Sanin tsarin boot ɗin Linux yana da mahimmanci don taimaka muku tare da ayyukan gyara matsala tare da daidaita ayyukan kwamfutar da ayyukan tafiyar da bukatun ku.

    A cikin wannan labarin mun yi nazarin abin da ke faruwa daga lokacin da kuka danna Power kunna na'ura har sai kun sami cikakken aikin mai amfani. Ina fatan kun koyi karanta shi kamar yadda na yi yayin hada shi tare. Jin kyauta don barin sharhi ko tambayoyinku a ƙasa. A ko da yaushe muna jiran ji daga masu karatun mu!