Jinsi ya Kubadilisha Vigezo vya Muda wa Kuendesha Kernel kwa Njia Inayoendelea na Isiyo Kudumu


Katika Sehemu ya 13 ya hii jinsi ya kutumia GRUB kurekebisha tabia ya mfumo kwa kupitisha chaguo kwenye kernel kwa mchakato unaoendelea wa kuwasha.

Vile vile, unaweza kutumia safu ya amri katika mfumo wa Linux unaoendesha kubadilisha vigezo fulani vya wakati wa kukimbia kama urekebishaji wa mara moja, au kwa kudumu kwa kuhariri faili ya usanidi.

Kwa hivyo, unaruhusiwa kuwezesha au kuzima vigezo vya kernel on-the-fly bila shida sana inapohitajika kutokana na mabadiliko yanayohitajika katika njia ambayo mfumo unatarajiwa kufanya kazi.

Kuanzisha mfumo wa faili /proc

Ubainifu wa hivi punde zaidi wa Kiwango cha Utawala wa Mfumo wa Faili unaonyesha kuwa /proc inawakilisha mbinu chaguo-msingi ya kushughulikia mchakato na maelezo ya mfumo pamoja na kernel na maelezo mengine ya kumbukumbu. Hasa, /proc/sys ndipo unaweza kupata taarifa zote kuhusu vifaa, viendeshaji, na baadhi ya vipengele vya kernel.

Muundo halisi wa ndani wa /proc/sys unategemea sana kernel inayotumika, lakini kuna uwezekano wa kupata saraka zifuatazo ndani. Kwa upande mwingine, kila moja yao itakuwa na subdirectories zingine ambapo maadili ya kila kategoria ya parameta yanadumishwa:

  1. dev: vigezo vya vifaa mahususi vilivyounganishwa kwenye mashine.
  2. fs: usanidi wa mfumo wa faili (vifungu na ingizo, kwa mfano).
  3. kernel: usanidi maalum wa kernel.
  4. net: usanidi wa mtandao.
  5. vm: matumizi ya kumbukumbu pepe ya kernel.

Ili kurekebisha vigezo vya muda wa kernel tutatumia sysctl amri. Idadi kamili ya vigezo vinavyoweza kurekebishwa vinaweza kutazamwa na:

# sysctl -a | wc -l

Ikiwa unataka kutazama orodha kamili ya vigezo vya Kernel, fanya tu:

# sysctl -a 

Kwa kuwa matokeo ya amri hapo juu yatakuwa na mistari mingi, tunaweza kutumia bomba ikifuatiwa na less kuikagua kwa uangalifu zaidi:

# sysctl -a | less

Hebu tuangalie mistari michache ya kwanza. Tafadhali kumbuka kuwa herufi za kwanza katika kila mstari zinalingana na majina ya saraka ndani ya /proc/sys:

Kwa mfano, mstari ulioangaziwa:

dev.cdrom.info = drive name:        	sr0

inaonyesha kuwa sr0 ni lakabu kwa hifadhi ya macho. Kwa maneno mengine, hivyo ndivyo kernel \inaona inayoendesha na kutumia jina hilo kurejelea.

Katika sehemu ifuatayo tutaeleza jinsi ya kubadilisha vigezo vingine vya muhimu zaidi vya kernel katika Linux.

Jinsi ya Kubadilisha au Kurekebisha Vigezo vya Runtime vya Linux Kernel

Kulingana na kile tulichoeleza kufikia sasa, ni rahisi kuona kwamba jina la kigezo linalingana na muundo wa saraka ndani ya /proc/sys ambapo inaweza kupatikana.

Kwa mfano:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

Hiyo ilisema, tunaweza kuona thamani ya parameta fulani ya Linux kernel kwa kutumia sysctl ikifuatiwa na jina la kigezo au kusoma faili inayohusishwa:

# sysctl dev.cdrom.autoclose
# cat /proc/sys/dev/cdrom/autoclose
# sysctl net.ipv4.ip_forward
# cat /proc/sys/net/ipv4/ip_forward

Ili kuweka thamani ya kigezo cha kernel tunaweza pia kutumia sysctl, lakini kwa kutumia chaguo la -w na kufuatiwa na jina la kigezo, ishara sawa na thamani inayotakiwa.

Njia nyingine inajumuisha kutumia echo kufuta faili inayohusishwa na kigezo. Kwa maneno mengine, mbinu zifuatazo ni sawa na kuzima utendakazi wa usambazaji wa pakiti kwenye mfumo wetu (ambao, kwa njia, unapaswa kuwa dhamana chaguo-msingi wakati kisanduku hakitakiwi kupitisha trafiki kati ya mitandao):

# echo 0 > /proc/sys/net/ipv4/ip_forward
# sysctl -w net.ipv4.ip_forward=0

Ni muhimu kutambua kwamba vigezo vya kernel ambavyo vimewekwa kwa kutumia sysctl vitatekelezwa tu wakati wa kipindi cha sasa na vitatoweka mfumo utakapowashwa upya.

Ili kuweka thamani hizi kabisa, hariri /etc/sysctl.conf na thamani zinazohitajika. Kwa mfano, ili kuzima usambazaji wa pakiti katika /etc/sysctl.conf hakikisha mstari huu unaonekana kwenye faili:

net.ipv4.ip_forward=0

Kisha endesha amri ifuatayo ili kutumia mabadiliko kwenye usanidi unaoendesha.

# sysctl -p

Mifano mingine ya vigezo muhimu vya wakati wa kernel ni:

fs.file-max inabainisha idadi ya juu zaidi ya vishikio vya faili ambavyo kernel inaweza kutenga kwa mfumo. Kulingana na matumizi yaliyokusudiwa ya mfumo wako (wavuti/hifadhidata/seva ya faili, kutaja mifano michache), unaweza kutaka kubadilisha thamani hii ili kukidhi mahitaji ya mfumo.

Vinginevyo, utapokea \faili nyingi sana zilizofunguliwa ujumbe wa hitilafu bora zaidi, na huenda ukazuia mfumo wa uendeshaji kuwasha wakati mbaya zaidi.

Iwapo kutokana na kosa lisilo na hatia utajikuta katika hali hii ya mwisho, washa katika hali ya mtumiaji mmoja (kama ilivyoelezwa katika Sehemu ya 14 - Kufuatilia na Kuweka Matumizi ya Kikomo cha Mchakato wa Linux ya mfululizo huu.

kernel.sysrq hutumika kuwezesha ufunguo wa SysRq kwenye kibodi yako (pia hujulikana kama ufunguo wa skrini ya kuchapisha) ili kuruhusu michanganyiko fulani ya vitufe kutekeleza vitendo vya dharura wakati mfumo umeacha kuitikia.

Thamani chaguo-msingi (16) inaonyesha kuwa mfumo utaheshimu Alt+SysRq+key mseto na kutekeleza vitendo vilivyoorodheshwa katika hati za sysrq.c zinazopatikana katika kernel.org (ambapo ufunguo ni herufi moja kwenye safu ya b-z). Kwa mfano, Alt+SysRq+b itawasha upya mfumo kwa nguvu (tumia hili kama suluhu la mwisho ikiwa seva yako haitafanya kazi).

Onyo! Usijaribu kubonyeza mseto huu wa vitufe kwenye mashine pepe kwa sababu inaweza kulazimisha mfumo wa mwenyeji wako kuwasha upya!

Ikiwekwa kuwa 1, net.ipv4.icmp_echo_ignore_all itapuuza maombi ya ping na kuyaweka kwenye kiwango cha kernel. Hii inaonyeshwa kwenye picha hapa chini - kumbuka jinsi maombi ya ping yanapotea baada ya kuweka parameta hii ya kernel:

Njia bora na rahisi ya kuweka vigezo vya muda wa matumizi ni kutumia faili za .conf ndani ya /etc/sysctl.d, ukizipanga katika vikundi.

Kwa mfano, badala ya kuweka net.ipv4.ip_forward=0 na net.ipv4.icmp_echo_ignore_all=1 katika /etc/sysctl.conf, tunaweza kuunda faili mpya iitwayo net.conf ndani /etc/ sysctl.d:

# echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf
# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf

Ukichagua kutumia mbinu hii, usisahau kuondoa mistari hiyo hiyo kutoka /etc/sysctl.conf.

Muhtasari

Katika makala hii tumeelezea jinsi ya kurekebisha vigezo vya muda wa kernel, vinavyoendelea na visivyoendelea, kwa kutumia sysctl, /etc/sysctl.conf, na faili ndani /etc/sysctl.d.

Katika hati za sysctl unaweza kupata habari zaidi juu ya maana ya anuwai zaidi. Faili hizo zinawakilisha chanzo kamili zaidi cha hati kuhusu vigezo vinavyoweza kuwekwa kupitia sysctl.

Je, umepata makala hii kuwa muhimu? Hakika tunatumai ulifanya. Usisite kutufahamisha ikiwa una maswali au mapendekezo ya kuboresha.