Nambari za chanzo cha Kernel. Kuunda kinu chako cha Linux. Kufungua msimbo wa chanzo cha kernel

Inapakia yoyote ya kisasa mfumo wa uendeshaji, huu ni mchakato mgumu wa hatua nyingi. Katika tofauti Usambazaji wa Linux Mchakato wa kupakua unaweza kutofautiana kidogo, lakini mpango wa jumla ni takriban sawa na inajumuisha hatua zifuatazo:

    Tekeleza nambari ya BIOS. Uanzishaji wa vifaa. Chaguo vyombo vya habari vya bootable. Kusoma bootloader kwenye RAM na kuhamisha udhibiti kwake. Kipakiaji cha boot kawaida huchukua sekta moja kwenye diski na ni mdogo kwa saizi ya ka 384 (ka 512 - sekta ya diski, minus 128 byte - meza ya kizigeu). Kulingana na aina ya kifaa cha boot, sekta ya boot inaweza kusomwa kutoka sehemu tofauti:

    • Wakati wa kupiga kura kutoka kwa diski ya floppy au gari ngumu, bootloader inasoma kutoka sekta ya kwanza ya vyombo vya habari vya kimwili;
    • Wakati wa kupiga kura kutoka kwa CD / DVD - kutoka kwa sekta ya kwanza ya picha ya disk ya boot iko katika muundo wa data ya CD;
    • Wakati wa kupiga kura kwenye mtandao, kutoka kwa sekta ya kwanza ya picha ya disk ya boot iliyopakuliwa kutoka kwa seva kupitia itifaki ya tftp.

    Skrini katika hatua hii inaonyesha habari kuhusu Toleo la BIOS, mchakato wa kuangalia RAM kupatikana anatoa ngumu. Msimbo wa kipakiaji cha kuwasha ni mdogo sana kujumuisha utendakazi wa uchapishaji wa habari, lakini unaweza kutoa ujumbe mfupi kuhusu makosa.

    Kusoma bootloader kuu (GRUB, LiLo, NTLDR) kwenye kumbukumbu na kutekeleza msimbo wake. Kwa kuwa bootloader ni ndogo sana, kama sheria, sekta ambazo kanuni kuu ya bootloader lazima isomwe ni ngumu katika kanuni zake. Kwenye HDD, hii inaweza kuwa nafasi kati ya MBR na kizigeu cha kwanza kwenye diski (kufuatilia sifuri). Kwenye diski ya floppy na unapotumia picha ya diski wakati wa kupiga kura kutoka kwa CD na kwenye mtandao, bootloader kuu inaweza kupatikana mara moja baada ya bootloader ya msingi na kuchukua kiasi kizima cha picha.

    Inapakia kernel (vmlinuz) na picha ya diski msaidizi (initrd). Kipakiaji kikuu cha buti kina akili ya kutosha kupata faili ya usanidi, faili ya picha ya kernel, na faili ya picha ya diski msaidizi katika mfumo wa faili. Ikiwa ni lazima, picha ya kernel imefunguliwa kwenye RAM, na eneo la kumbukumbu linaundwa lenye vigezo vinavyopitishwa kutoka kwa bootloader hadi kwenye kernel, ikiwa ni pamoja na anwani ya picha ya disk ya msaidizi.

    Disk msaidizi ni muhimu kwa kisasa Mifumo ya Linux kutokana na modularity ya kernel na ina madereva (ATA, NFS, RAID, nk) muhimu ili kupata mfumo mkuu wa faili.

    Katika hatua hii, mchakato na pid=1 huundwa, ambayo hati ya init inatekelezwa, iko kwenye saraka ya mizizi ya diski ya msaidizi. Chaguzi zinazopitishwa kwa kernel kwa kweli hupitishwa kwa init kama hoja za mstari wa amri.

    Hati ina upakuaji madereva muhimu kwa namna ya moduli za kernel, kuunda faili za muda vifaa kwenye saraka ya /dev kufikia moduli hizi, soma sehemu za diski kugundua na kuanzisha RAID na ujazo wa kimantiki. Baada ya anatoa za kimantiki kuanzishwa, jaribio linafanywa la kuweka mfumo wa faili wa mizizi, maalum na parameter mzizi=. Katika kesi ya diskless boot ya mtandao Jaribio linafanywa kuweka saraka ya mizizi kupitia NFS.

    Ujumbe huonekana kwenye skrini kuhusu kupakia viendeshaji na kutafuta kiasi pepe cha mfumo mdogo wa LVM. Hatua hiyo inakamilishwa kwa kuweka tena saraka ya mizizi kwenye mfumo mkuu wa faili na kupakia programu kuu /sbin/init (au inayolingana nayo) kwenye mchakato na pid=1.

    Katika UNIX ya zamani na ya zamani Matoleo ya Linux(hadi mwaka wa 2012), programu ya init inasoma faili ya usanidi ya /etc/inittab, inaanzisha viunga vya maandishi, na kwa kawaida huanza huduma zinazohitajika kwa kutumia seti ya hati ziko kwenye /etc/init.d na /etc/rc*.d saraka. Kwenye usambazaji wa kisasa wa Linux, faili ya /sbin/init ina zaidi ya programu ya kisasa kuanza huduma. Maarufu zaidi ya programu zinazofanana ni upstart na systemd, ambayo inaweza kupunguza kwa kiasi kikubwa wakati wa awamu hii ya boot.

    Katika hatua hii, mistari huonyeshwa kwenye skrini inayoonyesha kuwa huduma zimeanza na habari kuhusu mafanikio mchakato huu(au).

Kipakiaji cha buti cha GRUB

Boot kutoka kwa diski ya usakinishaji kwenye hali ya Uokoaji. Ili kufanya hivyo, kwa haraka ya boot, lazima uweke uokoaji wa linux kwa haraka ya boot

Ikiwa kila kitu kitaenda vizuri, saraka ya mizizi ya mfumo mkuu itawekwa ndani /mnt/sysimage, saraka ya boot katika /mnt/sysimage/boot. Mbali na hilo katalogi za sasa/proc , /sys na /dev zitawekwa katika safu zao ndogo /mnt/sysimage. Ikiwa hii haifanyika, basi utalazimika kufanya shughuli hizi kwa mikono.

Wakati saraka zote zimewekwa, unaweza kubadilisha saraka ya mizizi

#ikiwa itabadilika kuwa umesahau kuweka kitu, unaweza kutoka kupitia ^D chroot /mnt/sysimage

na kujenga upya initrd

#nakili faili nzee cp -p /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak #create a new dracut -f #if the kernel version on the mfumo mkuu ni tofauti na matoleo disk ya ufungaji, ieleze kwa uwazi dracut -f /boot/initramfs-2.6.32-358.el6.x86_64.img 2.6.32-358.el6.x86_64

#nakili faili la zamani cp -p /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak #unda mpya mkinitrd -f -v /boot/initrd -$( uname -r).img $(uname -r) #ikiwa toleo la kernel katika mfumo mkuu linatofautiana na toleo la kwenye diski ya usakinishaji, libainishe kwa uwazi mkinitrd -f -v /boot/initrd-2.6.18- 371.el5.img 2.6. 18-371.el5

Cd/Sync telinit 6

Mfano kamili na dereva wa i2o_block (adaptec 2010S SCSI), ambayo haipakii kiotomatiki. Mfano unatumia CentOS 5 kwa sababu kernel ya kawaida ya CentOS 6 haitumii kiendeshi hiki.

Baada ya kuanza kutoka kwa CD hadi kwa hali ya Uokoaji, ujumbe unaonekana Sehemu za Linux hazipatikani na lazima zisakinishwe kwa kujitegemea.

#Pakia kiendeshaji insmod i2o_block #Angalia kuwa kila kitu kilifanya kazi lsmod .... dmesg ... #Unda faili za kifaa kulingana na maelezo katika dmesg mkdir /dev/i2o mknod /dev/i2o/hda b 80 0 mknod /dev/i2o / hda1 b 80 1 mknod /dev/i2o/hda2 b 80 2 #Activate VolumeGroup lvm vgchange -a y #Mount volumes mkdir /mnt/sysimage mount /dev/mapper/VolGroup00-LogVol00 /mountovda1 /mnt/sy / mnt/sysimage/boot #Panda saraka maalum --bind /proc /mnt/sysimage/proc mount --bind /dev /mnt/sysimage/dev mount --bind /sys /mnt/sysimage/sys

Zaidi kulingana na maagizo, tu wakati wa kuunda picha ya diski unahitaji kutaja programu ya mkinitrd chaguo la ziada--preload=i2o_block na uzime huduma za usomaji, kwani husababisha kiendesha i2o_block kunyongwa:

Chkconfig -soma mapema mbali na chkconfig baadaye -soma mbele

Mara ya mwisho tulizungumza juu ya kile kinachotokea wakati buti za Linux: kwanza kipakiaji cha buti kinapoanza, hupakia kernel na kupeleka diski ya muda kwa kumbukumbu ya ufikiaji bila mpangilio, kernel huanza mchakato wa init, init hupata diski halisi ya mizizi, hufanya mapinduzi ya hila - badala ya ya muda mfupi. diski halisi diski halisi imewekwa katika sehemu moja kwenye saraka ya mizizi, kutoka kwa diski hii halisi mchakato wa init hupakia init nyingine ambayo iko kwenye hii. disk halisi. Baada ya shughuli hizi zote, UNIX inarudi kwenye hali yake ya kawaida ya uendeshaji.

Katika somo hili nitakuambia nini hufanya programu ya classical init pamoja na hati za mfumo wa V rc.d. Mfumo V ni toleo la classic UNIX ambayo UNIX ya kibiashara imejengwa.

Kama jina linavyopendekeza, rc.d ni saraka. Kuna mila ya UNIX - ikiwa usanidi mzima wa kitu unalingana na faili moja, na inaitwa usanidi, basi inapogawanywa katika faili tofauti ambazo zimeunganishwa na ile kuu, huunda saraka kwa jina moja na kuongeza usanidi. .d kwa jina.d. Barua d inamaanisha kuwa hii ni saraka na sehemu za usaidizi za faili ya usanidi ziko hapo. Umbizo la faili ya usanidi wa programu ya init ina mila mbili: lahaja ya Mfumo V, ambapo kila undani wa usanidi huwekwa katika faili tofauti katika saraka ya rc.d, na mapokeo. Mifumo ya BSD, ambamo kuna faili moja /etc/rc iliyo na maandishi mengi na anuwai ambayo inawajibika kwa tabia ya mfumo.

Kwa hali yoyote, mfumo unapoanza, tunaunda mchakato na PID=1, ambayo programu inayoitwa init inazinduliwa. Kama ulivyoona mara ya mwisho, ikiwa programu ya init itauawa, kernel inaogopa na inasimamisha kazi yote.

Mfumo wa kawaida wa mfumo wa V husoma /etc/inittab faili na kutekeleza idadi ya maagizo ambayo yameandikwa katika faili hii. Ingiza hii faili ya maandishi kila mstari ambao, kwa kweli, ni amri moja au aina fulani ya kanuni ya tabia. Inittab inaonekana kama hii:

id:3:msingi-msingi:

si::sysinit:/etc/rc.d/rc.sysinit

l3:3:subiri:/etc/rc.d/rc 3

ca::ctrlaltdel:/sbin/shutdown -t3 -r sasa

Kuna lebo mwanzoni mwa mstari. Sielewi maana kubwa ya lebo hii ni nini. Tunaweza kudhani kuwa hii ni maandishi rahisi na ndivyo tu. Hatua ya pili ni ama kinachojulikana kiwango cha mzigo, au thamani tupu. Kiwango cha upakiaji ama ni nambari moja kutoka 0 hadi 6, au orodha ya nambari zinazotenganishwa na koma. Ifuatayo inakuja hatua fulani. Vitendo ni kama ifuatavyo: kusubiri, respawn, sysinit, ctrlaltdel. Kuna vitendo vingine, lakini hizi ndizo zinazotumiwa zaidi. Hatimaye, mwishoni mwa mstari kuna amri fulani iliyoandikwa na jina la faili inayoweza kutekelezwa na hoja ambazo zinapaswa kupitishwa kwa amri hii.

Kitendo cha sysinit kinatekelezwa mara moja wakati wa kuanzisha mfumo.

Kitendo cha ctrlaltdel si kitendo hata kidogo - ni kidhibiti cha njia ya mkato ya kibodi alt del. Bofya yenyewe inaingiliwa na kernel ya mfumo, na taarifa kuhusu hili inatumwa kwa mchakato wa init, ambao lazima utekeleze amri maalum. Kwa mfano, inaweza kufanyika amri ya kuzima, ambayo itazima kompyuta. Kimsingi, unaweza kusajili programu nyingine yoyote hapa, kwa mfano, echo, ambayo, baada ya kushinikiza kudhibiti alt del, itatoa ujumbe kwa vituo vyote vya mfumo. koni ya mahali pa moto kama hii

Hatua ya kusubiri ina maana kwamba unahitaji kuendesha amri, kusubiri hadi ikamilishe na kisha tu kuendelea na usindikaji mistari ifuatayo. Sijui ikiwa vitendo kama hivyo vinaweza kuzinduliwa kwa usawa. Uwezekano mkubwa zaidi hapana.

Kitendo cha kuunda upya inamaanisha kuwa unahitaji kuendesha programu na, bila kungoja ikamilike, nenda kwa vitendo zaidi. Programu hii ikiisha, lazima iwashwe upya.

Kwa hivyo, kuna utekelezaji mmoja na kungojea matokeo na utekelezaji mwingi katika hali ya asynchronous - walianza, wakingojea hadi ikaisha, wakazindua maneno.

Viwango vya upakiaji ni makubaliano ambayo hukuruhusu kudhibiti ni huduma zipi zinazopakiwa. Analog ya karibu zaidi katika Windows inapakia ndani hali salama wakati wa kupakia tu idadi ndogo madereva na kuanza idadi ya chini ya huduma, kupakia na urekebishaji, wakati kila hatua imeingia, na upakiaji kamili wa kawaida.

Linux jadi ina chaguzi 6 za boot. Mgawanyiko huu ni wa kiholela.

0 na 6 zimezimwa. 0 - kuzima kabisa umeme, na 6 ni hali ya kuwasha upya.

4 imerukwa kabisa kwenye Linux

Kuna viwango vinne vya upakiaji vilivyosalia:

1 - mode ya mtumiaji mmoja. Ikiwa utaipitisha kwa bootloader neno kuu single, basi tutajikuta katika hali ya mtumiaji mmoja, ambapo mchakato mmoja tu unafanya kazi na hii ni ganda la msimamizi wa mfumo. Hali hii inatumika kurejesha mfumo.

3 - hali ya kawaida ya maandishi ya watumiaji wengi, wakati huduma zote zinafanya kazi, mtandao unafanya kazi, madereva yote yanafanya kazi.

2 - pia hali ya maandishi, lakini bila uhusiano anatoa mtandao. Ukweli ni kwamba faili ya mtandao wa jadi mfumo wa nfs, ambayo inatumika katika UNIX, ni sugu sana kwa uharibifu wa mtandao. Ikiwa tulizima seva ya faili au kupunguzwa cable mtandao, basi mfumo wa faili wa mtandao wa nfs utafanya majaribio mengi ya kurejesha na majaribio haya ni ya muda mrefu kwamba sikuweza kungoja hadi ujumbe wa makosa uonekane. Labda hii itatokea kwa saa moja, au labda katika masaa 6. Wakati huu wote, dereva wa nfs atashikilia kompyuta, kukuzuia kufanya chochote. Kwa hivyo, ikiwa mtandao wetu au seva ya faili itaanguka, mipangilio inasema kwamba wakati wa kuanza ni muhimu kuweka anatoa za nje, basi jaribio litaingia hali kamili itasababisha kila kitu kuganda kwako. Kwa kesi hii, chaguo la pili la boot hutolewa - kila kitu ni sawa na katika tatu, anatoa mtandao tu haziunganishwa. Mimi mwenyewe adapta ya mtandao inafanya kazi, anwani ya IP imepewa, mtandao unapatikana.

5 - sawa na 3, lakini kwa uzinduzi wa dirisha la x - interface ya graphical.

mode 2 inajumuisha 1 + mode ya wachezaji wengi. 3 inajumuisha 2 + mlima wa mtandao mifumo ya faili. Hatimaye, 5 inajumuisha 3 + uzinduzi mfumo mdogo wa michoro. Ikiwa hii itatekelezwa mara kwa mara au la ni suala la usambazaji. Kwa ujumla, wasimamizi wanaweza kujitegemea kusanidi faili ya inittab ili njia hizi zizinduliwe kwa mlolongo, au wanaweza kufanya kila kitu kuwa huru kabisa - kwa kubadili mode inayofuata, tunaondoa kila kitu kilichofanywa katika hatua ya awali na kusanidi kila kitu kutoka mwanzo.

Hebu tuangalie mistari ya faili halisi. Wao ni rahisi sana.

l3:3:subiri:/etc/rc.d/rc 3

Programu fulani imezinduliwa ambayo inapaswa kufanya kila kitu vitendo muhimu, ambazo zinatarajiwa katika ngazi ya tatu. Pengine, katika ngazi ya tatu unahitaji kusanidi miingiliano ya mtandao, uzindua dereva wa terminal, na uanze huduma fulani. Tu baada ya haya yote kukamilika tutaweza kufanya kazi katika mfumo. Kwa kuwa tunahitaji kusubiri uzinduzi ukamilike, tunachagua kitendo cha kusubiri.

Kizindua kinaitwa rc na huzinduliwa na nambari ya kiwango kama kigezo. Programu ya init yenyewe ni rahisi sana. Anaweza kusoma laini yake ya faili kwa mstari na sintaksia rahisi na kuanza michakato mipya kwa kuzindua baadhi programu za msaidizi. Mantiki yote ya kiwango cha upakiaji imefichwa kwenye hati ya rc. Kwa kukimbia rc na parameter 3 tutaenda ngazi ya tatu, na parameter 5 - hadi tano.

Mpango wa rc pia ni rahisi sana. Huu ni hati ambayo hutekeleza faili zote katika saraka zinazolingana na kiwango cha mzigo, kwa mfano /etc/rc3.d/. Saraka hizi zina faili zinazoweza kutekelezwa, ambayo huchukua parameter moja - ama kuanza au kuacha. Ikiwa faili imezinduliwa na parameter ya kuanza, basi huanza huduma, ikiwa na parameter ya kuacha, inaiacha. Kwa mfano, kuanza kwa mtandao kutasanidi miingiliano ya mtandao, na kusimamishwa kwa mtandao kutaweka violesura katika hali ya kuzimwa. Isipokuwa violesura vya mtandao Kuna maandishi ya kuunganisha/kukata mifumo ya faili za mtandao, kuanzia/kusimamisha huduma, n.k.

Majina ya faili katika saraka zilizojengwa kulingana na sheria fulani. Wanaanza na herufi K au herufi S, ikifuatiwa na nambari na jina la huduma.

Hati ya rc inaangalia yaliyomo kwenye saraka ya rc3 na kuchagua kutoka hapo faili zote zinazoanza na herufi K (kuua). Faili zimeagizwa kwa utaratibu wa kupanda na kutekelezwa na parameter ya kuacha. Kisha vitendo sawa vinafanywa na faili zinazoanza na barua S (kuanza), ambazo zinazinduliwa na parameter ya kuanza. Hiyo, kwa ujumla, ni utaratibu mzima wa kuhamia ngazi fulani.

Tunaweza kudhani kuwa saraka ya /etc/rc0.d/ ina faili tu zinazoanza na herufi K, kwani kila kitu kinahitaji kusimamishwa wakati wa kuzima, na saraka ya /etc/rc1.d/ itakuwa na faili moja na herufi S. kwa kuzindua koni ya msimamizi.

Kwa urahisi wa programu, kuna saraka tofauti /etc/init.d/, ambayo ina faili sawa tu bila barua na nambari mwanzoni mwa jina. Kwa kweli, faili katika saraka za ngazi ni viungo vya mfano kwa faili kuu. Kwa hivyo /etc/rc3.d/S10apache ni kiunga cha faili /etc/init.d/apache. Barua na nambari katika majina ya viungo zinahitajika ili hati ya rc iwaite kwa mpangilio sahihi na kwa hoja zinazofaa.

Katika mifumo ambayo imejengwa juu ya kanuni hii, ili kuanza au kuacha huduma yoyote katika saraka ya /etc/init.d/, unahitaji kupata faili inayofanana nayo na kuanza na parameter ya kuanza au kuacha. Nini si cha kupenda kuhusu kuanzisha huduma kwa njia hii - kwa kupiga simu maandishi waziwazi. Jambo ni kwamba katika timu line linux Kukamilisha kiotomatiki hufanya kazi vizuri. Kwa msaada wake unaweza haraka sana kuingia njia ya faili ya kuanza.

Ili kuficha utekelezaji maalum kutoka kwa mtumiaji, programu mbili za msaidizi ziliandikwa juu ya mfumo wa maandiko na viungo vya mfano.

Programu ya chkconfig inakuwezesha kuendesha viungo vya ishara kwa maandishi yanayolingana. Ili kuona kile kinachoanza na kinachosimama katika kila ngazi, unaweza kutumia amri ya ls na kuorodhesha maandiko kwenye saraka inayolingana, lakini ni rahisi kutumia amri ya chkconfig -list. Programu ya chkconfig inaendesha saraka zote za rc na hutoa orodha ya kile kinachoanza na kinachosimama katika kila ngazi. Ikiwa tunataka huduma fulani kuanza moja kwa moja wakati mfumo unapoanza, tunaendesha chkconfig<имя службы>on na hati huunda kiunga cha kuingia saraka inayotaka na jina sahihi. Endesha chkconfig<имя службы>kuzima husababisha kiunga cha kuanza kuondolewa na kiunga cha kusimamisha kuundwa. Kwa hivyo, programu ya chkconfig inakuwezesha kusimamia orodha ya huduma zinazoanza wakati wa kuanzisha mfumo.

Mpango mwingine - huduma hutumiwa kwa manually kuanza na kuacha huduma. Huduma ni kanga ambayo hukuruhusu usifikie hati moja kwa moja, lakini kutaja jina la huduma na kusema ikiwa tunataka kuianzisha au kuisimamisha. Bash ninayotumia haina ukamilishaji otomatiki kwa amri ya huduma, kwa hivyo ni rahisi kwangu kuandika njia ya hati.

Katika hati za kuanza, hoja za kuanza na kusitisha lazima zichakatwa. Kwa kuongeza, unaweza kuja na baadhi ya hoja zako ambazo zitafanya kitu muhimu.

Maandishi mengi hutumia chaguo la hali, ambalo linaonyesha ikiwa huduma inafanya kazi au la. Tunapofanya kuanza, hati, baada ya kuanza huduma kwa mafanikio, inapokea PID yake na kuiandikia faili maalum. Amri ya kuacha inafuta faili. Kawaida faili kama hizo huundwa kwenye saraka /var/run/. Amri ya hali huangalia ikiwa faili kama hiyo iko. Ikiwa haipo, inaripoti kuwa huduma haifanyi kazi. Ikiwa faili iko, hutoa kitambulisho cha mchakato kutoka kwayo na kuangalia orodha ya sasa ya michakato. Ikiwa kitambulisho hiki kipo, kila kitu kinaendesha, ikiwa programu huvunjika kwa sababu fulani, basi hali inaonyesha kwamba jaribio lilifanywa ili kuanza huduma hii - faili ipo, lakini huduma yenyewe haifanyi kazi.

Chaguo la kuanzisha upya hutekeleza amri mbili kwa mpangilio ndani ya hati - kwanza acha, na kisha anza. Hii ni amri ya hiari kabisa - rahisi tu. Hatimaye, kuna huduma zinazokuwezesha kusoma tena faili za usanidi popote ulipo. Kwao, amri ya kupakia upya imeongezwa, kazi ambayo ni kutuma ishara kwa huduma ambayo usanidi umebadilika. Kesi ya pekee, hifadhi na upakie amri ili kuhifadhi usanidi wa ngome.

Ikiwa msimamizi wa mfumo, badala ya kuacha au kuanza huduma za mtu binafsi, anataka kuhamisha mfumo mzima kwa kiwango fulani, basi hii inaweza kupatikana kwa moja ya njia mbili. Unaweza kupiga programu /sbin/init moja kwa moja. Ukimwita na nambari fulani kama parameta, itafanya maagizo yote kutoka kwa faili ya inittab ambayo kiwango kinacholingana kilibainishwa. Ikiwa unakimbia, kwa mfano, /sbin/init 1, basi init itapata ndani yake faili ya usanidi mistari yote ambayo ina kiwango cha 1 na itaitekeleza. Kwenye mifumo mingine, amri ya kuzima inatekelezwa kama /sbin/init 0, kwani kiwango cha 0 kinalingana na kusimamisha mfumo. KATIKA Hivi majuzi ilionekana kubadili kati ya viwango programu maalum inayoitwa telinit, ambayo ni kiunga cha init. Kazi yake ni kutuma ishara kwa mchakato wa init kwamba msimamizi anataka kuhamia ngazi fulani. telinit q inamwambia init kusoma tena faili ya inittab. Katika mifumo ya zamani, hii iliafikiwa kwa kutuma ishara ya SIGHUP kwa mchakato na PID=1 (kuua -HUP 1).

Laini chache zaidi kwenye inittab, huu ni uzinduzi wa vituo

1:2345:respawn:/sbin/mingetty tty1

Ili kutoa ufikiaji wa mwingiliano kwa mfumo, unaweza kuwa na idadi ya mistari ya aina hii kwenye inittabe. 2345 ni viwango ambavyo amri lazima iendeshwe, respawn inamaanisha kuwa programu lazima ianzishwe tena ikiwa itaisha. getty ni programu ya usimamizi wa wastaafu. Kijadi, terminal katika UNIX inaitwa teletype kwa sababu vituo vya kwanza vilikuwa tapureta za umeme. Ipasavyo, tty ni kifupi cha teletypewriter. Mingetty ni programu ambayo inaweza kufanya kazi na vituo pepe kompyuta binafsi. Inaweza kusanidi kiendeshi cha terminal, na kama vigezo hupokea jina la kifaa cha terminal ambacho kinahitaji kusanidiwa. Kwenye /dev/ saraka kuna faili ya kifaa tty1, ambayo inalingana na terminal ya kwanza. Ikiwa tulikuwa na modemu na tulitaka kuianzisha wakati wa kuwasha, tunaweza kuita getty na kigezo cha ttyS0, ambacho kinalingana na mlango wa COM1. Wakati wa kuanzisha modem, unaweza kuweka Chaguzi za ziada: kasi ya uunganisho 19200 baud, 7 au 8 bits kwa byte, usawa, idadi ya bits kuacha.

S0:2345:repawn:/sbin/getty ttyS0 19200 8 n 1

Mara ya mwisho nilichora mnyororo ambao mchakato hujinakili kwa kupiga uma, nakala ya mtoto kwa kupiga simu exec hupakia programu nyingine kwenye kumbukumbu yake, na baada ya kukamilika huripoti hii kwa mchakato wa mzazi.

Vipindi vya watumiaji wa maandishi hupangwa katika misururu ifuatayo: kwanza, init hujinakili yenyewe na kuendesha programu ya mingetty ndani yake. Mingetty huanzisha terminal na kibodi, na kisha huendesha programu ya kuingia katika mchakato sawa. Kuingia huonyesha vidokezo vya kuingiza jina na nenosiri na, ikiwa kila kitu kilikwenda vizuri, hupeana haki za mtumiaji yenyewe na katika mchakato huo huo, kujiondoa yenyewe, huzindua mkalimani wa mtumiaji, kwa mfano, bash. Wakati mtumiaji anaandika amri ya kutoka, mkalimani anamaliza njia ya maisha ya mchakato huu. Mchakato unapoisha, init hupokea ishara kuihusu. Init inaangalia kile inachopaswa kufanya, huona kitendo cha kuanza upya, huendesha programu ya mingetty tena, ambayo huweka upya terminal na kurudia kila kitu. Kwa hivyo, kila kikao kiko ndani ya mchakato mmoja. Mara tu tulipoondoka kwenye kipindi, mchakato wetu uliisha na programu ilizinduliwa mara moja ambayo ingesafisha terminal baada yetu na kurejesha mipangilio yote kwa chaguomsingi.

Kuna neno lingine muhimu katika faili ya inittab, initdefault - kiwango cha msingi. Ikiwa init ilipokea parameter moja kwa njia ya kernel, basi tutaanza kwenye ngazi ya 1. Ikiwa hakuna kitu kilichopitishwa kupitia bootloader, basi thamani ya default hutumiwa. Ikiwa baada ya ufungaji ganda la picha Ilibadilika kuwa kompyuta yetu ni dhaifu kwa picha, basi tunaweza kuweka kiwango cha msingi hadi 3, na baada ya kuanza tena tunajikuta kwenye kiwango cha tatu - ambayo ni, katika hali ya maandishi. Imewekwa mfumo bila hali ya michoro, kisha tukaweka vifurushi vyote kwa dirisha la x, tukabadilisha kiwango cha chaguo-msingi hadi 5, na baada ya upya upya tulikwenda moja kwa moja kwenye hali ya graphical.

Katika mfumo huu wa hati, wakati mwingine unataka kufanya kitu chako mwenyewe, kwa mfano, wakati wa kuanza, futa faili zote kwenye saraka /tmp/. Kwa hili kuna faili tofauti inayoitwa /etc/rc.local, ambayo inaendesha baada ya wengine wote. Hii ni hati tu isiyo na vigezo ambayo unaweza kuandika chochote unachotaka. Kwa mfano, kwenye mojawapo ya ruta zangu, wakati mfumo unapoanza, meza za uelekezaji zimeandikwa kwenye faili hii. Nilikuwa mvivu sana kutafuta mahali ambapo maandishi ya kawaida yanayolingana kutoka kwa usambazaji yanapatikana na ikawa rahisi kusajili amri katika rc.local.

Katika hili mwongozo wa hatua kwa hatua Utajifunza jinsi ya kujenga na kusakinisha kwa usahihi kernel ya tawi>2.6 kwenye familia ya Ubuntu OS.

Hatua ya 1: Kupata msimbo wa chanzo cha kernel

Vyanzo vya Ubuntu kernel vinaweza kupatikana kwa njia mbili:

    Kwa kusakinisha kumbukumbu kutoka kwa hazina, kwa kutumia kiotomatiki viraka rasmi vya hivi punde. Hii itapakua kifurushi cha ~ 150 MB kwa ukubwa. folda ya sasa. Ili kupata vyanzo vya kernel, toleo ambalo limewekwa kwenye kompyuta, endesha amri: apt-get source linux-image-`uname -r`

    Au badala ya `uname -r` unaweza kubainisha toleo maalum linalopatikana kwenye hifadhi.

Orodha ya matoleo yanayopatikana kwenye hazina yanaweza kuonekana kwa kuandika amri: "apt-get source linux-image-" na, bila kushinikiza Enter, bonyeza mara mbili. Kitufe cha kichupo.

Usisahau kuwasha ufikiaji wa jumla kwa vyanzo kwenye hazina (Mipangilio ya Mfumo → Programu na visasisho → Programu Ubuntu → Nambari ya chanzo). Unaweza kufanya hivyo kutoka kwa console kwa kufuta mistari inayoanza na deb-src kwenye faili ya /etc/apt/sources.list, na kisha ufanye sasisho kwa amri: "sudo apt-get update".

    wengi zaidi toleo la hivi punde kernel inapatikana kupitia git. Saizi ya kifurushi kilichopakuliwa ni ~ 500-800 MB. git clone git://kernel.ubuntu.com/ubuntu/ubuntu- .git

    Wapi - jina la kutolewa, kwa mfano:

    Git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git

Kokwa zingine

Pia kuna kokwa ambazo hazijahakikishiwa kufanya kazi katika Ubuntu. Kwa mfano, kuna shida inayojulikana na idadi ya maarufu maombi ya mfumo(hasa Madereva ya NVidia, VirtualBox), ambayo, inapowekwa, imeundwa chini kernel iliyosakinishwa. Kwa hivyo, kuziweka kwenye kernel ambayo sio ya kawaida kwa toleo fulani la Ubuntu (kwa mfano, Ubuntu 16.04 inakuja na 4.4.0 kernel), zinaweza kuhitaji mkusanyiko tofauti wa mwongozo au viraka maalum, na. matoleo ya hivi karibuni Programu inaweza isiauni punje kutoka kwa kernel.org hata kidogo.

    Hifadhi na matoleo ya msingi bila mabaka, i.e. kwa mfano "4.8.0", "4.8.10": sudo apt-get install linux-source

Fungua kumbukumbu iliyosababishwa kwa kutumia amri:

Cd ~/ tar -xjf linux-2.6.x.y.tar.bz2

Au kwa upande wa linux-source:

Cd /usr/src tar -xjf linux-source-2.6.x.y.tar.bz2

Hatua ya 2. Kupata vifurushi muhimu kwa mkusanyiko

Hatua hii lazima ifanyike tu ikiwa kernel imekusanyika kwenye kompyuta kwa mara ya kwanza

Tumia amri zifuatazo ili kusakinisha vifurushi vya msingi:

Sudo apt-get update sudo apt-get build-dep linux sudo apt-get install kernel-package

    usanidi - njia ya jadi usanidi. Programu inaonyesha chaguzi za usanidi moja kwa wakati, na kukuhimiza kuweka thamani tofauti kwa kila moja yao. Haipendekezi kwa watumiaji wasio na uzoefu.

    oldconfig- faili ya usanidi imeundwa moja kwa moja kulingana na usanidi wa sasa kokwa. Imependekezwa kwa wanaoanza.

    defconfig- faili ya usanidi imeundwa moja kwa moja, kulingana na maadili ya kawaida.

    menuconfig- kiolesura cha pseudo-graphical kwa usanidi wa mwongozo, hauhitaji uingizaji wa mfululizo wa maadili ya parameter. Inapendekezwa kwa matumizi katika terminal.

    xconfig- kiolesura cha mchoro (X) kwa ajili ya usanidi wa mwongozo, hauhitaji uingizaji wa mfululizo wa maadili ya parameta.

    gconfig- kiolesura cha picha (GTK+) kwa usanidi wa mwongozo, hauhitaji uingizaji wa mtiririko wa maadili ya parameta. Imependekezwa kwa matumizi katika mazingira ya GNOME.

    localmodconfig- faili ya usanidi ambayo imeundwa moja kwa moja, ambayo inajumuisha tu kile kinachohitajika kwa kupewa kifaa maalum. Wakati amri hii inaitwa, nyingi za msingi zitarekebishwa

Ikiwa unataka kutumia usanidi, oldconfig, defconfig, localmodconfig au localesconfig, huhitaji tena vifurushi vyovyote vya ziada. Katika kesi ya chaguzi tatu zilizobaki, lazima pia usakinishe vifurushi vya ziada.

menuconfig endesha amri ifuatayo:

Sudo apt-get install libncurses5-dev

Ili kusakinisha vifurushi vinavyohitajika kwa matumizi gconfig endesha amri ifuatayo:

Sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev

Ili kusakinisha vifurushi vinavyohitajika kwa matumizi xconfig endesha amri ifuatayo:

Kabla ya Ubuntu 12.04: sudo apt-get install qt3-dev-tools libqt3-mt-dev

Sudo apt-get install libqt4-dev

Hatua ya 3. Kutumia patches

Hatua hii ni ya hiari.

Viraka rasmi tayari vimetumika kwa vyanzo ikiwa kernel ilipatikana kwa kutumia amri iliyoelezwa hapo juu:

Apt-get source linux-image-`uname -r`

Ikiwa haujawahi kutumia viraka kwa nambari ya chanzo hapo awali, basi endesha amri ifuatayo:

Sudo apt-get install kiraka

Amri hii itasakinisha programu ya kiraka, ambayo ni muhimu kwa, kama unavyoweza kudhani, kutumia patches. Sasa pakua faili ya kiraka kwenye folda ambapo ulitoa kernel. Inaweza kuwa ama faili ya kumbukumbu(km Bzip2 au Gzip), au faili ya kiraka ambayo haijabanwa.

Washa wakati huu Inachukuliwa kuwa tayari umehifadhi faili kwenye folda ambapo hapo awali ulifungua kernel na kusakinisha programu ya kiraka.
Ikiwa faili uliyopakua ilikuwa katika umbizo la Gzip (*.gz), basi endesha amri ifuatayo ili kutoa yaliyomo kwenye kumbukumbu:

Kiraka cha Gunzip-2.6.x.y.gz

Ikiwa faili uliyopakua ilikuwa katika umbizo la Bzip2 (*.bz2), basi endesha amri ifuatayo ili kutoa yaliyomo kwenye kumbukumbu:

Bunzip2 kiraka-2.6.x.y.bz2

ambapo 2.6.x.y ni toleo la kiraka cha kernel. Amri zinazofaa zitatoa faili ya kiraka kwenye folda ya chanzo cha kernel. Kabla ya kutumia kiraka, unahitaji kuhakikisha kuwa itafanya kazi bila makosa. Ili kufanya hivyo, endesha amri:

Kiraka -p1 -i kiraka-2.6.x.y --kavu-run

ambapo 2.6.x.y ni toleo la kiraka cha kernel. Amri hii itaiga utumizi wa kiraka bila kubadilisha faili zenyewe.

Ikiwa hakuna makosa yanayotokea wakati wa utekelezaji wake, basi mabadiliko yanaweza kutekelezwa kwa usalama kwenye faili wenyewe. Ili kufanya hivyo, endesha amri:

Kiraka -p1 -i kiraka-2.6.x.y

ambapo 2.6.x.y ni toleo la kiraka cha kernel. Ikiwa hapakuwa na makosa, basi kiraka kilitumiwa kwa ufanisi kwenye msimbo wa chanzo.

Makini! Kabla ya kutumia kiraka, tekeleza hatua zifuatazo: 1. Pakua kutoka kwa http://www.kernel.org kiraka cha toleo sawa na vyanzo vyako. 2. Endesha amri ifuatayo: kiraka -p1 -R

ambapo 2.6.x.y ni toleo la kiraka na vyanzo vyako

Hatua ya 4. Usanidi wa muundo wa kernel ya baadaye

Nenda kwenye folda ambapo ulitoa kernel kwa kuendesha amri

Cd ~/linux-2.6.x.y

ambapo 2.6.x.y ni toleo la kernel uliyopakua.

Katika hatua hii, unapaswa kuwa tayari umeamua juu ya mbinu ya usanidi wa kernel (ikiwa sivyo, basi iangalie katika sehemu ya "Kupata vifurushi vinavyohitajika kuunda"). Kulingana na hili, endesha amri ifuatayo ili kuendesha njia yako ya usanidi uliyochagua:

    usanidi- njia ya usanidi wa jadi. Programu inaonyesha chaguzi za usanidi moja kwa wakati, na kukuhimiza kuweka thamani tofauti kwa kila moja yao. Inaitwa na make config amri

    oldconfig- faili ya usanidi imeundwa moja kwa moja kulingana na usanidi wa sasa wa kernel. Imependekezwa kwa wanaoanza. Inaitwa na make oldconfig

    defconfig- faili ya usanidi imeundwa kiotomatiki, kulingana na maadili ya msingi ya usanifu huu. Inaitwa na make defconfig

    menuconfig- kiolesura cha pseudo-graphical kwa usanidi wa mwongozo, hauhitaji uingizaji wa mfululizo wa maadili ya parameter. Inapendekezwa kwa matumizi katika terminal. Piga simu: tengeneza menyuconfig

    gconfig Na xconfig- Visanidi vya picha kwa usanidi wa mwongozo. Piga simu: tengeneza gconfig

    Tengeneza xconfig

    kwa mtiririko huo

    localmodconfig Na localesconfig- wasanidi otomatiki. Usanidi huundwa kulingana na moduli zinazoitwa sasa na kernel inayoendesha. Tofauti kati ya wasanidi hawa wawili ni idadi ya moduli. Katika kesi ya kwanza, kutakuwa na angalau 50% ya msingi, na katika pili, si zaidi ya 2 modules. Piga simu: tengeneza localmodconfig

    Fanya localesconfig

    kwa mtiririko huo

Mara baada ya kuitwa, programu inayolingana ya usanidi itazinduliwa. Fanya mipangilio muhimu kulingana na mahitaji yako, hifadhi faili ya usanidi na uendelee hatua inayofuata.

Hatua ya 5: Kuunda Kernel

Kwa hivyo, maandalizi yamekamilika. Sasa unaweza kuanza mchakato wa kujenga kernel. Ili kufanya hivyo, endesha amri:

Fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j<количество ядер процессора>+1

Kujenga kernel inaweza kuchukua kutoka dakika 20 hadi saa kadhaa, kulingana na usanidi wa kernel na vigezo vya kiufundi vya kompyuta. Mkutano na processor ya msingi nyingi inaweza kuwa mara kadhaa haraka

Hatua ya 6: Kufunga Picha za Kernel na Vichwa

Uundaji wa kernel utakapokamilika, vifurushi viwili vya deb vitaonekana kwenye folda yako ya nyumbani. Wanahitaji kusakinishwa. Ili kufanya hivyo, endesha amri:

Cd ~/ sudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-00000m-10.10. Custom_arc.deb

ambapo 2.6.x.y ni toleo la kernel iliyokusanyika, arc ni usanifu wa processor (i386 - 32-bit, amd64 - 64-bit).
Ikiwa hujui jina halisi la kifurushi, orodhesha faili kwenye saraka yako ya nyumbani na amri

na upate vifurushi hivi viwili.

Hatua ya 7. Kuzalisha diski ya awali ya RAM

Ili kufanya kazi kwa usahihi, Ubuntu inahitaji picha ya awali ya diski ya RAM. Ili kuunda, endesha amri:

Sasisho la Sudo-initramfs -c -k 2.6.x.y-desturi

ambapo 2.6.x.y ni toleo la kernel iliyokusanywa.

Hatua ya 8: Kusasisha Usanidi wa Kipakiaji cha Boot cha GRUB

Ili kuhakikisha kuwa toleo jipya la kernel linapatikana kwa uteuzi wakati kompyuta inapoanza, endesha amri ifuatayo:

Sudo update-grub

Menyu ya faili.lst (ya toleo la GRUB 1) au grub.cfg (kwa toleo la GRUB 2) itasasishwa kulingana na upatikanaji wa mifumo ya uendeshaji iliyosakinishwa na picha za kernel.

Hatua ya 9: Kuangalia Kernel

Mkutano na usakinishaji wa Kernel umekamilika kwa mafanikio! Sasa anzisha upya kompyuta yako na ujaribu kuwasha mfumo na kernel mpya. Ili kuhakikisha kuwa mfumo unaendelea na kernel mpya, endesha amri

Uname -r

Itaonyesha toleo la kernel linalotumika.

Ikiwa kila kitu kimefanywa kwa usahihi, unaweza kufuta kumbukumbu za msimbo wa chanzo na saraka nzima ya linux-2.6.x.y kwenye folda yako ya nyumbani. Hii itafungua kuhusu GB 5 kwenye diski yako kuu (kiasi cha nafasi iliyotolewa inategemea mipangilio yako ya kujenga).

Hii inakamilisha mchakato wa kusanyiko na ufungaji, pongezi!

Bunge Kernels za Linux
Habari, wasomaji wapendwa. Leo nitakuambia kuhusu shughuli hiyo ya kuvutia Jinsi ya kuunda Linux kernel. Kwa nini unaweza kuhitaji kukusanya kernel mwenyewe? Kwa kweli, kunaweza kuwa na sababu nyingi: hitaji la kutumia uwezo wa ziada wa kernel, kuboresha kernel kwa kompyuta yako, sasisha kernel kwa toleo la hivi karibuni. Katika nakala hii, nitaonyesha mchakato wa kupata nambari za chanzo, kusanidi, kuandaa na kusanikisha kernel ya Linux kwenye mfumo, kama sehemu ya kutatua shida ya kujumuisha usaidizi wa cryptoloop (vifaa vya usimbaji fiche) kwenye kernel.

Kupata msimbo wa chanzo
Kwanza kabisa lazima tupate chanzo, hii inaweza kufanywa kwa njia tofauti na kutoka kwa vyanzo tofauti. Ninapendekeza kuzingatia mbili tu: hazina za mfumo, tovuti rasmi ya kernel. Hifadhi kuna uwezekano mkubwa kuwa na matoleo ya kokwa ya zamani zaidi kuliko yale yaliyo kwenye tovuti rasmi, lakini vyanzo hivi vinapaswa kujumuisha viraka na marekebisho kutoka kwa mtengenezaji wa usambazaji wako wa Linux. Mbinu hii inafaa isipokuwa unahitaji teknolojia mpya au kipengele ambacho kinaauniwa na kokwa mpya zaidi. Unaweza kutazama matoleo yote ya vyanzo vya kernel ambavyo viko kwenye hazina za mfumo wako kwa kuingia kwenye terminal (kweli kwa Ubuntu Linux, jina la kifurushi linaweza kutofautiana katika usambazaji mwingine):

Apt-cache search linux-source

Amri itaorodhesha vifurushi vinavyopatikana:


Kama unavyoona, nina kifurushi kilicho na toleo la sasa na kifurushi kilicho na toleo la 3.5 (kwa kweli, toleo la sasa la kernel pia ni 3.5). Ili kupanua orodha ya kernels zinazopatikana kwa njia hii, inafaa kuunganisha hazina za ziada. Tunaweza kupata kernel na amri: sudo apt-get install linux-source

linux-source - jina la kifurushi cha chanzo, inaweza kuwa tofauti kwa upande wako.
Baada ya amri kukamilika, faili itaonekana kwenye saraka /usr/src, katika kesi yangu - linux-source-3.5.0.tar.bz2. Wacha tuende kwenye folda, tufungue kumbukumbu na, kwa urahisi, unda kiunga cha mfano:

Cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux

Ikiwa unahitaji toleo jipya zaidi la kernel, unaweza kuipakua kutoka kwa tovuti ya kernel.org. Inafaa kumbuka kuwa tovuti ina matoleo mawili thabiti ya kernels na matoleo yaliyokusudiwa kwa majaribio na marekebisho (kawaida jina lao huwa na kifupi "RC" - mgombea wa kutolewa). Ikiwa hutaki matatizo yasiyo ya lazima na mfumo, nakushauri kupakua toleo imara:

Wacha tuhifadhi kumbukumbu na vyanzo kwenye /usr/src folda. Ili kufungua kumbukumbu inayotokana, unaweza kuhitaji kusakinisha huduma za ziada:

Sudo apt-get install xz-utils

Sasa, kama ilivyo katika kupakua kernel kutoka kwa hazina, lazima tufungue kumbukumbu ya chanzo na kuunda kiunga:

Cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux

Usanidi na mkusanyiko.
Sasa tunakuja kwenye sehemu ya kuvutia zaidi. Kabla ya kuanza, hebu tusakinishe vifurushi vichache vya ziada:

sudo apt-get install build-essential kernel-package libncurses-dev

Tutaunda usanidi mpya kulingana na kernel inayotumiwa sasa na mfumo:

Cd /usr/src/linux sudo tengeneza oldconfig

Ikiwa unasanidi toleo jipya zaidi la kernel kuliko lililopo kwenye mfumo, basi kuna uwezekano kwamba lina vigezo ambavyo haviko katika usanidi wa kernel ya sasa. Katika kesi hii, programu itakuuliza ufanye chaguo; unaweza kuacha maadili chaguo-msingi kwa kubonyeza kitufe cha Ingiza. Kwa hali yoyote, usanidi bado haujakamilika. Sasa tunaweza kufanya mipangilio tunayohitaji kupitia menyu ya uundaji wa usanidi:

Sudo tengeneza menyuconfig

Programu ya usanidi itaanza kwenye terminal:

Hapa, chaguzi za usanidi zimegawanywa katika sehemu ili iwe rahisi kuelekeza. Kama nilivyosema hapo juu, ninahitaji kujumuisha usaidizi wa cryptoloop kwenye kernel. Ili kufanya hivyo, nenda kwenye sehemu ya "Viendeshi vya Kifaa", na kutoka hapo hadi sehemu ndogo ya "Vifaa vya Kuzuia":

Tunapata parameta ya "Msaada wa Cryptoloop", karibu nayo kuna herufi "M" ambayo inamaanisha kuwa usaidizi wa vifaa vya usimbuaji utaongezwa kama moduli ya kernel ambayo inaweza kuwezeshwa kwa amri ya modprobe. Tunahitaji kujumuisha usaidizi wa teknolojia hii moja kwa moja kwenye kernel ili iweze kutumika kila wakati. Tunahamisha mwelekeo kwenye kigezo cha "Msaada wa Cryptoloop" na ubofye upau wa nafasi. Barua "M" inapaswa kubadilishwa na ishara "*", hii ina maana kwamba msaada wa teknolojia hii itakuwa "hardwired" kwenye kernel. Kuwa mwangalifu, nafasi inamaanisha kuwa teknolojia haitaungwa mkono hata kidogo.

Bonyeza kitufe cha "Tab" na ubonyeze kitufe cha "Toka" hadi utakapoulizwa kuhifadhi mabadiliko:

Tunajibu "Ndiyo". Tumekamilisha usanidi kwa ufanisi!
Hebu tuanze kuandaa. Kwanza, tunafuta faili zilizobaki kutoka kwa makusanyiko yaliyopita; ikiwa unaanza kusanyiko kwa mara ya kwanza, sio lazima kutekeleza amri hii: sudo make-kpkg safi.

Wacha tuanze mkusanyiko:

Sudo make-kpkg -j4 --initrd --append-to-version=-mykernel kernel_image kernel_headers

J4 - bendera inaonyesha ni nyuzi ngapi za kutumia kwa ujumuishaji. Hii itaharakisha sana mkusanyiko kwenye wasindikaji wa msingi-nyingi. Nambari 4 hapa inaonyesha nyuzi 4. Sakinisha nyuzi nyingi kadiri idadi ya core za kichakataji chako ambazo mfumo "unaona".
-mykernel - kiambishi awali kinachoonyesha kwamba kernel iliundwa kwa mikono, unaweza kuibadilisha, kwa kweli haiathiri chochote.

Sasa mchakato wa ujumuishaji umeanza. Inaweza kuchukua kutoka dakika 10 hadi saa kadhaa kulingana na jinsi kompyuta yako ina nguvu:

Kufunga kernel kwenye mfumo

Baada ya mkusanyiko kukamilika, faili mbili zilizo na kiendelezi cha "deb" zinapaswa kuonekana kwenye saraka /usr/src. Ni vifurushi vya usakinishaji wa kernel yetu mpya na vinaweza kusakinishwa kwa kutumia matumizi ya dpkg:

sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb

Hongera! Kernel imewekwa, sasa mfumo utaanza na kernel hii kwa chaguo-msingi, lakini ikiwa una matatizo na kernel mpya, unaweza daima boot na ya zamani kwa kuichagua kwenye skrini ya boot - Grub. Kwa hili nahitimisha makala ya leo na ninakutakia mafanikio, wasomaji wapenzi!

Katika familia kubwa ya mifumo ya uendeshaji kulingana na GNU/Linux. Hakika umesikia kwamba misimbo hii imefunguliwa, inasambazwa kwa uhuru na bure. Wanasema, chukua yeyote anayetaka, lakini uzingatie tu masharti ya leseni ya GPL, ambayo sio ngumu kabisa. Walakini, watu wachache wanaelezea kwa uwazi wa kutosha ni nini kiini cha jambo hili, ni nini maana yake. Kwa hivyo, tutajaribu maelezo kama haya.

Asili kwa ufupi

Yote yalianza mwaka wa 1991, wakati mwanafunzi wa Kifini Linus Torvalds alipofanya misimbo ya kernel ya mfumo mpya wa uendeshaji wa Linux kupatikana kwa umma. Kwa nini wazi? Kwa sababu aliunga mkono. Lakini labda tayari unajua hii (au ujue kwa urahisi). Tutazingatia vidokezo ambavyo vinahitaji uainishaji wazi.

Linux

Linux sio mfumo wa uendeshaji, lakini kernel tu. Seti ya ufumbuzi wa programu muhimu ili kuanzisha kompyuta na utendaji wa vipengele vyake ("vifaa"), msingi wa utendaji wa programu nyingine.

GNU

GNU ni seti ya programu rahisi ambazo zilikuwepo hata kabla ya kuonekana kwa kernel hapo juu. Programu hizi huruhusu mtu kufanya angalau mwingiliano fulani na kompyuta, na sio tu kutazama skrini. Nambari ya chanzo pia imefunguliwa, kwa kweli.

GNU/Linux ni OS, sio punje tu. Badala ya GNU kunaweza kuwa na kitu kingine, kwa mfano Dalvik katika Android.

Madereva

Teknolojia inaendelea, idadi ya vifaa vya kompyuta inakua, vifaa vinabadilika. Na kila bidhaa inahitaji dereva kufanya kazi. Kwa hiyo, madereva wengine hupigwa moja kwa moja kwenye msingi. Ikiwa ni bure (Programu Isiyolipishwa), kama GNU na Linux, basi misimbo hakika imefunguliwa.

Kweli, wakati hakuna madereva ya bure yanafaa, basi hakuna kitu kinachoweza kufanywa, lazima usakinishe wamiliki. Ikiwa nambari zao zimefunguliwa inategemea tu watengenezaji wa vifaa.

Maombi

Programu maalum zinazoainishwa kama Chanzo Huria mara nyingi hutolewa katika matoleo ya mifumo tofauti ya uendeshaji. Wao si sehemu ya Linux. Kweli, zingine ni za kawaida kwa usambazaji fulani au ganda la picha, lakini sio sehemu ya kernel.

Kwa kawaida, kanuni za chaguzi zote zimefunguliwa - kwa mifumo yote ya uendeshaji inayoungwa mkono. Hali hiyo inatumika kwa huduma mbalimbali.

Ambao hufanya hivyo

Kiini cha Linux kinaboreshwa na kikundi cha wapendaji. Wakati mwingine Linus Torvalds mwenyewe anashiriki. Nambari ya kernel, iliyojaa kwenye kumbukumbu, inaweza kupakuliwa kutoka kernel.org kwa mkusanyiko huru unaofuata.

Madereva, ikiwa wako huru, pia mara nyingi hufanywa na jamii. Kwa printer, scanner, kadi ya video, adapta ya Wi-Fi ... Kwa ujumla, mambo mengi.

Kwa mfano, mfuko wa Gutenprint, ambayo ni seti nzima ya madereva kwa mifano mingi ya printer. Aidha, ubora wa uchapishaji mara nyingi hulinganishwa na viashiria vinavyozalishwa wakati wa kutumia madereva "asili" kutoka kwa wazalishaji.

Wakati mwingine watengenezaji wa maunzi wenyewe hufungua msimbo chini ya leseni fulani inayofaa, kama vile GPL au BSD. Matukio kama haya kawaida husababisha furaha isiyoelezeka kati ya wafuasi wa Open Source.

Kama unavyoweza kukisia, programu maalum pia huundwa na jumuiya au watu binafsi wanaopenda. Hata hivyo, makampuni ya kibiashara pia hupenda kujitangaza kwa kuwapa idadi ya watu sehemu ya bidhaa zao katika mfumo wa Programu Huria. Mfano wa kuvutia: Suite ya ofisi ya OpenOffice.org imetolewa na Oracle kwa muda mrefu.

Zaidi ya hayo, makampuni mengine hutengeneza vifaa vyote vya usambazaji. Red Hat, SuSE, Xandros hutoza pesa kwa mikusanyiko ya binary iliyo tayari kutumia, lakini hawana haki ya kuficha misimbo. Hiyo ni, kanuni hizi, bila kujali jinsi zinavyochakatwa, lazima zibaki wazi. Hili ni hitaji la leseni ya GPL.

Nani anaitumia

Mpangaji programu anaangalia programu na kufikiria: "Ni jambo zuri, lakini linaweza kufanywa vizuri zaidi!" Inapakua kumbukumbu iliyo na msimbo kutoka kwa tovuti ya msanidi programu na kuiboresha. Anajiunga na kikundi cha wataalam wanaotaka kushiriki, na mradi mpya unazaliwa.

Hivi ndivyo "uma" huonekana (kutoka kwa Kiingereza "uma", ambayo katika kesi hii inatafsiriwa kama "tawi"). Programu mpya kulingana na msingi wa kanuni za zilizopo.

Kwa mfano, kutoka kwa mchezaji mzuri wa sauti Amarok, bora zaidi hufanywa - Clementine. Na kutoka kwa Suite ya OpenOffice.org ya maombi ya ofisi - LibreOffice, ambayo inakua kwa kasi na kuahidi sana.

Kwa hivyo, mifumo yote ya uendeshaji imeundwa kwa kutumia kanuni hii. CentOS OS isiyolipishwa imeundwa kutoka kwa misimbo ya chanzo ya Red Hat Enterprise Linux inayolipishwa. Kwa kweli, wakubwa wa Red Hat labda wanauma viwiko vyao kwa kufadhaika, lakini hawawezi kufanya chochote kwa vile hawana msimbo wa chanzo.

Walakini, katika kesi hii, urekebishaji unakuja chini kwa kukata nembo zilizosajiliwa, lakini bila uwazi wa lazima wa nambari, uwepo wa CentOS haungewezekana kimsingi.

Hitimisho

Chanzo huria ni dhana ya msingi ya Linux hasa na ya Programu zote Huria kwa ujumla. Nambari zinaweza kutumika kwa miradi yako mwenyewe, kujaribiwa kutokuwa na madhara kupitia juhudi za jamii, kusoma, kuboresha ujuzi wako kwa kushiriki katika maendeleo, kuboreshwa na kusaidiwa watu katika kazi yao nzuri.

Hakuna mkusanyiko wa programu ya binary ambao ni muhimu kwako kwa usambazaji maalum wa GNU/Linux? Je, dereva hajajumuishwa kwenye kokwa? Tulichukua kumbukumbu na msimbo wa chanzo, tukaifungua, tukasoma maagizo ya mkutano, tukakusanya, tukaisakinisha - na kuitumia. Huna kutegemea mtengenezaji, huna amefungwa kwa mfumo maalum wa uendeshaji - hii ni uhuru wa kweli.

Machapisho yaliyotangulia:

Mara nyingi mimi husikia watu wakirejelea kernel ya Linux kama mfano wa kinu cha Linux, na siwezi kupata majibu yoyote kwenye injini zozote za utaftaji kuhusu kwanini inaitwa picha.

Ninapofikiria picha, Ninaweza kufikiria tu mambo mawili ama nakala ya diski au picha. Bila shaka, jamani, sio picha ya picha, kwa nini inaitwa picha?

5 Suluhisho hukusanya fomu ya wavuti ya "Kwa nini kernel ya Linux inaitwa "picha"?"

Mchakato wa kuwasha Unix ulikuwa na uwezo mdogo tu wa kupakia programu kwa busara (kusonga, kupakia maktaba, n.k.). Kwa hivyo programu ya asili ilikuwa picha halisi iliyohifadhiwa kwenye diski, kitu ambacho kililazimika kupakiwa kwenye kumbukumbu na "kuitwa" kutoa kernel.

Haikuwa hadi baadaye sana ambapo vitu kama (de-comp) viliongezwa, na ingawa vipakiaji vyenye nguvu zaidi sasa vimesakinishwa, jina la picha limekwama.

Neno taswira pia lina ufafanuzi wa "Faili iliyo na taarifa zote zinazohitajika ili kuunda nakala hai inayofanya kazi."

Hii haimaanishi kuwa "picha" ni nakala 1: 1 ya diski. Kwa sababu upigaji picha unawakilisha ukweli hasa Hivyo sawa, kama ilivyo katika kukamata, picha ya programu inayoweza kutekelezwa (au kernel) inawakilisha programu katika hali ambayo inaweza kupakiwa (au kupunguzwa) kwenye kumbukumbu ya mfumo. haswa, jinsi ilivyo, na kisha kupewa udhibiti juu yake. Mpango huu unaweza kisha kuzinduliwa kutoka katika hali hii kwa njia thabiti. Kwa hivyo, picha ya kernel ya Linux ni picha (picha ya serikali) ya kernel ya Linux ambayo inaweza kujiendesha yenyewe, ikitoa udhibiti.

Hivi sasa, bootloader hupakia picha kama hiyo kutoka kwa mfumo wa faili ya diski ngumu (dereva inahitajika), huibadilisha, na kwa hivyo huipa udhibiti. Mchakato wa boot ya kompyuta hutokea mara kadhaa mpaka mfumo wa uendeshaji kuanza kufanya kazi. Hii inaitwa upakiaji wa mnyororo. Au, ikiwa programu ndogo (mnyororo) inapakia ngumu zaidi, inaitwa bootstrapping.

BIOS hupakia bootloader, ambayo pia ni picha, kwa mfano boot.img katika kesi ya grub . Boot.img hii sio faili (ikiwa grub imewekwa); hili ni jina la sehemu ambayo iko kwenye rekodi kuu ya boot (MBR). Ikiwa utapakia faili kwenye faili, itakuwa picha kama faili ambayo haitaandikwa kwa gari ngumu, lakini imeandikwa kwa faili. Pia ni uwakilishi (picha) ya hali ya awali ambayo grub inaweza kupakia iliyobaki yenyewe. grub basi ina utaratibu wake wa jinsi ya kujiwasha yenyewe wakati wa kupakia picha zingine. Hii inawakilishwa na hatua mbalimbali katika grub. Bootloader kisha hupakia picha ya kernel, ikijibadilisha na yaliyomo kwenye faili hiyo.

Historia ya kale. neno "picha" linatokana na neno la zamani la "Shirika la Vifaa vya Dijiti" kwa mkusanyaji->toto la kiunganishi. faili ni picha iliyoundwa na msimbo wa kutafsiri, nk kupitia kiunganishi ili kuunda "picha" inayoweza kutekelezwa ya muundo wako.

Katika hisabati, kernel ni taswira ya kinyume ya kikundi kidogo cha picha ya baadhi ya ramani ikiwa kitengo kidogo kilikuwa sawa na kipengele cha utambulisho katika kikoa. Nina hakika kuwa majina haya yanatokana na dhana za kihesabu, kwani yanahusiana sana maeneo mbalimbali hisabati. Kwa kuzingatia kwamba Unix ilitokana na mazingira ya kitaaluma, inawezekana kwamba matumizi ya punje hii na picha ya maneno haya ni sawa.

Ikiwa una seti inayowakilisha kiwango fulani cha habari kuhusu Mfumo wa Uendeshaji "kamili", ikiwa maelezo hayo pia yanaunda kikundi, basi unaweza kufafanua homomorphism ya kikundi kwenye seti hiyo, au kimsingi ramani kwa seti zingine ambazo zina ukubwa tofauti, basi seti asili, mradi tu "wanaheshimu" muundo wa seti ya asili iliyoifanya kuwa kikundi. Unaweza kuona kile ambacho kinaweza kuachwa ili kulinganisha seti na seti ndogo au kikundi kidogo cha seti fulani ambapo kikundi kidogo ni kidogo.

Picha. Picha ya homomorphism ya kikundi na kazi za jumla na uchoraji ramani ni sehemu ndogo tu ya seti fulani ambazo vipengele vyake vinalinganishwa. Huenda kipengele kisionyeshwa kwa kila kipengele, na vipengele hivyo havitajumuishwa kwenye picha.

Kiini kimsingi ni vipengee kutoka kwa seti asili ambayo imechorwa kwa picha, lakini onyesha tu kipengele cha utambulisho wa picha. Kimsingi vipengele vinavyoonyesha 0 kama kitu kwenye picha.

Ikiwa picha ni ndogo kwa saizi basi seti asili, basi tunaweza kuona kuwa vipengee vingi lazima vichorwe kwa kipengele kimoja. Kwa hivyo, kwa mfano, kunaweza kuwa na vipengee vingi kutoka kwa kernel ambayo ramani hadi picha, na tayari tunajua kuwa zote zinapaswa ramani hadi 0.

Tunaweza kuona kwamba ikiwa tutachagua seti asili kuwa mfuatano wa mwisho wa binary au 1 na 0, na kodoma (seti iliyowekwa kwenye ramani) pia ni mlolongo wa mfumo wa jozi, basi tunaweza kuunda vitu kama hivyo ikiwa na ikiwa tu muundo wa kikundi unaofaa. inaweza kufafanuliwa (hii ni ya kina kidogo na haihusiani na swali).

Kwa hiyo, tunaweza kuona kwa ujasiri kamili kwamba "kernel" na "picha" ya OS imefafanuliwa kabisa na ina maana ya hisabati. Bila kujali labda matumizi mengine ya maneno.