Portal kuhusu ukarabati wa bafuni. Vidokezo muhimu

Hivi karibuni linux kernel. Kuunda kinu chako cha Linux

Katikati ya Machi, baada ya karibu miezi miwili ya maendeleo na wagombea saba wa kutolewa, Linus Torvalds aliwasilisha toleo jipya punje 4.5. Mbali na marekebisho, kuna mambo mengi mapya katika toleo. Mabadiliko yaliathiri mifumo yote ndogo - diski, kumbukumbu, mfumo na huduma za mtandao, usalama, na, kwa kweli, madereva ya vifaa vipya yaliongezwa. Hebu jaribu kujua baadhi ya yale ya kuvutia zaidi.

Kuhusu kutolewa

Kutolewa kwa kernel 4.4 ilitolewa hivi karibuni, mwanzoni mwa Januari 2016, lakini wakati huu mfupi idadi kubwa ya nyongeza imekusanya. Na ingawa Linus aliita toleo jipya "kawaida," unaweza kuona kwamba ikilinganishwa na toleo la 4.4, saizi ya kiraka imeongezeka kwa karibu theluthi - 70 MB dhidi ya 49 MB. Takriban watu 1,528 walishiriki katika maendeleo, ambao walifanya marekebisho kama elfu 13. Katika faili zaidi ya elfu 11, mistari 1,146,727 ya msimbo iliongezwa na mistari 854,589 ya msimbo ilifutwa. Katika 4.4 kulikuwa na mistari 714,106 na 471,010 kwa mtiririko huo. Karibu nusu (45%) ya mabadiliko yote yanahusiana na viendesha kifaa, 17% huathiri kanuni za usanifu wa vifaa, 14% huathiri stack ya mtandao, 4% huathiri mifumo ya faili, na 3% huathiri mifumo ndogo ya kernel ya ndani. Idadi kubwa zaidi ya laini ilichangiwa na Doug Ledford kutoka Red Hat, ambaye alihusika zaidi katika kusafisha msimbo (7.7%), Tomi Valkeinen kutoka Texas Instruments, ambaye alifanya kazi ya kusaidia usanifu wa OMAP (5.3%), watengenezaji watatu walizingatia michoro ya AMD. madereva wa kadi: Eric Huang - 3.3%, Alex Deucher - 2.4% na yanyang1 - 1.6%. Viongozi wa mabadiliko ni pamoja na Linus Walleij kutoka Linaro, ambaye alitekeleza mabadiliko mengi ya kiwango cha chini, ikiwa ni pamoja na GPIO anayounga mkono (2.0%), Arnd Bergmann, ambaye alifanya kazi nyingi kwa msaada wa ARM (1.9%), na Leo Kim, ambaye alifanya kazi. kwa dereva wa wilc1000 (1.7%). Kama hapo awali, mashirika mengi yana nia ya kukuza msingi. Kazi kwenye toleo la 4.5 iliungwa mkono na zaidi ya makampuni 200, ikiwa ni pamoja na Red Hat, Intel, AMD, Texas Instruments, Linaro, Linux Foundation, Samsung, IBM, Google. Wengi wao wanakuza usaidizi kwa vifaa vyao na mifumo ndogo na zana zinazohusiana, lakini Google, kwa mfano, kawaida hufanya mabadiliko mengi kwenye mfumo mdogo wa mitandao ya Linux.

Kernel na madereva

Uhamisho wa msimbo changamano na usioungwa mkono vibaya ulioandikwa katika lugha ya mkusanyiko (x86/asm) hadi C, ulioanza mnamo 4.0, uliendelea. Kernel sasa inaweza kujengwa na -fsanitize=undefined parameta. Kigezo chenyewe kilionekana miaka miwili iliyopita katika GCC 4.9+ na kuamilisha modi ya utatuzi ya UBSan (Undefined Behavior Sanitizer), ambayo hugundua tabia isiyobainishwa iliyo katika lugha za C na C++: matumizi ya viambajengo visivyo tuli kabla ya kuanzishwa, mgawanyiko kwa sifuri, nambari kamili. kufurika, na kadhalika. Mkusanyaji kawaida hufikiria kuwa shughuli kama hizo hazitawahi kutokea, na ikiwa zitafanya hivyo, matokeo yanaweza kuwa chochote kulingana na mkusanyaji yenyewe. Sasa mkusanyaji hugundua hali kama hizi, hutoa "kosa la wakati wa kukimbia:" (unaweza kuzima -fno-sanitize-recover) na kuendelea na utekelezaji. Kwa chaguo-msingi, katika kila ujenzi wa OS, maktaba yote yanapakiwa kwenye anwani maalum, ambayo inafanya kuwa rahisi kutekeleza mashambulizi. Ili kuongeza usalama, idadi ya teknolojia hutumiwa, mojawapo ni urekebishaji wa nasibu wakati wa kupiga mmap(), inayotekelezwa kama ASLR (Kuweka Nafasi ya Anuani bila mpangilio). Teknolojia ya ASLR ilionekana kwa mara ya kwanza katika Linux mwaka wa 2005 katika kernel 2.6 na ikazalisha 8-bit kukabiliana na mifumo ya 32-bit (yaani, chaguzi za anwani 256, ingawa kwa kweli ilikuwa chini), na kwa x64 kukabiliana tayari ilikuwa 28-bit. Kwa x64 kuna chaguzi za kutosha, lakini kwa mifumo ya 32-bit, pamoja na Android, hii haitoshi leo. Tayari kuna matumizi yanayojulikana ambayo yanaweza kuchagua anwani. Kama matokeo ya kutafuta suluhisho la shida, kiraka kiliandikwa ambacho hukuruhusu kuweka nasibu kubwa kwa ASLR, kupitia /proc/sys/vm/mmap_rnd_bits na /proc/sys/vm/mmap_rnd_compat_bits (kwenye mifumo ya x64 ya x86 taratibu). Kwa kila usanifu, maadili ya chini na ya juu yanatajwa kulingana na nafasi ya anwani inayopatikana. Kwa x86, thamani inaweza kuwa katika safu kutoka biti 8 hadi 16 au 28–32 (kwa toleo la x64). Vigezo chaguo-msingi vinaweza kuwekwa wakati wa kujenga kernel.
Kuweka ASLR kwenye kernel mpya Uwezo wa kiendeshi cha DRM kwa NVIDIA (Nouveau) na kadi za video za Intel umepanuliwa (msaada kwa kizazi kijacho cha chips za Ziwa la Kaby), usaidizi wa kadi mpya za sauti, vidhibiti vya USB, na viongeza kasi vya crypto. imeongezwa. Watengenezaji wa kadi za michoro Intel na NVIDIA kwa muda mrefu wameacha matumizi ya hali ya UMS (Userspace Mode Setting) katika viendeshi vyao vya chanzo huria ili kupendelea KMS (Kernel Mode Setting), sasa ni zamu ya kiendeshi cha ATI Radeon, ambamo msimbo wa hali ya UMS. imeondolewa. Kwa kuwa 3.9 iliwezekana kuiwasha kwa kigezo cha DRM_RADEON_UMS au kwa kuweka radeon.modeset=0 katika GRUB. Sasa ni KMS pekee (Mpangilio wa Njia ya Kernel) iliyosalia. Hii lazima izingatiwe ikiwa unahitaji kutumia viendeshi vya zamani au hali ya UMS (UMS wakati mwingine inaonyesha utendaji bora). Kiendeshi cha AMDGPU kimeongeza usaidizi wa majaribio kwa teknolojia ya udhibiti wa nishati ya PowerPlay ili kuboresha utendaji wa GPU kwa Tonga na Fiji GPU na Carrizo na Stoney zilizounganishwa. Katika hali ya PowerPlay, GPU huanza katika hali ya chini ya nguvu, lakini ikiwa mzigo kwenye mfumo mdogo wa picha huongezeka, huongeza kiotomati frequency. Kwa chaguo-msingi, PowerPlay imezimwa ili kuiwezesha, lazima upitishe kigezo amdgpu.powerplay=1 kwenye kernel. Toleo jipya la API ya kidhibiti cha Vyombo vya habari huongeza usaidizi kwa vifaa vya Video4Linux na kuruhusu utendakazi wa kidhibiti cha medianuwai kutumika katika mifumo mingine midogo kama vile DVB, ALSA na IIO. KVM (Kernel-Based Virtual Machine) imefanya mengi kusaidia usanifu wa s390 (sasa inaweza kutumia hadi 248 vCPU), ARM/ARM64 na kuboresha utendaji wa x86 katika Hyper-V.

Kufunga kernel 4.5 katika Ubuntu

Njia rahisi ya kufahamiana na kernel mpya ni kutumia muundo kutoka kwa Timu ya Ubuntu Kernel. Baada ya majaribio ya kina, kernel mpya hutolewa ppa:canonical-kernel-team/ppa , lakini hii kawaida huchukua muda. $ wget -kutoka http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb http://kernel .ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500_4.5.0-040500.201603140130_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline /v4.5-wily/linux-image-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb $ sudo dpkg -i linux*.deb Baada ya kuwasha upya tunaweza kufanya kazi.

Msaada wa ARM

Kompyuta za ARM hutumiwa kama seva ndogo kwa kazi fulani au kama vidhibiti otomatiki, ambayo inazifanya kuwa maarufu sana na zinahitajika. Jumuiya ya Linux ARM imekuwa mojawapo ya kazi kubwa zaidi katika kipindi cha miaka mitano iliyopita, baada ya kufanya kazi kubwa ya kusaidia majukwaa ya 32-bit ARM, ambayo yana sehemu kubwa ya soko, na kazi hii kwa ujumla ilikamilishwa na kutolewa kwa tawi la 4.5. Hapo awali, kila kifaa cha ARM kilihitaji kujenga kernel yake, kutoa msaada kwa vifaa fulani tu. Lakini shida ni kwamba vifaa vilikuwa ngumu zaidi, ikawezekana kubadili usanidi, na watumiaji wenyewe kwenye vifaa vya ARM walitaka kutumia usambazaji wa kawaida bila ugomvi usiohitajika. Lakini tuliishia na mamia ya miundo tofauti ya kernel, ambayo inafanya Linux kuwa ngumu sana kutumia. Matokeo ya kusafisha na kurekebisha tena kiasi kikubwa kanuni, imewezekana kujumuisha msimbo wa usaidizi wa ARMv6 na ARMv7 kwenye kernel, yaani, sasa tunaweza kukusanya kernel ya ulimwengu wote ambayo inaweza kuwasha kwenye mifumo yote miwili. Hapa, labda, tunahitaji kukumbuka juu ya ukuzaji katika Hivi majuzi Vipimo vya Mti wa Kifaa, ambavyo viliibuka kama sehemu ya ukuzaji wa Firmware Huria. Mti wa Kifaa hukuruhusu kusanidi maunzi wakati wa kuwasha kwa kutumia faili maalum za dts zilizohifadhiwa katika /boot/dtbs, na kubadilisha mipangilio bila kuunda upya kernel. Kutumia Device Tree inakuwa lazima kwa maendeleo yote mapya ya ARM na si vifaa pekee. Haya yote kwa pamoja yanatoa imani kuwa usambazaji wa Linux katika siku zijazo unaweza kuendeshwa kwa usalama kwenye kifaa chochote cha ARM. Wakati huo huo, Greg Kroah-Hartman kutoka Wakfu wa Linux alitoa kiraka kinachotekelezea kipengele sawa kwa matoleo ya awali ya punje. Katika arch/arm64 tutapata msimbo unaotoa usaidizi kwa usanifu mpya wa 64-bit ARM (ARMv8). Imeongeza vipengele vipya vya usanifu wote maarufu wa ARM - Allwinner, Amlogic, Samsung, Qualcomm na usaidizi wa bodi mpya za ARM kutoka kwa wasanidi mbalimbali.

Huduma za mfumo

Ili kufikia data ya firmware ya UEFI (Unified Extensible Firmware Interface) katika Linux, efivars maalum ya mfumo wa faili-pseudo hutumiwa (iliyoundwa na EFIVAR_FS), ambayo imewekwa katika /sys/firmware/efi/efivars. Katika baadhi ya utekelezaji, kutekeleza amri ya rm -rf /* pia ilifuta yaliyomo kwenye saraka hii, ambayo ilisababisha uharibifu wa firmware. Makampuni ya watengenezaji wa kifaa hawazingatii hii kama shida kubwa, kwa sababu hali hiyo, bila shaka, sio ya kawaida, na hakuna uwezekano kwamba mtumiaji yeyote angefikiria kuangalia hii. Walakini, kuna shida, na waandishi wa virusi wanaweza kutumia fursa hii vizuri. Sasa katika kernel 4.5, ulinzi maalum umeongezwa kwa saraka ya /sys/firmware/efi/efivars, ambayo hairuhusu faili zilizo ndani kufutwa.

Muendelezo unapatikana kwa wanachama pekee

Chaguo 1. Jiunge na jumuiya ya "tovuti" ili kusoma nyenzo zote kwenye tovuti

Uanachama katika jumuiya ndani ya muda uliobainishwa utakupa ufikiaji wa nyenzo ZOTE za Wadukuzi, kuongeza punguzo lako la kibinafsi na kukuruhusu kukusanya ukadiriaji wa Alama wa Xakep wa kitaalamu!

Hivi karibuni, matoleo mapya ya kernels yametolewa mara nyingi. Kutolewa kwa utulivu hutoka kila baada ya miezi michache. Kweli, wagombeaji wasio na msimamo wa matoleo huonekana mara nyingi zaidi. Linus Torvalds na watengenezaji wengi duniani kote wanafanya kazi kila mara ili kuboresha kokwa mpya na kuongeza utendaji zaidi na zaidi kwao.

Kwa kila toleo jipya, kinu cha Linux huongeza usaidizi kwa vifaa vipya kadhaa, kama vile vichakataji vipya, kadi za video, au hata skrini za kugusa. Hivi karibuni, msaada wa vifaa vipya umeboreshwa sana. Pia, mifumo mpya ya faili imejumuishwa kwenye kernel, uendeshaji wa stack ya mtandao unaboreshwa, na makosa na mende hurekebishwa.

Ikiwa unahitaji zaidi maelezo ya kina kwa mabadiliko katika toleo fulani la kernel, angalia Changelog yake kwenye kernel.org, na katika makala hii tutaangalia kusasisha kernel ya Linux hadi toleo jipya zaidi. Nitajaribu kutofunga maagizo kwa toleo maalum la kernel;

Wacha tuangalie kusasisha kernel ya Ubuntu na CentOS. Kwanza, hebu tuangalie jinsi ya kusasisha kernel katika Ubuntu 16.04.

Wacha kwanza tuone ni kernel gani umesakinisha. Ili kufanya hivyo, fungua terminal na uendeshe:

Kwa mfano, kwa sasa ninatumia toleo la 4.3, na ninaweza kusasisha hadi toleo jipya zaidi. Watengenezaji wa Ubuntu tayari wamehakikisha kuwa watumiaji wao hawakusanyi kernel kwa mikono na wameunda vifurushi vya deb kwa toleo jipya la kernel. Wanaweza kupakuliwa kutoka kwa tovuti rasmi ya Canonical.

Ningeweza kutoa amri za wget hapa za kupakua ikiwa toleo la kernel lilijulikana, lakini kwa upande wetu itakuwa bora kutumia kivinjari. Fungua tovuti http://kernel.ubuntu.com/~kernel-ppa/mainline/. Hapa kuna kokwa zote zilizokusanywa na timu ya Ubuntu. Kernels hukusanywa kwa ugawaji maalum, na jina la msimbo wa usambazaji, na kwa ujumla. Kwa kuongezea, kokwa kutoka kwa Ubuntu 16.10 zitafanya kazi mnamo 16.04, lakini haifai kusanikisha kernel kutoka 9.04 kwenye Ubuntu 16.04.

Tembeza hadi chini, hapa ndipo matoleo mapya zaidi ya kernels yanapatikana:

Kwa kuongeza, juu sana kuna folda ya kila siku / ya sasa, ambayo ina kernel ya hivi karibuni, ya usiku hujenga. Chagua toleo la kernel unalotaka na upakue faili mbili vichwa vya linux na picha ya linux kwa usanifu wako:

Baada ya kupakua kukamilika, unaweza kuendelea na usakinishaji. Ili kufanya hivyo, fanya yafuatayo kwenye terminal:

Nenda kwenye folda iliyo na vifurushi vya usakinishaji, kwa mfano ~/Downloads:

Endesha usakinishaji:

Ikiwa amri hii haifanyi kazi, unaweza kwenda kwa njia nyingine. Sakinisha matumizi ya gdebi:

sudo apt-get install gdebi

Kisha itumie kusanikisha kernel:

sudo gdebi linux-headers*.deb linux-image-*.deb

Kernel imewekwa, kilichobaki ni kusasisha bootloader:

sudo update-grub

Sasa unaweza kuanzisha upya kompyuta yako na kuona kilichotokea. Baada ya kuwasha upya, tutahakikisha kwamba sasisho la Linux kernel kwa toleo jipya zaidi lilifanikiwa:

Kama unavyoona, kernel imesakinishwa kwa ufanisi na inafanya kazi. Lakini usikimbilie kufuta toleo la zamani kernel, inashauriwa kuwa na matoleo kadhaa ya kernel kwenye mfumo, ili katika kesi ya matatizo unaweza boot kutoka toleo la zamani la kazi.

Sasisho la kiotomatiki la Linux Kernel kwenye Ubuntu

Hapo juu tuliangalia jinsi ya kusanikisha toleo la kernel linalohitajika kwa mikono. Ubuntu alikuwa na PPA ya ujenzi wa kernel kila siku, lakini sasa imefungwa. Kwa hivyo, unaweza kusasisha kernel tu kwa kupakua kifurushi cha deb na kukisakinisha. Lakini yote haya yanaweza kurahisishwa kwa kutumia script maalum.

Sakinisha hati:

cd /tmp
$ git clone git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/install

Inatafuta masasisho:

KernelUpdateChecker -r yakkety

Chaguo la -r hukuruhusu kutaja tawi la usambazaji ambalo unataka kutafuta kokwa. Kernels za xenial hazijajengwa tena, lakini punje kutoka kwa toleo linalofuata zitafanya kazi vizuri hapa. Kwa kuongezea, chaguo la -no-rc linaweza kuwaambia matumizi kutotumia wagombeaji wa toleo, na -v chaguo linabainisha toleo halisi la kernel la kusakinisha. Ikiwa haujali ni usambazaji gani wa kernel, mradi tu ndio mpya zaidi, tumia --any-release chaguo. Nakala itatoa matokeo yafuatayo:

Kabla ya kusakinisha kernel, unaweza kutazama maelezo kwa kufungua /tmp/kernel-update faili:

Hapa tunaweza kuona kwamba kulikuwa na utafutaji wa yakkety na pia juu wakati huu Toleo la Kernel 4.7-rc6 linapatikana. Tunaweza kufunga:

sudo /tmp/kernel-update

Hati itatuonyesha toleo la kernel ya sasa, pamoja na toleo la kernel ambayo itasakinishwa, tarehe yake ya ujenzi na maelezo mengine. Pia utaulizwa ikiwa unahitaji kuweka kumbukumbu ya mabadiliko. Ifuatayo inakuja usakinishaji:

Kernels za zamani, ikiwa tu, usifute (n):

Imekamilika, kusasisha kernel hadi toleo jipya zaidi kumekamilika, sasa washa tena kompyuta yako (y):

Wacha tuangalie ikiwa sasisho la kernel la Ubuntu lilifanya kazi kweli:

Zaidi ya hayo, hati imeongezwa ili kuanza na sasa itaangalia kiotomatiki masasisho sekunde 60 baada ya kuingia. Njia ya mkato ya upakiaji kiotomatiki iko kwenye faili:

vi ~/.config/autostart/KernelUpdate.desktop

Unaweza kuibadilisha unavyohitaji au kuifuta. Ikiwa unataka kuondoa hati kabisa kutoka kwa mfumo, endesha:

rm ~/.config/autostart/KernelUpdate.desktop
$ sudo rm /usr/local/bin/KernelUpdate(Checker,ScriptGenerator)

Sio kupakua

Ikiwa makosa yoyote yalitokea wakati wa usakinishaji au kernel haikusasishwa kwa usahihi na sasa mfumo hauingii na kernel mpya, unaweza kutumia kernel ya zamani. Pia, mfumo hauwezi kuanza ikiwa unatumia dereva wa wamiliki kwa kadi ya video ya NVIDIA, usikimbilie kupakua toleo la hivi karibuni la kernel, kama sheria, msaada wa moduli hii; tayari imeongezwa kwao.

Na kurejesha mfumo, chagua Chaguzi za hali ya juu za Ubuntu kwenye menyu ya Grub:

Na anza kernel iliyotangulia:

Baada ya kupakua, kilichobaki ni kuondoa kernel iliyosanikishwa vibaya na kusasisha Grub tena, badilisha toleo la kernel inayotaka badala ya 4.7:

sudo apt kuondoa linux-header-4.7* linux-image-4.7*

sudo update-grub

Mfumo wako sasa umerejea katika hali yake ya awali. Unaweza kujaribu kusakinisha toleo la zamani la kernel au ujaribu tena.

Inasasisha Linux Kernel hadi 4.4 kwenye CentOS

Sasa hebu tuangalie jinsi ya kusasisha toleo la hivi karibuni la Linux kernel katika CentOS. Maagizo yamejaribiwa kwenye CentOS 7, lakini uwezekano mkubwa utafanya kazi kwenye RedHat 7, Fedora na usambazaji mwingine sawa.

Kama sheria, kokwa mpya hazijajumuishwa kwenye hazina rasmi za CentOS, kwa hivyo ili kupata toleo thabiti la hivi karibuni tutahitaji kuongeza hazina ya ELRepo. Hili ni hifadhi ya vifurushi vya kibiashara (Enterprise Linux Packages) na pia inaungwa mkono na RedHat na Fedora.

Ili kuongeza hazina, fuata hatua hizi:

Kwanza unahitaji kuingiza ufunguo:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Ongeza hazina na vijenzi muhimu kwa RHEL/Scientific Linux/CentOS-7:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum install yum-plugin-fastestmirror

Kwenye Fedora 22 na zaidi:

Wakati mwingine unaweza kuhitaji kujenga yako mwenyewe Linux kernel. Sababu za hii inaweza kuwa zifuatazo:

  • unahitaji kernel safi, bila patches za usambazaji;
  • unataka kutumia patches yako mwenyewe (ambayo kuna mengi);
  • unataka kukusanya kernel ili kuendana na usanidi wako wa maunzi, kutupa vitu visivyo vya lazima kutoka kwayo na/au kuirekebisha kwa kazi maalum;
  • unataka kujumuisha kiendeshi cha majaribio au mfumo wa faili kwenye kernel ambayo haijajumuishwa "vanilla" kernel (kwa mfano ZFS au Mkuzaji 4);
Hakuna chochote ngumu juu ya kukusanyika kernel. Ni muhimu tu kuelewa kwa nini hii inafanywa, na pia si kugusa vigezo hivyo ambavyo huelewi. Katika noti hii nitaelezea mifano miwili ya kujenga kernel ndani Inayotokana na Debian usambazaji. Katika mfano wa kwanza, nitaonyesha jinsi ilivyo rahisi kukusanya punje safi, inayoitwa "vanilla" (kama inavyotolewa na Linus Torvalds), na kwa pili - jinsi ya kutumia viraka vyako mwenyewe na kuongeza kernel. Mara moja nitaandika maonyo mawili:
  • utahitaji kujenga upya kernel kila wakati inasasishwa (pakua "kiraka cha sasisho", kiitumie na kukusanya kernel);
  • kernel iliyojengwa upya inaweza kufanya kazi ikiwa mfumo wako unatumia hacks fulani ili kuhakikisha utendakazi wa kifaa hiki au kile;
  • Ikiwa punje imesanidiwa vibaya, haswa katika kesi ya utumiaji wa viraka bila kusoma na kuandika, unaweza kuishia na mfumo ambao ni wa polepole sana, au kuupoteza kabisa.
UNAFANYA VITENDO VYOTE KWA HATARI YAKO MWENYEWE!

Mkutano rahisi wa kernel bila viraka.

Nambari ya chanzo ya Linux kernel inapatikana kwenye kernel.org. Wapo pia "sasisha viraka". Tunahitaji nini? Pakua kutoka kwa tovuti mpira wa lami(hifadhi) na toleo la hivi karibuni la kernel (wakati wa kuandika, hili ndilo toleo 4.3 ) Pakua na mtu yeyote kwa njia rahisi. Ifuatayo, tunahitaji zana za kusanyiko:

sudo apt install kiraka cha kifurushi muhimu cha gcc kernel
sudo apt-get build-dep linux

Baada ya kila kitu kimewekwa zana muhimu, fungua kumbukumbu na msimbo wa kernel kwenye saraka yoyote inayofaa. Liwe liwalo /nyumbani/mtumiaji/KERNEL, Wapi "mtumiaji"- jina la mtumiaji wa mfumo. Ifuatayo, fungua terminal na uende huko:

cd /home/user/KERNEL

Kilichobaki ni kukusanya kernel:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-custom kernel_image kernel_headers #-j 3

Nambari 3 baada ya j- hii ni idadi ya cores ya processor yako + 1. Hiyo ni, kwa processor mbili-msingi ni 3, kwa processor 4-msingi ni 5 na kadhalika.
-desturi- hapa unaweza kutaja jina linalofaa kwa kernel ili iwe rahisi kuitofautisha kutoka kwa usambazaji.
kernel_picha Na kernel_headers- hii ni kernel yenyewe na faili zake za kichwa, kwa mtiririko huo. Vichwa vya habari muhimu kwa ajili ya kukusanya madereva na moduli za kernel, na pia kwa madhumuni mengine. Baada ya kutekeleza amri hii, maswali kadhaa ya usanidi wa kernel yataanza kuonekana. Kwa kuwa tunaacha kila kitu kama chaguo-msingi, bonyeza tu Enter hadi muundo uanze. Kulingana na nguvu ya kompyuta yako, mkusanyiko unaweza kuchukua kutoka dakika 15-20 hadi saa kadhaa. Baada ya kusanyiko, kwenye saraka /nyumbani/mtumiaji mbili zitaonekana deb kifurushi: msingi na vichwa. Wasakinishe kwa amri:

sudo dpkg -i linux-image-4.3*deb linux-headers-4.3*deb
sudo update-grub

Na uwashe upya. Katika menyu ya GRUB sasa unaweza kuchagua kernel tofauti ili kuwasha mfumo.

Kuunda kernel kwa kutumia viraka na usanidi wa ziada.

Wakati huu tutakusanya kerneli iliyoboreshwa ya kufanya kazi na sauti na video, na pia kwa uwajibikaji zaidi wa mfumo. Ili kufanya hivyo, tutatumia viraka viwili: kinachojulikana kama kiraka cha wakati halisi ( PREEMPT RT) na kiraka cha mkusanyaji GCC, kuongeza chaguzi za ziada kwa uboreshaji wa processor. Kwanza, kiraka ni nini? Kiraka ni faili ya maandishi ambayo imeundwa na programu tofauti, iliyo na mabadiliko ya msimbo katika sehemu fulani, ambayo, wakati wa kutumia kiraka, huingizwa kwenye maeneo sahihi. Kwa sababu Kipande cha RT inatoka kwa ucheleweshaji mkubwa, toleo lake la hivi karibuni ni la punje 4.1. Walakini, hii sio muhimu sana. Kwa kutumia mpango huo huo, pakua kernel 4.1 kutoka kernel.org na uipakue kwenye saraka. /nyumbani/mtumiaji/KERNEL-CUSTOM. Sasa pakua viraka. PREEMPT_RT na Kiraka cha GCC. Kutoka kwenye kumbukumbu zilizopakuliwa, tunahitaji faili zilizo na kiendelezi cha .patch, ambacho lazima kiwekwe kwenye saraka na msimbo wa chanzo wa kernel. Hiyo ni, katika /nyumbani/mtumiaji/KERNEL-CUSTOM. Kabla ya kutumia patches, unahitaji kuhakikisha kuwa hakuna makosa. Fungua terminal:

cd /home/user/KERNEL-CUSTOM
kiraka -p1 -i kiraka-4.1.13-rt15.patch --dry-run


Chaguo --kavu-kukimbia hukuruhusu kuiga utumizi wa kiraka, bila kufanya mabadiliko kwenye faili. Ikiwa hakuna makosa yaliyopatikana (angalia skrini) - ukubali kiraka bila chaguo --kavu-kukimbia. Fanya vitendo sawa na kiraka cha pili. Usitumie zaidi ya kiraka kimoja kwa wakati mmoja! Sasa tunahitaji kusanidi kernel yetu. Tuna chaguzi zifuatazo za kuchagua kutoka:

fanya usanidi- maswali kuhusu usanidi wa mfumo mdogo wa kernel utaonyeshwa kwenye terminal moja baada ya nyingine. Mchakato mrefu sana na wa kuchosha. Wacha tuisahau :)
tengeneza oldconfig- usanidi wa kernel inayoendesha sasa itatumika. Kwa kuwa tunakusanya yetu kutoka mwanzo, njia hii pia haina maana.
tengeneza defconfig- sawa na ile ya awali, tu maadili itakuwa kwa default. Jinsi watengenezaji wa kernel walivyoiweka. Sawa na njia ya kwanza ya kusanyiko.
tengeneza menyu- pseudo-graphical interface kulingana na maktaba Wauguzi. Kiolesura chenye menyu ya hali ya juu kitaonyeshwa kwenye skrini. Vidhibiti kwa kutumia vitufe vya mwelekeo, upau wa nafasi na kitufe cha TAB. Inapendekezwa ikiwa unaunda kernel kwenye mfumo ambao hauna ganda la picha.
tengeneza gconfig GTK, inayopendekezwa katika GNOME, Mate, Xfce, Cinnamon, Unity na zingine zinazotumia GTK.
tengeneza xconfig- GUI msingi Qt. Imependekezwa katika KDE. Kwa kuwa mfumo wangu unatumia KDE, nitatumia njia hii. Kwa kuongeza hii, kuna njia kadhaa zaidi, lakini matumizi yao sio tofauti. Kwa hiyo, baada ya kutumia patches, tunazindua tengeneza xconfig na hili ndilo linaloonekana mbele yetu:


Kwanza kabisa, zima dynticks. Ili kufanya hivyo, tunaenda Mfumo mdogo wa vipima muda na kuchagua Kupe za kipima saa za mara kwa mara


Sasa sehemu bora. Twende Aina na vipengele vya wasindikaji, kutafuta kitu Familia ya processor na uonyeshe mfululizo wako wa kichakataji. Kwa mfano, ikiwa unayo Intel Core i5-4xxx, onyesha Hasswell(Prosesa ya kizazi cha 4). Ikiwa huna uhakika hasa, unaweza kuchagua kipengee Uboreshaji asili hugunduliwa kiotomatiki na GCC. Katika kesi hii, wakati wa kusanyiko, mkusanyaji yenyewe ataamua ni nini processor yako inasaidia na itajumuisha vipengele vyake vyote.


Nenda chini na uwashe parameta Punje kamili inayoweza kupeperuka (RT). Hali ngumu ya wakati halisi.


Tembeza chini na kwa uhakika Masafa ya kipima muda weka mzunguko wa kukatiza mfumo kwa 1000 Hz


Tunazima kabisa uokoaji wowote wa nishati. Ni muhimu! Upande wa kushoto tunatafuta kipengee Usimamizi wa nguvu na chaguzi za ACPI

na ubatilishe uteuzi wa ACPI. Zima pia uokoaji wa nishati ya CPU Ni hayo tu. Ikiwa unataka (na ujifunze kwa uangalifu nyaraka), unaweza kufanya mabadiliko ya ziada kwenye usanidi (lemaza madereva yasiyo ya lazima, tumia mifumo ndogo ya ziada, na kadhalika). Sasa tunahifadhi usanidi kupitia Faili - Hifadhi

, funga kisanidi na usanye kernel:
sudo update-grub

fakeroot make-kpkg -j 3 --initrd --append-to-version=-rt-custom kernel_image kernel_headers #-j 3 Kwenye kompyuta yangu na processor ya Intel Core i3-550 (3.2 GHz), ongezeko la utendaji lilionekana kabisa. Lakini jambo muhimu zaidi ni wakati wa kufanya kazi ndani Na LMMS Kdenlive

, kigugumizi cha mara kwa mara, usanifu wa nyimbo za sauti na video, pamoja na kufungia chini ya mzigo mkubwa kwenye gari ngumu zimepotea. Hitimisho - inafanya kazi! Mwishowe, nitaelezea kokwa mbili zilizobadilishwa, ambazo ni maarufu sana katika miduara ya Linux: PF-kernel

  • - seti maarufu zaidi ya patches kutoka kwa Kiukreni Alexander Natalenko (aka post-factum). Hii ni seti ya viraka ambazo hazijajumuishwa kwenye kernel kuu, lakini hutoa mwitikio wa mfumo ulioongezeka, hutoa mfumo mdogo wa hibernation ambao ni kasi zaidi kuliko kuu, na pia kupunguza matumizi ya kumbukumbu kwa kutumia mbinu ya kuunganisha kurasa zinazofanana. Seti ni pamoja na:
  • Mratibu wa mchakato wa BFS na Con Kolivas na marekebisho ya ziada na Alfred Chen;
  • Mratibu wa BFQ I/O na Paolo Valente, Arianna Avanzini na Mauro Marinoni;
  • mfumo mdogo wa hibernation TuxOnIce kutoka Nigel Cunningham;
  • utekelezaji wa mbinu ya kuunganisha kurasa zinazofanana katika kumbukumbu ya UKSM kutoka kwa Nai Xia;
kiraka kutoka kwa Graysky, kupanua orodha ya wasindikaji wa uboreshaji wa kernel na mkusanyaji (ile tuliyotumia hapo juu)

Hazina ya kernel iliyorekebishwa. Tovuti rasmi.- seti ya pili maarufu zaidi, lakini ya kwanza kwa suala la idadi ya patches. Zen Kernel hutumia mchanganyiko wa miradi kadhaa, kusasisha msimbo kupitia hazina ya git, na pia ina mambo kadhaa mahususi ya Zen ambayo yanalenga kukidhi mahitaji mengi ya mtumiaji katika kerneli moja. Baadhi ya vipengele vya kiraka: drm-ifuatayo, kupima bila waya, chaguo la vipanga ratiba vya CPU (CFS/BFS), kipanga ratiba cha BFQ I/O, aufs, unionfs, reiser4, tuxonice, PHC na vitu vingine vingi ambavyo ni bora kwa kuboresha mifumo ya eneo-kazi. au laptops. Yote hii inapatikana kwa namna ya kiraka kimoja kwenye kernel ya vanilla. Tovuti rasmi. Hifadhi ya GIT. Vifurushi vya Debian/Ubuntu.

Pengine ni hayo tu kwa leo. Maelezo zaidi yanaweza kupatikana katika viungo vya makala. Kila kitu kilichoelezewa katika kifungu kimejaribiwa na mimi kwenye usanidi mwingi.

Waanzizaji ambao wanaanza kufahamiana na Linux, jambo la kwanza wanajiuliza ni swali la busara: jinsi na wapi kupakua Linux? Inaweza kuonekana kuwa hakuna chochote ngumu hapa, lakini swali linatokea na mimi huulizwa mara nyingi.

Amua juu ya usambazaji wako wa Linux

Acha nianze na ukweli kwamba uwezekano mkubwa unahitaji kupakua usambazaji wa Linux. Kwa sababu neno la jumla Linux linaweza kueleweka kama kinu cha Linux na usambazaji wowote wa Linux. Baadaye katika makala nitajiruhusu wakati mwingine kutumia maneno haya yote mawili kama sawa. Suala la kuchagua usambazaji ni zaidi ya upeo wa noti hii. Unaweza kutazama usambazaji wa Linux kwenye saraka ya usambazaji wa Linux.

Hebu tuchukulie kuwa umechagua usambazaji na unataka kuipakua. Kila usambazaji wa Linux unaweza kawaida kupakuliwa bila malipo katika miundo tofauti. Kawaida ni faili za ISO. Faili ya ISO ni picha ya diski ya CD au DVD. Mara nyingi, matoleo ya CD au DVD hutofautiana tu kwa kuwa kuna vitu tofauti zaidi kwenye matoleo ya DVD programu, ambayo unaweza kusakinisha moja kwa moja kutoka kwenye diski ama wakati wa mchakato wa usakinishaji wa Linux au baada ya usakinishaji wakati wowote.

Linux ipi ya kupakua (i386, x86_64, amd64...)

Unaweza pia kupakua Linux chini ya majukwaa mbalimbali. Kwa kawaida, watengenezaji wa usambazaji hutoa matoleo ya 32-bit na 64-bit ya Linux. Ni ipi unayochagua inategemea sana uwezo wa kichakataji chako. Kama sheria, wasindikaji wote wa kisasa ni 64-bit.

Matoleo ya 32-bit ya Linux kwa kawaida hurejelewa kama i386, na matoleo ya 64-bit kawaida hujulikana kama x86_64 (kwa vichakataji vya Intel) na amd64 (kwa vichakataji vya Amd).

Unaweza pia kukutana na majina kama vile arm, mips, ppc na wengine. Haya ni matoleo ya Linux yaliyokusanywa mahsusi kwa vichakataji vya Arm, Mips, PowerPC.

Kompyuta za nyumbani na kompyuta ndogo kwa kawaida hutumia vichakataji vya Intel au Amd, kwa hivyo kuna uwezekano mkubwa kuwa utavutiwa na i386, x86_64, amd64.

Mahali pa kupakua usambazaji wa Linux

Kwa hivyo, umeamua juu ya usambazaji wako wa Linux. Unachohitajika kufanya ni kwenda kwenye wavuti ya msanidi programu na upate sehemu ya upakuaji hapo; inaweza kuitwa kitu kama Vipakuliwa, Pata, Pata ISO, Pakua, Pakia.

Njia moja ya haraka ya kupakua Linux ni kutumia faili za torrent. Inafanya kazi kama ifuatavyo. Unapakua faili ya torrent na, kwa kutumia mteja wa torrent, anza kupakua Linux yenyewe. Wateja wa Torrent kwa Linux wanaweza kupatikana katika orodha ya programu katika sehemu ya "Torrent clients".

Toleo sawa la usambazaji wa Linux linaweza kupangishwa kwenye seva tofauti (vioo). Kadiri seva inavyokaribia kijiografia kwako na ndivyo inavyokuwa juu zaidi matokeo, jinsi unavyopakua Linux kwa haraka. Kioo maarufu cha Kirusi ambapo unaweza kupakua Linux ni kioo kutoka kwa Yandex: https://mirror.yandex.ru au toleo la FTP ftp://mirror.yandex.ru

Nitaangalia sehemu kadhaa ambapo unaweza kupakua usambazaji maarufu wa Linux bila malipo:

UsambazajiNinaweza kupakua wapi
Ubuntu
  • Pakua Ubuntu Desktop (toleo kuu la Ubuntu kwa matumizi ya nyumbani)
Debian
Arch Linux
Gentoo
OpenSUSE
Fedora
  • Picha ya ISO ya Fedora (Toleo la kibinafsi la Kituo cha Kazi)
  • Kioo cha FTP kwenye Yandex (kwa matumizi ya kibinafsi, chagua toleo la Workstation)
Slackware
Na wengineSaraka ya usambazaji wa Linux (kwenye ukurasa wa kila usambazaji kuna kiunga cha wavuti rasmi).

Mahali pa kupakua kernel ya Linux

Toleo lolote la msimbo wa chanzo wa Linux kernel linaweza kupakuliwa kila wakati kutoka kernel.org.

Jinsi ya kuagiza diski na Linux

Ikiwa hakuna njia yoyote inayofaa kwako, basi unaweza kupata washiriki katika jiji lako ambao watakubali kukupa diski na Linux. Zaidi ya hayo, sasa kuna jumuiya nyingi tofauti za Linux.

Kuunda kernel ya Linux
Habari, wasomaji wapendwa. Leo nitazungumzia hili shughuli ya kuvutia Jinsi ya kuunda Linux kernel. Kwa nini unaweza kuhitaji kukusanya kernel mwenyewe? Kwa kweli, kunaweza kuwa na sababu nyingi: haja ya kutumia vipengele vya ziada kokwa, boresha kernel kwa kompyuta yako, sasisha punje kwa toleo jipya zaidi. 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 tunahitaji kupata msimbo wa chanzo, hii inaweza kufanywa njia tofauti na kutoka vyanzo mbalimbali. 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. Njia hii ni bora ikiwa hauitaji yoyote teknolojia mpya au kipengele kinachoauniwa 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 thabiti:

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 ya 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 usimbaji fiche 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 ya awali; ikiwa unaanza mkusanyiko kwa mara ya kwanza, si lazima kuendesha 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 kuwa kernel ilijengwa 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!