Care este nucleul

Alo Poate că, dacă utilizați Linux, ați auzit tot felul de povești de groază despre reconstruirea kernel-ul și-ar dori să afle mai multe despre faptul că un astfel de miez. In acest articol voi încerca să merg în detaliu cu privire la acest subiect.

Care este nucleul

Kernel-ul în sine este localizat în directorul / boot, și de obicei are un nume de genul vmlinuz-linux. Loader în timpul sarcinilor de pornire și trece-l de control pentru a porni. Dar șoferul de bucată de fier nu este compilat în kernel, în caz contrar acesta va fi prea sănătos. Prin urmare, Linux are module de kernel încărcate dinamic, care sunt de multe ori modulele de kernel necesare sunt prea dinamice pentru a porni sistemul. Acest lucru înseamnă că sistemul nu este atât de ușor pentru a descărca: este necesar să se asigure conducătorilor auto mecanism de hard disk-uri, sisteme de fișiere, etc. încărcare
Pentru un astfel de caz, este prevăzută într-un initrd distributivă tipic (disc Initial RAM). initrd, - este un sistem de fișiere în cazul în care un minim UNIX este suficientă pentru a încărca modulele de kernel necesare pentru lucrul cu discuri, sisteme de fișiere, montați partiția unității de disc cu sistemul de operare instalat în rădăcină și să continue procesul de boot pentru a monta partiția. It - init utilități daemon, shell, linie de comandă (de obicei, busybox) și modulele de nucleu. În timpul sistemului sau de actualizare a initrd stabilit kernel-ul colectat în mod automat și, ca urmare, există module noi necesare.
Acum, că știm despre un ramdisk, încercați să aranjeze procesul de boot pe de altă parte, încărcătorul de boot încarcă kernel-ul, încarcă un ramdisk și nu există nici un standard unul spune kernelului despre acest disc, iar apoi trece controlul la kernel. Daemon nucleu începe inițializarea. De regulă, este / bin / init, modulele navei, arată o imagine frumoasă a bocancului Ubuntu (Fedora, Mint ...) se monteaza pe hard disk și funcționează acolo.
Să ne asigurăm că este așa. Împreună rulați comanda
pisica / etc / mtab
În cazul în care sistemul este încărcat într-adevăr, prin intermediul a initrd, vom vedea în primul rând ceva de genul:
rootfs / rootfs rw 0 0
După rootfs în sistemul de fișiere rădăcină este montat partiția de hard disk. Așa cum era de așteptat, după ce montați unitatea hard disk nu se poate vedea ce este în rootfs, dar este montat la rădăcină înainte de a fi.
initrd, este situat în directorul / boot și, în cazul meu, se numește initramfs-linux.img.
Dacă nu puteți găsi kernel sau ramdisk oferă consultanță vedea procedura de descărcare la configs încărcător. În cazul în care încărcător de boot dvs. - GRUB 2, apoi face acest lucru:
pisica /boot/grub/grub.cfg

Unde module?

Module în / boot, nu se poate căuta, acestea sunt situate în / lib / module. Dacă aveți câteva boabe, atunci vor exista mai multe dosare. Pentru a găsi directorul în care rulează tipul de nucleu în următoarea comandă:
-r uname
modulelor de kernel au extensia * .ko și ambalate în arhive.

Să mergem!

  • make menuconfig - se potrivesc, în cazul în care nu ne putem permite luxul de o interfață grafică de utilizator (de exemplu, nu ne-am instalat X lui, sau ei nu a alerga afară de configurare a kernel-ului, și lucrăm la SSH, în timp ce colectarea de miezul udalenke destul de ciudat). Interfața va fi prezentat la pseudographics unde putem cu ajutorul Claudia a remarcat casetele dorite.
  • face xconfig - dacă avem luxul de o interfață grafică și utilizează biblioteca Qt.
  • face gconfig - avem luxul de o interfață grafică, dar printr-o coincidență ciudată pe care o utilizați GNOME în loc de KDE.
  • make oldconfig - completează vechea configurație noile setări prin care vă solicită câteva întrebări.
  • face defconfig - setări în mod implicit.

Vom trece prin următorul: creator de distribuție configurația kernel-ului atent selectate, și știți că sistemul funcționează cu ei. Vom lua setările din sistemul de operare. Dacă ați activat config.gz, putem găsi acest fișier în sistemul de fișiere / proc în configurația kernel-ului:
cp intermediul /proc/config.gz.
gzip -d config.gz
mv config .config
make oldconfig
În continuare, vom lua toate configurările parametrii au fost interesați. În primul rând, nu a fost rău să știe ce module la sistemul nostru încărcate în prezent. comanda lsmod afișează modulele în trei coloane:

  • Modul - numele modulului
  • Mărimea nu ne interesează.
  • Folosit de esență, două coloane. Primul - este numărul de dependențe acestui modul. Al doilea - acestea sunt modulele pe care le utilizează.

În cazul în care coloana utilizată de diferența dintre numărul de module și numărul de dependențe nu este zero, atunci la miezul există ceva care-l folosește și nu puteți descărca modulul fără a intra în sistemul inoperabil. Acest lucru înseamnă că nu descărcați unitatea de hard disk, care este deja montat ca și pe care sistemul de operare care rulează în prezent. În plus, ea are module de care depind - aceste module nepaginată. Tot restul puteți fi oricum încărcat la tipul de execuție al -r foo comanda modprobe, iar sistemul este probabil să rămână într-o stare bună de sănătate. Acest sistem este încărcat fără ramdisk aveți cel puțin nevoie pentru a construi în module nepaginată kernel. Dacă doriți să descărca gratuit câteva secunde, ceea ce face un nucleu monolitic, încorpora tot ceea ce vezi în gazele de evacuare de la lspci. Mai departe pentru a configura:
make menuconfig
Nu uitați să redenumiți kernel-ul pentru a căuta opțiunile necesare de căutare de utilizare. Amintiți-vă că nu găsiți întotdeauna opțiunea care este responsabil pentru o anumită unitate, în acest caz, vă va ajuta Google (sau Yandex, Bing, поиск@mail.ru, în funcție, de ceea ce utilizați).
După aceea, totul e aranjat, este necesar pentru a construi și a instala kernel-ul cu module:
face
Relaxați-vă, să ia un ceai. Ai câteva ore de timp liber înainte de a efectua instalarea:
make install modules_install
Noul nucleu este setat / boot / vmlinuz. Redenumiți-l la vmlinuz-mykern, a fost găsit nucleul GRUB'om. În plus, acest lucru ar trebui să colecteze initrd chiar dacă credeți că sistemul va porni fără ea, pentru a se asigura că acesta va porni, deși, ar fi să-l. Chiparosul fac acest lucru, astfel
mkinitcpio -g /boot/initramfs-mykern.img -k 3.18.6-MYKERN (sa presupus că ați dat numele de -MYKERN nucleu)
Rămâne pentru noi pentru a actualiza configurare GRUB și sistemul de reîncărcare. Aveți grijă să nu pentru a elimina miezul distro ca kernel-ul este, probabil, pur și simplu nu funcționează și veți avea nevoie în acest caz, pentru a lua un disc de boot, montați greu merge într-un mediu chroot și re-a instala kernel-ul (dacă nu știi cum să o facă, încă mai devreme reconstrui kernel-ul).
grub-mkconfig o- /boot/grub/grub.cfg
repornire

în loc de o concluzie

Aceasta încheie o astfel de revizuire detaliată recompilarea kernelului. Am vorbit despre modul de a compila un nucleu, ca o descriere a modului de a asambla ceva dă cea mai bună descriere, deoarece aceasta este ceea ce este de lucru, ce fel de diagramă.
Încearcă-l, asigurați-vă că nu este atât de dificil de asamblat un nucleu adecvat în a treia încercare, experimentul și să învețe sistemul.

Mesaj de navigare

articole similare