Ca unul dintre bunul meu prieten, - „Nu am încredere într-un administrator de Linux, care nu au compilat kernel-ul“, iar în acest sens, am pe deplin de acord cu el, acesta este numai după ce le colecta kernel-ul și pentru a boota de la tine va fi un sistem de unele intelegerea proceselor interne care apar in sistem in stadiul de incarcare OS (si iluminarea va veni).
In cele mai multe cazuri, pentru activitatea zilnică suficient pachet de distribuție regulată care conține ansamblul nucleu și miez deja compilate pot fi utile în patch-uri specifice aplicației sau de a crea un nucleu monolitic cu un set fix de drivere pentru dispozitivele integrate numai. Problemele discutate în acest articol vor fi utile în viitor când vom construi un nod optimizat de virtualizare KVM.
Pregătirea mediului pentru construirea kernel-ului Linux
Pentru a construi kernel-uri în Ubuntu Linux, trebuie să instalați următoarele pachete:
# apt-get install install-essential checkinstall
# aptitude instalează libssl-dev libncurses5-dev
Obținerea codului sursă al kernelului
Codul sursă pentru kernel poate fi obținut în mai multe moduri:
Nu recomand prima opțiune, deoarece în acest caz veți obține cea mai recentă versiune, care nu este un fapt pe care chiar îl întâlnește și care este destul de proastă de folosit nu numai pe serverele de luptă, ci și pe stațiile de lucru.
În general, luați-vă regula de utilizare a versiunii LTS (cu un ciclu lung de suport) pe serverele de luptă și ultima versiune stabilă pe servere mai puțin responsabile și stații de lucru.
Apropo, este cea de-a treia opțiune (descărcați pachetul cu codurile sursă din depozitul distribuției), deoarece conține păreri de la administratorii distribuitorului și după cum înțelegeți, vom lua în considerare.
Descărcați codul sursă al kernelului actual (din care este încărcat sistemul în prezent) și instalați mediul pentru asamblare:
# mkdir / usr / src / kernel-build
# cd / usr / src / kernel-build
# apt-get sursa linux-image - $ (uname -r)
# apt-get build-dep linux-imagine - $ (uname -r)
Modificați configurația de bază
Modificarea configurației atunci când asamblați un pachet kernel folosind fakeroot diferă oarecum de la o construcție tipică folosind make menuconfig:
# cd ./linux-4.4.0/
# chmod a + x debian / script-uri / *
# chmod a + x debian / script-uri / misc / *
# fakeroot debian / reguli curat
# fakeroot debian / rules editconfigs
Când executați ultima comandă editconfigs, vi se va solicita în mod repetat să editați mai multe fișiere de configurare:
Doriți să editați config: i386 / config.flavour.generic? [Y / n] n
Doriți să modificați config: i386 / config.flavour.lowlatency? [Y / n] n
După ce ajungeți la fișierul de configurare de care aveți nevoie și apăsați pe Y (în acord cu modul de editare), va fi lansat menconfig-ul de fabricare obișnuit pe care l-am menționat mai sus.
Colectăm kernel-ul Linux într-un pachet deb
După ce fișierele de configurare au fost editate, executați ansamblul de pachete deb:
# fakeroot debian / reguli curat
# fakeroot debian / reguli binare
Ca rezultat al asamblării (un proces destul de lung), pachetele deb necesare apar în rădăcina directorului de asamblare:
# ls * .deb
# linux-headers-4.8.0-17_4.8.0-17.19_all.deb
# linux-headers-4.8.0-17-generic_4.8.0-17.19_amd64.deb
# linux-image-4.8.0-17-generic_4.8.0-17.19_amd64.deb
Construirea unei versiuni GIT a kernel-ului Linux
Pentru a încărca versiunea din GitHub, utilizați următoarea comandă:
Pentru a porni de pe kernel.org, va trebui să despachetați arhiva în plus:
Următoarea secvență de acțiuni a fost descrisă în mod repetat în diverse publicații pe Internet și se reduce la executarea unei secvențe simple de comenzi ale consolei:
# make oldconfig
# make xconfig
# face face make_modules
# make modules_install face instalare
Rețineți că mai întâi folosim comanda make oldconfig. Această comandă are un set de parametri actuali ai kernelului (specificați în timpul construirii) și le aplică automat configurației create, iar valorile noilor parametri din kernelul vechi nu au fost încă solicitate, iar valorile implicite sunt sugerate.
*
* Suport pentru grupul de control
*
Suport pentru grupul de control (CGROUPS) [Y /?] Y
Controler de memorie (MEMCG) [Y / n /?] Y
Controler de comutare (MEMCG_SWAP) [Y / n /?] Y
Comutare swap activată implicit (MEMCG_SWAP_ENABLED) [N / y /?] N
Controller IO (BLK_CGROUP) [Y / n /?] Y
IO de depanare a controlerului (DEBUG_BLK_CGROUP) [N / y /?] N
*
* Controler CPU
*
Controlerul procesorului (CGROUP_SCHED) [Y /?] Y
Programarea grupului pentru SCHED_OTHER (FAIR_GROUP_SCHED) [Y] y
Procesarea lățimii de bandă a procesorului pentru FAIR_GROUP_SCHED (CFS_BANDWIDTH) [Y / n /?] Y
Programarea grupului pentru SCHED_RR / FIFO (RT_GROUP_SCHED) [N / y /?] N
Comanda face xconfig lansează un configurator grafic convenabil, cu un indiciu convenabil pentru contextual referitor la parametrii modulelor și opțiunilor.
În versiunea consola a ansamblului, aveți nevoie de o altă versiune a configuratorului:
Nu este atât de convenabil, dar funcționează în consola. După ce ați configurat kernel-ul pentru gustul și culoarea dvs., executați ultimele două comenzi și așteptați finalizarea construcției.
După terminarea construcției, kernelul va fi instalat în sistem și puteți încerca să reporniți serverul (sau stația de lucru). În stadiul de descărcare, selectați kernelul asamblat și traversați degetele pe care le va porni.
Optimizarea kernel-ului Linux pentru o stație de lucru
Așa că am ajuns la întrebarea despre ceea ce poate fi răsturnat.
Aceasta este doar o mică parte a parametrilor pe care îi puteți răsuci și, în mod cinstit, aceștia sunt cei mai importanți parametri care pot afecta performanța stației de lucru.
BFS / BFQ - nu este acceptat în planificatorii stațiilor de lucru principale
În plus, pentru extreme, există două suplimentare planificator BFS și BFQ (operațiuni coadă de planificator și IO planificator), acestea nu sunt acceptate în nucleul principal, deși utilizatorii confirmă creșterea receptivității sistemului la utilizarea acestora. Folosiți-le la pericol și risc.
Ele sunt instalate destul de simplu.
Descărcați patch-uri BFQ:
Descărcați patch-urile CFQ:
# patch -p1 <./4.8-sched-bfs-512.patch
# patch -p1 <./0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.11..patch
# patch -p1 <./0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.11.0.patch
# patch -p1 <./0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch
# patch -p1 <./0004-blk-bfq-turn-BFQ-v7r11-for-4.11.0-into-BFQ-v8r11-for.patch
Activați noii planificatori utilizând funcția make xconfig.
BFQ - nu puteți alege pe care să o utilizați în mod implicit și va trebui să comutați în stadiul de încărcare a stației de lucru.
BFS - la rândul său, după aplicarea patch-ului este activat în mod implicit.
remarcă
În kernel-urile moderne Linux, există mai multe metode suplimentare de asamblare și configurare.
- make allmodconfig - Toate opțiunile posibile sunt activate și tot ce poate fi setat la modulul modulului
- a face visualconfig local - Toate modulele încărcate trec la modul de încorporare în kernel
Destul de des am întrebat cum de a schimba kernel-ul implicit în Grub2 și acolo sincer nu este atât de simplu cum a fost în primele setări GRUB și grub2 comoditatea pe stațiile de lucru este mai bine să utilizați un utilitar grub-personalizare.
Grub customizer vă permite să selectați kernel-ul implicit și să modificați designul grub2. Pentru a instala utilitarul, folosiți următoarele comenzi: