Inštalácia linuxového jadra. Konfigurácia a kompilácia jadra Linuxu. Rozbalenie zdrojového kódu jadra

Dobré popoludnie, čitatelia a hostia. V pokračovaní posledného príspevku o, dnes vám chcem povedať, ako zostaviť a nakonfigurovať svoje vlastné jadro.

Z posledného príspevku to už vieme Linuxové jadro má minimálne možnosti a hardvérovú podporu, ale v prípade potreby môžeme rozšíriť možnosti použitia jadra moduly jadra. Na čo by ste to mohli potrebovať? budovanie alebo prestavba vlastného jadra? Napríklad na povolenie/zakázanie akýchkoľvek nových funkcií, príp aktualizovať staré jadro na novší s podporou nových funkcií, alebo len na experimenty ako v našom príklade.

Získanie zdrojových kódov jadra a príprava na konfiguráciu

Spôsobov je viacero získať zdroje:

    1. Získajte pôvodné archívy kódu z archívov jadra Linuxu, ako archívy gzip alebo bzip2, pomocou príkazu:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.1.tar.bz2 cp linux-2.6.36.1.tar.bz2 /usr/src/
  1. Získajte zdroje z distribučných repozitárov (napríklad: , CentOS i386) vo forme binárneho deb alebo rpm balíka (src.rpm) s opravami od výrobcu distribúcie. Napríklad: kernel-server:/tmp/123# apt-cache search source | grep linux ketchup - aktualizačný nástroj pre zdroje linux-kernel linux-patch-grsecurity2 - záplata grsecurity kernel - nová hlavná upstream verzia linux-wlan-ng-source - ovládač linux-wlan-ng linuxdoc-tools - konvertovanie zdrojového kódu LinuxDoc SGML do iných formátov linux-patch-lustre - záplata jadra Linuxu pre súborový systém Luster libcorelinux-dev - Základné triedy, návrhové vzory, IPC a vlákna libcorelinux-doc - Základné triedy, návrhové vzory, IPC a vlákna libcorelinux-príklady - Základné triedy, návrhové vzory, IPC a vlákna libcorelinuxc2a - Základné triedy, návrhové vzory, IPC a vlákna linux-patch-openswan - Podpora linuxového jadra IPSEC pre Openswan selinux-policy-src - Zdroj referenčnej politiky SELinux pre prispôsobenie user-mode-linux-doc - User-mode Linux (Dokumentácia) linux-patch-xenomai - Záplaty jadra Linuxu pre Xenomai linux-patch-debian-2.6.26 - Záplaty Debianu na verziu 2.6.26 jadra Linuxu linux-source-2.6.26 - Zdrojový kód jadra Linuxu pre verziu 2.6 .26 s opravami Debianu linux-tree-2.6.26 - Zdrojový strom jadra Linuxu na vytváranie obrazov jadra Debianu Tlačový server:~# apt-get install linux-source-2.6.26 Čítam zoznamy balíkov... Hotovo Vytváranie stromu závislostí Čítam stavové informácie... Hotovo Budú nainštalované nasledujúce dodatočné balíky: binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev make Odporúčané balíky: binutils-doc bzip2-doc cpp- 4.3 -locales gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg libgomp1-dbpg-curses gdbdegvflalibn ncurses -dev kernel-package libqt3-mt-dev make-doc NOVÉ balíky, ktoré sa nainštalujú: binutils bzip2 cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc.6-dev.6 aktualizovaných 0, nainštalovaných 13 nových balíkov, 0 balíkov označených na odstránenie a 5 neaktualizovaných balíkov. Musíte si stiahnuť archívy s veľkosťou 50,2 MB/63,2 MB. Po tejto operácii sa množstvo obsadeného miesta na disku zvýši o 89,4 MB. Chcete pokračovať [Á/n]? y Prijaté:1 http://ftp.debian.org lenny/main linux-libc-dev 2.6.26-26 Prijaté:2 http://ftp.debian.org lenny/main linux-source-2. 6.26 2.6.26-26 Prijatých 50,2 MB za 1 min 49 s (460 kB/s) Výber predtým nevybraného balíka binutils. (Čítanie databázy...momentálne je nainštalovaných 16621 súborov a adresárov.) Balík binutils je rozbalený (zo súboru.../binutils_2.18.1~cvs20080103-7_i386.deb)... Výber predtým nevybraného balíka bzip2. ..... Balík make je rozbalený (zo súboru.../archives/make_3.81-5_i386.deb)... Spúšťače pre man-db sú spracované ... Balík binutils je nakonfigurovaný (2.18.1 ~cvs20080103-7) .... ..... Konfigurácia balíka linux-source-2.6.26 (2.6.26-26) ... Konfigurácia balíka make (3.81-5) ... kernel-server:~ # ls /usr/src/ linux -source-2.6.26.tar.bz2

To by som rád poznamenal názov zdrojového archívu alebo balík vyzerá asi takto: linux-source-2.6.26 alebo kernel-source-2.6.18. Z výpisu druhého príkladu je zrejmé, že pri inštalácii zdrojových kódov z repozitára nám apt ponúkne inštaláciu zvyšku sprievodných balíčkov, bez ktorých sa jadro zostaviť nedá.

Takže. Po získavanie zdrojov pomocou jednej z vyššie uvedených ciest (skopírovaním archívu (v prvom prípade) a nainštalovaním balíka (v druhom prípade) sa dostaneme do adresára /usr/src/- archív s názvom podobným linux-source-2.6.26.tar.bz2. Ďalej musíme rozbaliť archív melóna príkazom: tar -xjf linux .tar.bz2. Výsledkom je strom zdrojových adresárov jadra umiestnený v adresári /usr/src/linux-2.6.36.1/. Odporúča sa tiež vytvoriť symbolický odkaz /usr/src/linux na vyššie uvedený adresár:

Kernel-server:~# cd /usr/src/ kernel-server:/usr/src# ln -s linux-2.6.36.1 linux kernel-server:/usr/src# ls -l lin* lrwxrwxrwx 1 root src Dec 14 3 16:31 linux -> linux-2.6.36.1 -rw-r--r-- 1 root src 70236745 3. decembra 15:57 linux-2.6.36.1.tar.bz2

Pred pokusom o zostavenie a konfiguráciu musíte skontrolovať súbor Zmeny, ktorý sa nachádza v adresári Documentation. Obsahuje okrem iného zoznam balíkov potrebných na zostavenie jadra s uvedením čísel verzií. Uistite sa, že sú tieto balíky nainštalované (ak bol zdroj nainštalovaný pomocou správcu balíkov, s najväčšou pravdepodobnosťou sú potrebné balíky už nainštalované).

Rozbalený strom podadresárov obsahuje súbor Makefile. makefile obsahuje rôzne ciele zostavenia na konfiguráciu možností jadra, zostavenie jadra a jeho modulov, inštaláciu modulov a zostavenie RPM alebo deb balíčkov. Najnovšie verzie zdrojov jadra vám umožňujú použiť pomoc make na získanie rýchlej pomoci pre každý cieľ. Na starších systémoch bolo potrebné nahliadnuť do dokumentácie alebo pozrieť makefile. Nižšie je časť výstupu z make help:

Kernel-server:/usr/src/linux-2.6.36.1# make help Ciele čistenia: čisté - Odstráňte väčšinu vygenerovaných súborov, ale ponechajte konfiguráciu a dostatočnú podporu pri zostavovaní na zostavenie externých modulov mrproper - Odstráňte všetky vygenerované súbory + konfiguráciu + rôzne záložné súbory distclean - mrproper + odstránenie súborov zálohovania a opravy editora Ciele konfigurácie: config - Aktualizácia aktuálnej konfigurácie pomocou programu orientovaného na riadok nconfig - Aktualizácia aktuálnej konfigurácie pomocou programu ncurses menu založeného na menuconfig - Aktualizácia aktuálnej konfigurácie pomocou programu založeného na ponuke xconfig - Aktualizácia aktuálnej konfigurácie pomocou front-endu gconfig založenom na QT - Aktualizujte aktuálnu konfiguráciu pomocou front-endu založeného na GTK oldconfig - Aktualizujte aktuálnu konfiguráciu pomocou poskytnutého .config ako základu .......

Ďalej, ak je z nejakého dôvodu potrebné použiť opravu na jadro, mala by sa stiahnuť vopred a umiestniť do adresára /usr/src. Ak nepotrebujete opraviť jadro, môžete bezpečne prejsť na konfiguráciu. Jadro sa opravuje nasledovne:

Kernel-server:/usr/src/linux-2.6.36# gzip -cd ../patch-2.6.xx.gz | patch -p1 #alebo Print-server:/usr/src/linux-2.6.36# bzip2 -dc ../patch-2.6.xx.bz2 | patch -p1

Konfigurácia

Aktuálna konfigurácia jadra je uložená v súbore .config. Tento súbor sa generuje pomocou jedného z cieľov konfigurácie (cieľom je zjednodušene povedané príkaz vykonaný vo formulári urobiť cieľ):

Cieľ config používa rozhranie príkazového riadka na zodpovedanie mnohých otázok týkajúcich sa vytvorenia alebo aktualizácie súboru .config. IMHO je to v porovnaní s cieľmi pomocou menu veľmi nepohodlná vec.

cloneconfig

Kopírovanie nastavení aktuálneho jadra do súboru .config. Tento cieľ je zastaraný a bol nahradený novými jadrami. (užitočné na pridávanie nových funkcií do aktuálneho jadra)

Cieľ menuconfig používa program riadený ponukou postavený na ncurses na vytvorenie alebo aktualizáciu súboru .config. Stačí odpovedať na otázky týkajúce sa položiek, ktoré chcete zmeniť. Tento prístup nahradil starý cieľ konfigurácie. Spúšťa sa v okne terminálu vzdialene alebo lokálne.

Cieľ nconfig používa program riadený ponukou postavený na ncurses na vytvorenie alebo aktualizáciu súboru .config. Táto verzia je založená na , ale má modernejší vzhľad. Pridané po vydaní linuxového jadra 2.6.35. Stačí odpovedať na otázky týkajúce sa položiek, ktoré chcete zmeniť. Spúšťa sa v okne terminálu vzdialene alebo lokálne.

Cieľ xconfig používa grafický systém menu založený na QT front-ende používanom v prostredí KDE.

Cieľ gconfig používa grafický systém menu založený na front-ende GTK používanom v prostredí GNOME.

oldconfig

Cieľ oldconfig vám umožňuje vytvoriť konfiguráciu pomocou existujúceho súboru .config, buď vytvoreného predtým, alebo prevzatého z iného systému. Môžete napríklad skopírovať konfiguračný súbor pre váš systém z /lib/modules/$(uname -r)/build/.config do /usr/src/linux. Keď to urobíte, môžete použiť jeden z cieľov konfiguračnej ponuky na vykonanie zmien v prípade potreby. Pri vykonávaní tohto príkazu, ak bolo do nového jadra pridaných veľa nových funkcií, sa vyskytnú mnohé otázky týkajúce sa nastavenia nových parametrov. (užitočné na pridávanie nových funkcií do aktuálneho jadra)

Opakujem, že zoznam všetkých cieľov príkazov je možné zobraziť zadaním pomôcť. Začnime teda s konfiguráciou. Najpohodlnejšie pre konzolu, IMHO - .

Po spustení príkazu som dostal hroznú správu:

Kernel-server:/usr/src/linux-2.6.36.1# make menuconfig *** Nemožno nájsť knižnice ncurses alebo *** požadované hlavičkové súbory. *** "make menuconfig" vyžaduje knižnice ncurses. *** *** Nainštalujte ncurses (ncurses-devel) a skúste to znova. *** značka: *** Chyba 1 značka: *** Chyba 2

Niečo chýba, pomyslel si Stirlitz (S)... Pravdepodobne balík obsahujúci meno ncurses a keďže ide o knižnice, balík s najväčšou pravdepodobnosťou začína reťazcom lib. Išiel som do úložiska:

Kernel-server:/usr/src/linux-2.6.36.1# apt-cache search ncurses | grep ^lib libcunit1-ncurses-dev - Unit Testing Library pre C (ncurses) -- vývojové súbory libcunit1-ncurses - Unit Testing Library pre C (ncurses) libncurses-gst - Ncurses väzby pre GNU Smalltalk libkaya-ncurses-dev - Ncurses binding pre kaya libkaya-ncursesw-dev - Väzba Ncurses pre kaya libcurses-perl - Rozhranie Curses pre Perl libcurses-widgets-perl - Rozhranie widgetu Curses pre Perl libruby-extras - balík ďalších knižníc pre Ruby libruby1.8-extras - balík ďalších knižníc pre Ruby 1.8 libtexttools-dev - Ada a C++ knižnica na písanie konzolových aplikácií libtexttools2.0.5 - Ada a C++ knižnica na písanie konzolových aplikácií libncurses-ruby1.8 - ruby ​​​​Rozšírenie pre knižnicu ncurses C libncurses-ruby1.9 - ruby ​​Rozšírenie pre knižnicu ncurses C libncurses-ruby - Ruby ​​Rozšírenie pre knižnicu ncurses C lib64ncurses5-dev - vývojárske knižnice pre ncurses (64-bit) lib64ncurses5 - zdieľané knižnice na obsluhu terminálu (64-bit) libncurses5-dbg - ladiace/profilovacie knižnice pre ncurses libncurses5-dev - vývojárske knižnice a dokumenty pre ncurses libncursesw5-dbg - ladiace/profilovacie knižnice pre ncurses libncursesw5-dev - vývojárske knižnice pre ncursescam knižnica viazania libcurseswl-curses -OCaml libcurses- ocaml - OCaml väzby pre knižnicu ncurses libggi-target-terminfo - Všeobecné grafické rozhranie TermInfo zobrazenie cieľa libncurses5 - zdieľané knižnice pre správu terminálu libncursesw5 - knižnice pre správu terminálu (podpora dvojbajtových znakov)

Tento riadok: libncurses5-dev - vývojárske knižnice a dokumenty pre ncurses sa mi zdalo nevyhnutné. Poďme nainštalovať:

Kernel-server:/usr/src/linux-2.6.36.1# apt-get install libncurses5-dev Čítam zoznamy balíkov... Hotovo Budovanie stromu závislostí Čítam informácie o stave... Hotovo NOVÉ balíky na inštaláciu: libncurses5-dev 0 aktualizované , 1 nový nainštalovaný balík, 0 balíkov označených na odstránenie a 5 neaktualizovaných balíkov. Potrebujete stiahnuť 1546 kB archívov. Po tejto operácii sa množstvo obsadeného miesta na disku zvýši o 6599 kB. Prijaté:1 http://ftp.debian.org lenny/main libncurses5-dev 5.7+20081213-1 Prijaté 1546 kB za 4 s (344 kB/s) Výber predtým nevybraného balíka libncurses5-dev. (Čítanie databázy... aktuálne nainštalovaných 18098 súborov a adresárov.) Rozbaľovanie balíka libncurses5-dev (zo súboru.../libncurses5-dev_5.7+20081213-1_i386.deb)... Spracovanie spúšťačov pre man-db . .. Balík libncurses5-dev (5.7+20081213-1) sa konfiguruje ...

Hotovo, skúsime :

Hurá! Vidíme cennú ponuku konfigurácie jadra. Nižšie sú uvedené rôzne možnosti, ktoré vám umožňujú zahrnúť komponenty do jadra alebo vytvárať moduly. Keď je zvýraznená možnosť, pomocou medzerníka sa môžete pohybovať medzi možnými možnosťami pre daný komponent. Ak chcete možnosť aktivovať, kliknite r zakázať -- n ak je to možné, vytvorte modul kliknutím m. Ukončite menu: Esc Esc.

  • [*] Komponent bude súčasťou jadra.
  • Komponent nebude zahrnutý do jadra.
  • [M] Komponent bude navrhnutý ako modul.
  • < >Komponent nebude súčasťou jadra, ale môže byť zabalený ako modul.

Nižšie je uvedený popis hlavných častí konfigurácie ponuky (bude aktualizovaný v priebehu času):

kapitola Parameter Popis
Všeobecné nastavenie Táto sekcia vám umožňuje pridať identifikačný reťazec do vášho jadra, ako aj množstvo atribútov, ktoré nie sú relevantné pre žiadnu sekciu, ale mali by byť popísané.
Povoliť podporu načítateľných modulov Táto sekcia obsahuje voľby, ktoré určujú, či vaše jadro bude podporovať moduly a či sa budú načítavať a uvoľňovať automaticky. Mala by byť povolená možnosť „Povoliť podporu načítateľných modulov“.
Typ a vlastnosti procesora Táto časť obsahuje možnosti konfigurácie špecifické pre tento typ procesora. Tu môžete vybrať procesor a rodinu procesorov, ktoré bude vaše jadro podporovať. Môžete povoliť alebo zakázať podporu jadra pre rôzne funkcie poskytované daným procesorom. Ak má váš systém nainštalovaný viac ako jeden procesor alebo ak procesor podporuje technológiu hyperthreading, uistite sa, že ste povolili podporu symetrického viacprocesového spracovania. Okrem toho, ak chcete získať lepší grafický výkon v systémoch s grafickými kartami AGP alebo PCI, mali by ste povoliť podporu MTRR.
Možnosti správy napájania Táto časť obsahuje možnosti týkajúce sa správy napájania. Sú dôležité najmä pre notebooky. Okrem sledovania stavu napájania tam nájdete nástroje na ovládanie a sledovanie parametrov ako je teplota alebo stav chladiaceho ventilátora.
Možnosti zbernice (PCI atď.) Táto časť obsahuje voľby pre počítačové zbernice podporované vaším systémom, ako sú PCI, PCI Express a PC Card. Tu môžete povoliť podporu pre súborový systém /proc/pci, ktorý možno použiť v spojení s bežne používaným príkazom lspci.
Formáty spustiteľných súborov/emulácie Táto časť obsahuje možnosti týkajúce sa podpory rôznych formátov binárnych súborov. Mala by byť povolená podpora "ELF binárne". Okrem toho môžete povoliť podporu pre binárne súbory DOS, aby ste ich mohli spúšťať pod DOSEMU, ako aj ďalšie binárne súbory podporované vhodnými obalmi, ako je Java™, Python, Emacs-Lisp atď. Nakoniec pre 64-bitové systémy, ktoré podporujú 32- bitovú emuláciu, možno budete chcieť povoliť podporu pre 32-bitové aplikácie.
vytváranie sietí Časť týkajúca sa nastavení siete je pomerne veľká. Tu môžete povoliť základnú podporu pre sockety, TCP/IP siete, filtrovanie, smerovanie a premostenie sieťových paketov, ako aj podporu rôznych protokolov ako IPV6, IPX, Appletalk a X.25. Okrem toho môžete povoliť bezdrôtovú, infračervenú a amatérsku rádiovú podporu.
Ovládače zariadení Táto sekcia je tiež veľmi veľká. Tu môžete povoliť podporu pre veľký počet hardvérových zariadení vrátane jednotiek IDE/ATAPI alebo SCSI alebo flash diskov. Povoľte DMA pre vaše zariadenia IDE; inak budú fungovať v pomalšom režime PIO. Ak chcete podporovať viacero zariadení, ako napríklad RAID alebo LVM, musia byť povolené aj príslušné možnosti. Tu môžete tiež povoliť podporu paralelného portu pre prácu s tlačiarňou cez toto rozhranie. Tu konfigurujeme širokú škálu podporovaných sieťových zariadení pre rôzne sieťové protokoly, ktoré sme nakonfigurovali predtým. Okrem toho tu nájdete možnosti podpory zariadení na zachytávanie zvuku a videa, zariadení USB a IEEE 1384 (Firewire), ako aj rôznych typov zariadení na monitorovanie hardvéru. V časti Znakové zariadenia možno budete chcieť povoliť podporu tlače na paralelnom porte a podporu priameho vykresľovania.
Ovládače firmvéru Táto časť obsahuje niekoľko možností týkajúcich sa inštalácie a aktualizácie systému BIOS, ako je napríklad používanie funkcií správy systému Dell na vybraných systémoch Dell.
Súborové systémy Táto sekcia je určená na konfiguráciu súborových systémov, ktoré má vaše jadro podporovať, či už sú kompilované ako moduly alebo nie. Nájdete tu aj súborové systémy pre vymeniteľné diskové zariadenia (diskety, CD a DVD), ako aj sieťové súborové systémy ako NFS, SMB alebo CIFS. V tejto časti sa nachádza aj podpora pre rôzne typy sekcií a národných kódovaní.
Hackovanie jadra Táto časť vám umožňuje povoliť režim ladenia jadra a vybrať, ktoré ďalšie funkcie budú povolené.
Možnosti zabezpečenia Táto časť je určená na konfiguráciu možností zabezpečenia a povolenie a konfiguráciu SELinux (Security Enhanced Linux).
Kryptografické možnosti V tejto časti môžete nakonfigurovať podporu pre rôzne šifrovacie algoritmy, ako sú MD4, DES a SHA256.
Knižničné rutiny Tu môžete zadať niekoľko algoritmov kontrolného súčtu (CRC), ktoré sa majú zahrnúť do jadra alebo skompilovať ako moduly.

Poskytol som veľmi stručný popis sekcií konfigurácie jadra. Konkrétne k voľbe nastavení asi urobím samostatný príspevok, pretože ten aktuálny narástol do obrovských rozmerov. Najlepší popis nastavení make menuconfig som našiel tu Gentoo Handbook. Vo svojom mene poviem, že by bolo logické spustiť make oldconfig (čím skopírujem aktuálnu .config nainštalovaného OS), a potom spustiť make menuconfig a vypnúť všetky nepotrebné funkcie (povedzme, že som zakázal podporu WiFi, jfs súborové systémy, ktoré nepotrebujem atď.). A vo všeobecnosti som zástancom názoru, že optimalizovať jadro je potrebné vo veľmi extrémnych prípadoch, kedy je výkon OS limitovaný možnosťami hardvéru. V súlade s tým, zmenšením veľkosti jadra (zakázaním nepotrebných modulov vrátane ich v jadre + zakázaním nepotrebných funkcií) môžete zvýšiť výkon o 1-2%. Ale na moderných serveroch si myslím, že toto (rekonfigurácia jadra) nie je obzvlášť dôležité.

Zloženie jadra

Teraz, keď sme nakonfigurovali jadro, sme pripravení ho zostaviť. Ak neviete, aký je stav stromu zostavenia, pred konfiguráciou nového jadra spustite príkaz make clean. Pre úplnejšie vyčistenie spustite make mrproper (týmto odstránite súbor .config, ako aj niektoré ďalšie súbory použité počas procesu zostavovania).

Počas testu konfigurácie je vhodné dať novému jadru špeciálny názov, ktorý vám umožní ho ľahko identifikovať. Ak to chcete urobiť, musíte nastaviť hodnotu Lokálna verzia a aktivovať možnosť Automaticky pridávať informácie o verzii do reťazca verzie v príslušnom riadku časti Všeobecné nastavenie.

V zásade sa však na zostavenie jadra nevyžadujú privilégiá typu root inštalácia nového jadra tieto právomoci sú potrebné.

Ak chcete začať zostavovať jadro 2.6, musíte spustiť make .

Ak chcete začať zostavovať jadro 2.4, musíte spustiť 3 príkazy:
urobiť zast
vytvoriť bzImage
vytvárať moduly
Prvý vytvorí potrebné súbory závislostí. Druhá zostavuje jadro. A posledný montuje moduly.

Inštalácia nového jadra

Po dokončení vytvárania jadra ho musíte nainštalovať. Pred inštaláciou musíte spustiť make modules_install, aby ste nainštalovali moduly jadra do nového podadresára /lib/modules. Po nainštalovaní modulov musíte spustiť make install, aby ste nainštalovali nové jadro a počiatočný RAM disk do adresára /boot a aktualizovali konfiguráciu zavádzača.

Chcel by som upozorniť na skutočnosť, že počas procesu montáže sa automaticky vytvorí potrebný štartovací RAM disk (počiatočný RAM disk alebo initrd). Ak ho potrebujete vytvoriť manuálne, môžete to urobiť pomocou príkazu mkinitrd.

Po spustení make install by sa mal aktualizovať konfiguračný súbor zavádzača. Ale z nejakého dôvodu sa mi aktualizoval po príkaze update-grub.

Skončím týmto. Ukázalo sa, že je to veľmi dlhý článok. V blízkej dobe sa to pokúsim dotiahnuť.

Niekedy možno budete musieť vytvoriť svoj vlastný Linuxové jadro. Dôvody môžu byť nasledovné:

  • potrebujete čisté jadro bez distribučných záplat;
  • chcete aplikovať svoje vlastné náplasti (ktorých je veľa);
  • chcete zostaviť jadro tak, aby vyhovovalo vašej hardvérovej konfigurácii, vyhodiť z neho nepotrebné veci a/alebo ho prispôsobiť konkrétnym úlohám;
  • chcete do jadra zahrnúť experimentálny ovládač alebo súborový systém, ktorý nie je súčasťou "vanilka" jadro (napr ZFS alebo Zvyšovač 4);
Na zostavovaní jadra nie je nič zložité. Dôležité je len pochopiť, prečo sa to robí, a tiež sa nedotýkať tých parametrov, ktorým nerozumiete. V tejto poznámke popíšem dva príklady zabudovania jadra Založené na Debiane distribúcie. V prvom príklade ukážem, aké ľahké je zostaviť čisté, takzvané „vanilkové“ jadro (ako ho vydáva Linus Torvalds), a v druhej - ako aplikovať vlastné záplaty a optimalizovať jadro. Hneď napíšem dve upozornenia:
  • pri každej aktualizácii budete musieť jadro znovu zostaviť (stiahnite si „aktualizačný patch“, použite ho a zostavte jadro);
  • prebudované jadro nemusí fungovať, ak váš systém používa nejaké hacky na zabezpečenie funkčnosti toho alebo toho zariadenia;
  • Ak je jadro nakonfigurované nesprávne, najmä v prípade negramotného alebo bezmyšlienkového používania záplat, môžete buď skončiť so systémom, ktorý je strašne pomalý, alebo ho úplne stratiť.
VŠETKY ČINNOSTI VYKONÁVATE NA VLASTNÉ RIZIKO!

Jednoduchá montáž jadra bez záplat.

Zdrojový kód jadra Linuxu je dostupný na kernel.org. Existujú tiež "aktualizačné záplaty". Čo potrebujeme? Stiahnite si z lokality tarball(archív) s najnovšou stabilnou verziou jadra (v čase písania tohto článku ide o verziu 4.3 ). Stiahnite si akýmkoľvek pohodlným spôsobom. Ďalej potrebujeme nástroje na montáž:

sudo apt install build-essential gcc kernel-package patch
sudo apt-get build-dep linux

Po nainštalovaní všetkých potrebných nástrojov rozbaľte archív s kódom jadra do ľubovoľného vhodného adresára. Nechaj to tak /home/user/KERNEL, Kde "užívateľ"- meno používateľa systému. Potom otvorte terminál a prejdite tam:

cd /home/user/KERNEL

Zostáva len zostaviť jadro:

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

Číslo 3 po j- to je počet jadier vášho procesora + 1. To znamená, že pre dvojjadrový procesor sú to 3, pre 4-jadrový procesor 5 atď.
- zvyk- tu môžete zadať vhodný názov pre jadro, aby ste ho ľahšie odlíšili od distribučného.
kernel_image A kernel_headers- toto je samotné jadro a jeho hlavičkové súbory, resp. Hlavičky potrebné na zostavenie ovládačov a modulov jadra, ako aj na niektoré iné účely. Po spustení tohto príkazu sa začne objavovať niekoľko otázok o konfigurácii jadra. Keďže všetko nechávame ako predvolené, stačí stlačiť Enter, kým sa nezačne zostavovanie. V závislosti od výkonu vášho počítača môže montáž trvať 15-20 minút až niekoľko hodín. Po zostavení v adresári /home/user objavia sa dve deb balík: jadro a hlavičky. Nainštalujte ich príkazom:

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

A reštartujte. V ponuke GRUB si teraz môžete vybrať iné jadro na zavedenie systému.

Vytváranie jadra pomocou opráv a dodatočnej konfigurácie.

Tentoraz zostavíme optimalizované jadro pre prácu so zvukom a videom, ako aj pre väčšiu odozvu systému. Na tento účel použijeme dve záplaty: takzvanú záplatu v reálnom čase ( PREEMPTOVAŤ RT) a patch pre kompilátor GCC pridať ďalšie možnosti optimalizácie procesora. Po prvé, čo je náplasť? Oprava je textový súbor vytvorený programom dif, obsahujúci zmeny kódu v určitých častiach, ktoré sa pri aplikácii náplasti zadávajú na správne miesta. Pretože RT náplasť vychádza s veľkým oneskorením, jeho najnovšia verzia je pre jadro 4.1. To však nie je až také dôležité. Pomocou rovnakej schémy si stiahnite jadro 4.1 z kernel.org a rozbaľte ho do adresára /home/user/KERNEL-CUSTOM. Teraz si stiahnite záplaty. Oprava PREEMPT_RT a GCC. Zo stiahnutých archívov potrebujeme súbory s príponou .patch, ktoré je potrebné umiestniť do adresára so zdrojovým kódom jadra. Teda v /home/user/KERNEL-CUSTOM. Pred aplikáciou opráv sa musíte uistiť, že neexistujú žiadne chyby. Otvorte terminál:

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


Možnosť --suchý chod umožňuje simulovať aplikáciu opravy bez vykonania zmien v súboroch. Ak sa nenájdu žiadne chyby (pozri snímku obrazovky) - akceptujte opravu bez možnosti --suchý chod. Vykonajte podobné akcie s druhou náplasťou. Neaplikujte viac ako jednu náplasť naraz! Teraz musíme nakonfigurovať naše jadro. Na výber máme z nasledujúcich možností:

urobiť konfiguráciu- otázky týkajúce sa konfigurácie jedného alebo druhého podsystému jadra sa budú postupne zobrazovať v termináli. Mimoriadne dlhý a únavný proces. Zabudnime na to :)
urob oldconfig- použije sa konfigurácia aktuálne spusteného jadra. Keďže tie naše zostavujeme od nuly, aj tento spôsob je zbytočný.
urobiť defconfig- podobne ako v predchádzajúcom, iba hodnoty budú predvolené. Tak, ako to nastavili vývojári jadra. Podobne ako pri prvom spôsobe montáže.
urobte menuconfig- pseudografické rozhranie založené na knižnici Ncurses. Na obrazovke sa zobrazí rozhranie s pohodlnou hierarchickou ponukou. Ovláda sa pomocou smerových kláves, medzerníka a klávesu TAB. Odporúča sa, ak vytvárate jadro na systéme, ktorý nemá grafický shell.
urobte gconfig GTK, odporúčané v GNOME, Mate, Xfce, Cinnamon, Unity a ďalších, ktoré používajú GTK.
urob xconfig- založené na GUI Qt. Odporúčané v KDE. Keďže môj systém používa KDE, použijem túto metódu. Okrem toho existuje niekoľko ďalších metód, ale ich aplikácia sa nelíši. Takže po nanesení náplastí spustíme urob xconfig a toto sa pred nami objavuje:


V prvom rade vypnite dynticks. Aby sme to urobili, ideme do Subsystém časovačov a vyberte si Pravidelné tiká časovača


Teraz prichádza tá najlepšia časť. Poďme do Typ a vlastnosti procesorov, hľadá položku Rodina procesorov a uveďte svoj rad procesorov. Napríklad, ak máte Intel Core i5-4xxx, uveďte Hasswell(procesor 4. generácie). Ak si nie ste istí presne, môžete si položku vybrať Natívne optimalizácie automaticky detekované GCC. V tomto prípade pri zostavovaní samotný kompilátor určí, čo váš procesor podporuje a zahrnie všetky jeho funkcie.


Prejdite nižšie a povoľte parameter Úplné preemptívne jadro (RT). Tvrdý režim v reálnom čase.


Prejdite nadol a na bod Frekvencia časovača nastavte frekvenciu prerušenia systému na 1000 Hz


Úplne vypíname akúkoľvek úsporu energie. To je dôležité! Vľavo hľadáme položku Možnosti správy napájania a ACPI a zrušte začiarknutie ACPI. Vypnite tiež úsporu energie CPU

To je všetko. Ak chcete (a pozorne si preštudujte dokumentáciu), môžete vykonať ďalšie zmeny v konfigurácii (zakázať nepotrebné ovládače, použiť ďalšie podsystémy atď.). Teraz uložíme konfiguráciu cez Súbor - Uložiť, zatvorte konfigurátor a zostavte jadro:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-rt-custom kernel_image kernel_headers #-j 3
sudo update-grub

Na mojom počítači s procesorom Intel Core i3-550 (3,2 GHz) bol nárast výkonu dosť citeľný. Najdôležitejšia vec je však pri práci v LMMS A Kdenlive, zmizlo periodické zadrhávanie, desynchronizácia audio a video stôp, ako aj zamŕzanie pri veľkej záťaži na pevnom disku. Záver - funguje to! Nakoniec popíšem dve upravené jadrá, ktoré sú v kruhoch Linuxu veľmi obľúbené:

PF-kernel- najpopulárnejšia sada patchov od Ukrajinca Alexandra Natalenka (alias post-factum). Ide o sadu opráv, ktoré nie sú zahrnuté v hlavnom jadre, ale poskytujú zvýšenú odozvu systému, poskytujú alternatívny subsystém hibernácie, ktorý je rýchlejší ako hlavný, a tiež znižujú spotrebu pamäte pomocou techniky spájania identických stránok. Sada obsahuje:

  • Plánovač procesov BFS od Con Kolivasa s ďalšími opravami od Alfreda Chena;
  • BFQ I/O plánovač od Paola Valenteho, Arianny Avanzini a Maura Marinoniho;
  • hibernačný subsystém TuxOnIce od Nigela Cunninghama;
  • implementácia techniky zlučovania identických stránok v pamäti UKSM od Nai Xia;
  • patch od Graysky, ktorý rozširuje zoznam procesorov na optimalizáciu jadra kompilátorom (ten, ktorý sme použili vyššie)
Upravené úložisko jadra. Oficiálna stránka.

Zen-kernel- druhá najobľúbenejšia sada, ale prvá z hľadiska počtu záplat. Zen Kernel využíva kombináciu niekoľkých projektov, aktualizuje kód cez úložisko git a má tiež niekoľko vecí špecifických pre Zen, ktorých cieľom je uspokojiť väčšinu potrieb používateľov v jednom jadre. Niektoré funkcie opravy: drm-next, bezdrôtové testovanie, výber plánovačov CPU (CFS/BFS), BFQ I/O plánovač, aufs, unionfs, reiser4, tuxonice, PHC a mnoho ďalších vecí, ktoré sú skvelé na optimalizáciu desktopových systémov alebo notebooky. To všetko je dostupné vo forme jednej náplasti na jadro vanilky. Oficiálna stránka. úložisko GIT. Balíky pre Debian/Ubuntu.

To je na dnes asi všetko. Viac informácií nájdete v odkazoch na článok. Všetko popísané v článku som testoval na mnohých konfiguráciách.

Core(Angličtina) jadro) je to, na čom je postavené všetko ostatné. Toto sa nazýva Linux. Slovo Linux dnes v bežnom živote označuje operačný systém, ktorý je na ňom postavený, hoci v dobrom slova zmysle sa volá GNU/Linux (linuxové jadro a softvér z projektu GNU, ktorý sa vyvíja už dlhé desaťročia).

Ubuntu používa silne opravené jadro, z ktorých niektoré pridávajú nestabilné a experimentálne funkcie.

Každé vydanie Ubuntu má svoju vlastnú verziu jadra. Vydania LTS začínajúce od 10.04 majú možnosť aktualizovať jadro na verzie zahrnuté v novších vydaniach.

Verzia UbuntuVerzia jadra
4.10 2.6.9
5.04 2.6.11
5.10 2.6.13
6,06 LTS 2.6.15
6.10 2.6.18
7.04 2.6.19
7.10 2.6.20
8,04 LTS 2.6.24
8.10 2.6.27
9.04 2.6.28
9.10 2.6.31
10,04 LTS 2.6.32
10.10 2.6.35
11.04 2.6.38
11.10 3.0.4
12,04 LTS 3.2
12.10 3.5
13.04 3.8
13.10 3.11
14,04 LTS 3.13
14.10 3.16
15.04 3.19

Vidličky

Číslovanie verzií jadra v Ubuntu a na webovej stránke kernel.org sa nezhoduje, pretože vývojári Canonical pridávajú mikroverziu na označenie pridaných záplat. Napríklad verzia 3.2.0-23 by znamenala, že jadro je založené na vetve 3.2, ktorá dostala 23 záplat.

V úložisku Ubuntu sú podporované nasledujúce typy jadra:

Generické jadro-pae umožňuje 32-bitovému systému využívať až 64 GB celkovej pamäte RAM, pričom pre potreby konkrétneho procesu nevyčleňuje viac ako 4 GB, zatiaľ čo jednoduché všeobecné jadro pracuje s nie viac ako 4 GB pamäte RAM.

64-bitové jadro vám umožňuje adresovať až 1 TB pamäte spotrebovanej procesmi.

Ak potrebujete aktualizovať jadro na novšiu hlavnú verziu (zvyčajne je to spôsobené tým, že nové verzie pridávajú podporu pre nový hardvér a eliminujú regresie), môžete použiť oficiálne podporovaný archív http://kernel.ubuntu.com/ ~kernel-ppa/mainline/ .

Kompilácia jadra

Vytvorenie jadra zo zdrojového kódu si vyžaduje určité zručnosti a znalosti o tom, ako OS funguje.

Skôr ako začnete zostavovať jadro, musíte nainštalovať nasledujúce balíky:

Build-essential fakeroot ncurses-dev libssl-dev

Všetky ďalšie akcie musia byť vykonané v mene superužívateľa:

sudo su

Získanie zdrojového kódu

Zdrojový kód jadra používaného v Ubuntu je možné získať inštaláciou balíka linux-source:

apt-get nainštalovať linux-source

Po inštalácii do adresára /usr/src objaví sa archív tzv linux-source-verify_kernel.tar.bz2.

Archív so zdrojovým kódom jadra si môžete stiahnuť aj z webovej stránky kernel.org.

Pri sťahovaní jadra z kernel.org naň budete musieť použiť záplaty

Konfigurácia

Rozbaľte výsledný archív a pre pohodlie vytvorte symbolický odkaz na výsledný adresár:

cd / usr/ src tar xjf ./ linux-source-3.2.0.tar.bz2 ln -s ./ linux-source-3.2.0 ./ linux cd ./ linux

Ak chcete zjednodušiť proces konfigurácie jadra, môžete skopírovať nastavenia aktuálneho jadra.

V poslednej dobe pomerne často vychádzajú nové verzie jadier. Stabilné vydanie vychádza každých pár mesiacov. No a ešte častejšie sa objavujú nestabilní kandidáti na vydania. Linus Torvalds a mnoho vývojárov po celom svete neustále pracuje na vylepšovaní nových jadier a pridáva do nich stále viac funkcií.

S každou novou verziou linuxové jadro pridáva podporu pre niekoľko nových zariadení, ako sú nové procesory, grafické karty alebo dokonca dotykové obrazovky. Nedávno sa výrazne zlepšila podpora pre nové zariadenia. V jadre sú tiež zahrnuté nové súborové systémy, zlepšila sa prevádzka sieťového zásobníka a opravili sa chyby a chyby.

Ak chcete podrobnejšie informácie o zmenách konkrétnej verzie jadra, pozrite si jeho Changelog na kernel.org a v tomto článku sa pozrieme na aktualizáciu linuxového jadra na najnovšiu verziu. Pokúsim sa neviazať návod na konkrétnu verziu jadra, nové jadrá vychádzajú pomerne často a bude to relevantné pre každé z nich.

Pozrime sa na aktualizáciu jadra Ubuntu a CentOS. Najprv sa pozrime na to, ako aktualizovať jadro v Ubuntu 16.04.

Najprv sa pozrime, aké jadro máte nainštalované. Ak to chcete urobiť, otvorte terminál a spustite:

Napríklad momentálne používam verziu 4.3 a môžem aktualizovať na najnovšiu verziu. Vývojári Ubuntu sa už postarali o to, aby ich používatelia nekompilovali jadro manuálne a vytvorili deb balíčky pre novú verziu jadra. Môžete si ich stiahnuť z oficiálnej webovej stránky Canonical.

Mohol by som tu poskytnúť príkazy wget na stiahnutie, ak by bola známa verzia jadra, ale v našom prípade by bolo lepšie použiť prehliadač. Otvorte webovú stránku http://kernel.ubuntu.com/~kernel-ppa/mainline/. Tu sú všetky jadrá zostavené tímom Ubuntu. Jadrá sú kompilované ako pre špecifické distribúcie, s kódovým názvom distribúcie, tak aj pre všeobecné. Okrem toho, jadrá z Ubuntu 16.10 budú s najväčšou pravdepodobnosťou fungovať v 16.04, ale nemali by ste inštalovať jadro z 9.04 v Ubuntu 16.04.

Prejdite nadol, tu sa nachádzajú novšie verzie jadier:

Okrem toho sa úplne hore nachádza denný/aktuálny priečinok, ktorý obsahuje najnovšie, nočné zostavy jadra. Vyberte požadovanú verziu jadra a stiahnite si dva súbory linux-headers a linux-image pre vašu architektúru:

Po dokončení sťahovania môžete pokračovať v inštalácii. Ak to chcete urobiť, v termináli postupujte takto:

Prejdite do priečinka s inštalačnými balíkmi, napríklad ~/Downloads:

Spustite inštaláciu:

Ak tento príkaz nefunguje, môžete ísť iným spôsobom. Nainštalujte pomôcku gdebi:

sudo apt-get install gdebi

Potom ho použite na inštaláciu jadra:

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

Jadro je nainštalované, zostáva už len aktualizovať bootloader:

sudo update-grub

Teraz môžete reštartovať počítač a zistiť, čo sa stalo. Po reštarte sa ubezpečíme, že aktualizácia linuxového jadra na najnovšiu verziu prebehla úspešne:

Ako vidíte, jadro bolo úspešne nainštalované a funguje. S odstránením starej verzie jadra sa však neponáhľajte, odporúča sa mať v systéme niekoľko verzií jadra, aby ste v prípade problémov mohli zaviesť systém zo starej pracovnej verzie.

Automatická aktualizácia jadra Linuxu na Ubuntu

Vyššie sme sa pozreli na to, ako manuálne nainštalovať požadovanú verziu jadra. Ubuntu malo PPA pre denné zostavovanie jadra, ale teraz je zatvorené. Preto môžete aktualizovať jadro iba stiahnutím balíka deb a jeho inštaláciou. Ale to všetko sa dá zjednodušiť pomocou špeciálneho skriptu.

Nainštalujte skript:

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

Kontrolujú sa aktualizácie:

KernelUpdateChecker -r yakkety

Voľba -r vám umožňuje zadať vetvu distribúcie, pre ktorú chcete hľadať jadrá. Jadrá pre xenial už nie sú zostavené, ale jadrá z ďalšej verzie tu budú fungovať dobre. Okrem toho voľba -no-rc môže povedať obslužnému programu, aby nepoužíval kandidátov na vydanie, a voľba -v špecifikuje presnú verziu jadra na inštaláciu. Ak je vám jedno, pre akú distribúciu je jadro určené, pokiaľ je to najnovšie, použite možnosť --any-release. Skript vytvorí nasledujúci výsledok:

Pred inštaláciou jadra si môžete pozrieť podrobnosti otvorením súboru /tmp/kernel-update:

Tu môžeme vidieť, že bol vyhľadávaný yakkety a verzia jadra je momentálne 4.7-rc6. Môžeme nainštalovať:

sudo /tmp/kernel-update

Skript nám ukáže verziu aktuálneho jadra, ako aj verziu jadra, ktoré sa nainštaluje, jeho dátum zostavenia a ďalšie podrobnosti. Tiež sa vás spýta, či potrebujete viesť denník zmien. Nasleduje inštalácia:

Staré jadrá, pre každý prípad, neodstraňujte (n):

Hotovo, aktualizácia jadra na najnovšiu verziu je dokončená, teraz reštartujte počítač (y):

Pozrime sa, či aktualizácia jadra Ubuntu skutočne fungovala:

Okrem toho bol skript pridaný do spúšťania a teraz bude automaticky kontrolovať aktualizácie 60 sekúnd po prihlásení. Skratka automatického načítania je v súbore:

vi ~/.config/autostart/KernelUpdate.desktop

Môžete ho zmeniť podľa potreby alebo ho odstrániť. Ak chcete skript úplne odstrániť zo systému, spustite:

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

Nesťahuje sa

Ak sa počas inštalácie vyskytli nejaké chyby alebo jadro nebolo správne aktualizované a systém sa teraz nespustí s novým jadrom, môžete použiť staré jadro. Systém sa tiež nemusí spustiť, ak používate proprietárny ovládač pre grafickú kartu NVIDIA; v takom prípade sa neponáhľajte so sťahovaním najnovšej verzie jadra; používajte iba stabilné jadrá; podpora tohto modulu je spravidla už k nim pridané.

A ak chcete obnoviť systém, vyberte Pokročilé možnosti pre Ubuntu v ponuke Grub:

A spustite predchádzajúce bežiace jadro:

Po stiahnutí zostáva len odstrániť nesprávne nainštalované jadro a znova aktualizovať Grub, nahradiť požadovanú verziu jadra namiesto 4.7:

sudo apt odstrániť linux-header-4.7* linux-image-4.7*

sudo update-grub

Váš systém je teraz späť do predchádzajúceho stavu. Môžete skúsiť nainštalovať staršiu verziu jadra alebo to skúste znova.

Inovácia jadra Linuxu na 4.4 v systéme CentOS

Teraz sa pozrime na to, ako aktualizovať najnovšiu verziu linuxového jadra v CentOS. Pokyny boli testované na CentOS 7, ale s najväčšou pravdepodobnosťou budú fungovať na RedHat 7, Fedore a ďalších podobných distribúciách.

Nové jadrá spravidla nie sú zahrnuté v oficiálnych úložiskách CentOS, takže na získanie najnovšej stabilnej verzie budeme musieť pridať úložisko ELRepo. Toto je úložisko komerčných balíkov (Enterprise Linux Packages) a podporujú ho aj RedHat a Fedora.

Ak chcete pridať úložisko, postupujte takto:

Najprv musíte importovať kľúč:

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

Pridajte úložisko a potrebné komponenty do 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

Na Fedore 22 a vyššej:

Dostupné informácie o zostavení jadra sa značne líšia, preto opíšeme zostavu jadra špeciálne pre Ubuntu. Pokúsime sa. aby v príkazoch napísaných v tomto článku neboli žiadne chyby. Pri popise procesu kompilácie nezostaneme len pri získaní jadra. Získanie funkčného jadra nestačí. Pre majiteľov kariet nVidia tu bude popis, ako na nové jadro dostať systém s fungujúcou grafikou. Okrem toho bude grafika fungovať v starom jadre aj v novom.

1. Inštalácia zdrojov jadra

Najprv budeme potrebovať zdrojové kódy jadra. Pre Ubuntu 7.04 už sú v úložisku, musíte nájsť balík linux-source-waste(v našom prípade to bude linux-source-2.6.20) a nainštalujte ho (toto všetko sa dá urobiť cez Synaptické). Po nainštalovaní tohto paktu v adresári /usr/src zobrazí sa súbor s názvom linux-source-2-6-20.tar.bz2.

Robíme to pod sudo tím

chmod 777 /usr/src

Ideme do adresára ako bežný používateľ /usr/src a rozbaľte tento súbor

tar -jxvf linux-source-2-6-20.tar.bz2

Zobrazí sa adresár so zdrojmi /usr/src/linux-source-2-6-20. Vymažeme archívny súbor (budete potrebovať práva root).

2. Inštalácia sprievodných balíkov

Na montáž budete potrebovať viac balení. kernel-package, libncurses5-dev, falošný koreň. Inštalujeme ich cez Synaptické. V systéme musí byť samozrejme nainštalovaný aj kompilátor gcc A dev- balíky pre systémové knižnice, ako napr libc6-dev.

3. Vytvorte konfiguračný súbor jadra

Teraz potrebujeme konfiguráciu jadra, s ktorou bolo jadro pre Ubuntu zostavené. Prejdite do katalógu /boot, a vidíme tam súbor ako config-2.6.20-15-generic. To je to, čo potrebujeme. Skopírujte ho do zdrojového adresára /usr/src/linux-source-2-6-20 a premenovať ho na .config. Upozorňujeme, že názov súboru začína bodkou, nejde o preklep.

Teraz v adresári /usr/src/linux-source-2-6-20, zadajte príkaz ako bežný používateľ

Tým sa spustí textové rozhranie konfigurácie jadra. Nastavenie môžete spustiť aj v grafickom režime

V oboch prípadoch sa otvorí rozhranie so zaškrtávacími políčkami, cez ktoré konfigurujeme jadro. Zdá sa, že súbor je štandardne otvorený .config, ktorý momentálne obsahuje štandardnú konfiguráciu jadra Ubuntu.

Čo chcete nakonfigurovať - ​​zamyslite sa sami, na internete je k tejto problematike veľa dokumentácie v ruskom jazyku. Účelom tohto článku je len opísať skutočné akcie vykonávané pri kompilácii jadra Ubuntu.

Na konci konfigurácie vyberte položku "Uložiť konfiguráciu odpadu", zadajte názov súboru iný ako .config, Napríklad .config_my_01. Poďme von.

Teraz poďme premenovať .config V .config_ubuntu. A dostanete dva súbory - .config_ubuntu A .config_my_01. Rozdiely medzi štandardom a vašou konfiguráciou môžete vidieť napríklad takto

diff .config .config_my_01

Teraz skopírujeme vašu konfiguráciu .config_my_01 pod menom .config. Tie. získate 3 konfiguračné súbory. Pri kompilácii sa použije súbor .config. Súbory .config_ubuntu A .config_my_01 v budúcnosti nám pomôžu pri novej kompilácii. To v prípade, že sa nové jadro ukáže ako nefunkčné alebo chybné.

4. Kompilácia

Pred kompiláciou nezabudnite skontrolovať dostupnosť voľného miesta (na oddiele, kde sa nachádzajú zdroje). Bolo by pekné označiť 4-5 Gb(!) v zálohe. Pri kompilácii môže veľkosť zdrojového adresára narásť na 3,5 Gb. Voľné miesto môžete skontrolovať pomocou príkazu

Teraz v adresári pod bežným používateľom /usr/src/linux-source-2-6-20, dáme príkaz, ktorý vymaže v zdrojovom kóde niekým skompilované objekty, ktoré zostali z predchádzajúcej kompilácie a boli v archíve.

Potom cez sudo získame práva root a spustíme kompiláciu.

make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers

Kde namiesto " moja zostava.1.0"Napíšte, čo potrebujete. Anglické písmená, čísla, bodky sú prijateľné. Podčiarkovníky a pomlčky nie sú povolené.

V skutočnosti by sa kompilácia jadra mala uskutočňovať priateľským spôsobom s právami bežného používateľa. Formálne sa vytvorenie binárneho jadra nelíši od kompilácie binárneho súboru pre akýkoľvek iný program. Ale nekompilujeme ručne (pomocou príkazov ako napr vytvoriť moduly bzImage) a v poloautomatickom režime (cez make-kpkg). A tento program po kompilácii spustí program sám pod sebou dpkg-deb Získať deb- balík jadra. V tejto chvíli budete potrebovať práva root.

Teraz sa pozrime, čo robí vyššie uvedený príkaz. Začne kompilovať jadro a potom vytvorí deb- balíček s menom linux-image-version.deb, ktorý bude obsahovať binárne jadro a moduly jadra (toto bude urobené vďaka cieľu kernel_image). A bude aj vytvorený deb- balíček s menom linux-headers-version.deb, bude obsahovať hlavičkové súbory jadra (urobí sa to vďaka cieľu kernel_headers). Prijaté balíky budú umiestnené v adresári /usr/src.

Pozrite sa, aké súbory sú v nich deb-balíčky, možné v konqueror(v Kubuntu) kliknutím pravým tlačidlom myši na ten, ktorý vás zaujíma deb- súbor a výber " Ponuka balíka Kubuntu" -> "Zobraziť informácie o balíku„Informácie sa budú generovať pomerne pomaly, asi minútu, keďže pakety sú veľké.

5. Inštalácia jadra

Teraz nainštalujeme jadro. Byť s právami superužívateľa v adresári /usr/src, dajte príkaz

dpkg -i linux-image-version.deb

po ktorom vaše jadro (súbor vmlinuz-2.6.20.3-ubuntu1) sa umiestni do adresára /boot(všetky predchádzajúce jadrá tiež nikam neodídu, zostanú na svojich miestach) a v katalógu /lib/modules, vedľa adresára s bežnými modulmi jadra (in Ubuntu 7.04 volal /lib/modules/2.6.20-15-generic) objaví sa adresár s modulmi vášho nového jadra (v našom prípade to bude /lib/modules/2.6.20.3-ubuntu1). Nové jadro bude automaticky zaregistrované /boot/grub/menu.lst.

V zásade sa už môžete reštartovať a na obrazovke načítania Grub objaví sa nová položka s vaším jadrom. Nové jadro sa objaví na začiatku zoznamu. Ale zatiaľ sa neponáhľame, dáme ďalší príkaz

dpkg -i linux-headers-version.deb

ktorý nainštaluje hlavičky jadra do adresára /usr/src/linux-headers-version, v našom prípade to bude adresár /usr/src/linux-headers-2.6.20.3-ubuntu1. Tieto hlavičky budeme potrebovať napríklad na prekompilovanie ovládačov nVidia pre nové jadro.

6. Reštartujte

Reštartujte a v ponuke Grub uvidíte dve nové položky – normálne spustenie z vášho jadra a spustenie v režime minimálnej konzoly. Vyberte prvú položku. Keby jadro hneď nespadlo do Jadrová panika, potom je to dobré znamenie. Počkajte na dokončenie sťahovania. Ak budete mať šťastie, Ubuntu sa spustí v grafickom režime a zobrazí grafickú výzvu na prihlásenie. V tomto prípade možno nebudete čítať ďalej.

Ale pre používateľov kariet nVidia ktorí používali ovládače nainštalované prostredníctvom „Proprietary Driver Manager“ alebo používali ovládače z balíka nvidia-glx(alebo tam nvidia-glx-new), dávam 99% záruku, že nebudete mať šťastie! A pod novým jadrom neuvidíte grafiku!

7. Inštalácia ovládačov nVidia z nvidia.com

Ak chcete získať funkčné X pod novým jadrom, prvá vec, ktorá vám príde na myseľ, je nainštalovať ovládače z nvidia.com pod nové jadro. A toto je nesprávne rozhodnutie! Hneď po nainštalovaní ovládačov pre nové jadro prestane fungovať grafika vo vašom starom osvedčenom jadre (kvôli tomu, že súbory ovládačov nVidia sú striktne viazané na verziu a názov jadra). A keďže ste funkčnosť nového jadra ešte poriadne neotestovali, môžete získať systém „s natívnym jadrom, ale bez grafiky“ a „chybovým jadrom, ale s grafikou“. Nemyslím si, že niekto bude spokojný s touto situáciou.

V populárnom článku „Jadrová fyzika pre ženy v domácnosti“ sú odporúčania, ako dostať grafiku pod obe jadrá. Odporúča sa nasledujúci spôsob – majte pripravený inštalačný balík ovládača z nvidia.com a ak chcete zaviesť systém pod konkrétnym jadrom, musíte najprv nabootovať do režimu konzoly tohto jadra, nainštalovať ovládač a potom spustiť normálne. Myslím, že aj tento prístup poteší málokoho.

Postaráme sa o to, aby grafika fungovala ako v starom, tak aj v novom jadre, a preto nebude potrebné zakaždým spúšťať inštaláciu (kompiláciu) palivového dreva. K tomu budeme musieť splniť len jednu podmienku – aby grafické ovládače pod rôznymi jadrami boli rovnakej verzie.

Krátky akčný plán- inštalovať palivové drevo z miesta nvidia.com pre štandardné jadro v plnom rozsahu. Uistime sa, že fungujú. Potom z toho istého balíka nainštalujeme palivové drevo pre domáce jadro, ale v režime „iba grafický modul“.

8. Inštalácia ovládačov nVidia pre bežné jadro

Všetko, čo je napísané nižšie, je vhodné aj pre tých, ktorí sa jednoducho rozhodli nainštalovať nové ovládače nVidia pod štandardné jadro!

Stiahnite si z lokality nvidia.com palivové drevo pre Linux. Stiahol som si verziu palivového dreva pre seba 96.43 . Súbor sa volá NVIDIA-Linux-x86-96.43.01-pkg1.run. Môžete však vyskúšať iné stabilné vydania, ktoré sú na stránke prítomné nVidia.

Ak chcete nainštalovať, vytvorte v adresári /usr/src podadresár s názvom nvidia, skopírujte tento súbor tam. V tomto podadresári dávame súboru povolenie na spustenie

chmod 777 NVIDIA-Linux-x86-96.43.01-pkg1.run

To je všetko, tu práca v grafickom rozhraní nateraz končí. Pred ukončením režimu grafu spustite Synaptické a uistite sa, že máte

  • spôsobilosť Toto je front-end wrapper pre správcu balíkov pre textový režim.
  • linux-headers-2.6.20-15. Toto sú hlavičkové súbory vášho štandardného jadra.
  • linux-headers-2.6.20-15-generic. Nepoviem presne, na čo je tento balík určený, ale je to tak.

Dobrým tipom je nechať si vytlačiť text tohto článku na kus papiera alebo ho uložiť do textového súboru, ktorý je možné zobraziť v textovom režime.

Reštartujeme do režimu konzoly bežného jadra (in Grub existuje taký bod). IN Ubuntu automaticky získate práva root, nemusíte ani zadávať heslo. Teraz musíme odstrániť palivové drevo nVidia, ktoré sú v systéme. Ak ste nainštalovali ovládače cez "Proprietary Driver Manager" (alebo inštaláciou balíka nvidia-glx alebo nvidia-glx-new), potom balík nvidia-glx/nvidia-glx-new je potrebné odstrániť zo systému a nielen odinštalovať, ale odinštalovať v režime očistiť.

Som dosť hlúpy používateľ a namiesto toho, aby som pochopil možnosti dpkg, používam program v konzole spôsobilosť. Zadajte príkaz

a ocitnete sa v škrupine, ktorá sa matne podobá Synaptické. V hornej časti bude kľúčový tip. Do menu sa dostanete stlačením Ctrl+t(nepohodlné, ale čo robiť). Na jedálnom lístku
šípky a klávesy Zadajte nájsť a vybrať položku " Nájsť". Hľadaný reťazec napíšeme - nvidia-glx. Svetlo dopadne na požadovaný balík. Znova zavolajte do ponuky a nájdite položku " Vyčistiť". Kliknite naň a balík, na ktorom sa nachádza zvýraznenie, bude označený tak, aby sa úplne odinštalovali všetky jeho súbory zo systému (samotný balík zostane vo vyrovnávacej pamäti, v prípade potreby ho možno preinštalovať). Zobrazí sa nápoveda dole - " e - Preskúmať, ! - odstrániť". Kliknite na " e" - a uvidíme, ktoré balíky budú vymazané. Ak z nvidia-glx bude závisieť od balíkov, budú tiež odinštalované. Zvyčajne ide o balík nvidia-glx-dev. Nevadí, že sa tiež odstráni.

Teraz stlačte " ! “ (pre obzvlášť nadaných - Shift+1), týmto súhlasíme s našimi zmenami. Potom kliknite na " q" (exit). Pri ukončení program odstráni balíky, ktoré sme označili.

Teraz je ten moment. Teraz sme na úrovni init 1(iba konzola, veľa služieb nie je spustených). Ak spustíte inštaláciu ovládača nVidia, potom bude prisahať, že vaša služba možno nefunguje devfs, ktorý zvyčajne beží na úrovni 3 . Preto dávame príkaz

telinit 3

a systém načíta potrebné služby a zároveň ukončí režim pre jedného používateľa (objaví sa niekoľko konzol, ktoré je možné prepínať klávesmi ALT+F1...ALT+F6). Pre ďalšiu prácu potrebujeme iba dve konzoly. Mimochodom, systém sa pokúsi načítať grafiku, ale nepodarí sa to, pretože... Práve sme odstránili vodiča. A ona zostane vnútri 7 konzola s prázdnou obrazovkou. Neprepadajte panike, tlačte ďalej ALT+F1, vidíme prvú konzolu, tam zadáme prihlasovacie meno a heslo rovnako ako pri grafickom prihlásení (iba po prihlásení a hesle stlačíme Zadajte ale nie TAB).

Po prihlásení zavolajte mc ako superužívateľ

Prejdite do katalógu /usr/src/nvidia

./NVIDIA-Linux-x86-96.43.01-pkg1.run -e

možnosť " -e“ nám umožní zobraziť správu o akciách a konfliktné súbory. Začneme inštaláciu. Súhlasíme s licenciou. Odmietame stiahnuť zdrojový kód z ftp nvidia. Poďme sa rozprávať OKže moduly vytvoríme my. Ak chcete zadať cesty, jednoducho kliknite Zadajte.

Nakoniec sa pred samotnou inštaláciou zobrazí zoznam súborov, ktoré sa budú inštalovať. A na začiatku tohto zoznamu (ak sa nájdu) sa objavia konfliktné súbory. Bude napísané" Záložný súbor..." - toto sú. V mojom prípade to boli spisy

/usr/lib/xorg/modules/extensions/libGLcore.so
/usr/lib/xorg/modules/extensions/libglx.so
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/lib/modules/2.6.20-15-generic/volatile/nvidia.ko
/usr/include/GL/glext.h
/usr/include/GL/gl.h
/usr/include/GL/glxext.h
/usr/include/GL/glx.h

Toto sú súbory z balíka nvidia-restricted-modules. Faktom je, že ak jednoducho odstránite tento balík, potom spolu s týmito súbormi všetky súbory pre nVidia- čipsety ( nVidia Koniec koncov, nevyrába iba grafické karty). Budete tiež musieť odstrániť závislé balíky linux-restricted-modules-2.6.20-15-generic, linux-restricted-modules-generic A linux-generic. Preto nie je vhodné tento balík odstraňovať. Preto budeme robiť veci inak.

Hneď ako uvidíte takýto zoznam, prihláste sa do druhej konzoly (prejdite na - ALT+F2), beh

a metodicky preneste tieto konfliktné súbory niekam do samostatného adresára vo vašom domovskom adresári, pričom skontrolujte zoznam v prvej konzole. Prečo preniesť a nie odstrániť? Faktom je, že názvy súborov v systéme Linux sú „nečitateľné“ a môžete ľahko urobiť chybu a odstrániť nesprávny súbor.

Po odstránení všetkých súborov určených pre Zálohovanie, vráťte sa na prvú konzolu. Prerušte inštaláciu ( Ctrl+c) a spustite ho znova. Ak " Záložný súbor..." už nebude existovať, potom dokončite inštaláciu. Všetko by malo prebehnúť hladko. S opravou môžete súhlasiť xorg.conf, záložný súbor sa aj tak vytvorí.

Teraz pozornosť! Najdôležitejšie je v tejto chvíli nepreťažiť! A prejdite do súboru /etc/default/linux-restricted-modules-common a pridajte k možnosti DISABLED_MODULES modulov nv A nvidia_new. Mám to urobené takto

DISABLED_MODULES="nv nvidia_new"

Ak to neurobíte, pri ďalšom načítaní súboru (ktorý ste odstránili!) /lib/modules/2.6.20-15-generic/volatile/nvidia.ko bude automaticky obnovené z balíka nvidia-restricted-modules. A váš súbor, ktorý ste skompilovali pri inštalácii ovládačov, sa nazýva /lib/modules/2.6.20-15-generic/kernel/drivers/video/nvidia.ko. Takže keď spustíte X, nájde sa prvý súbor. Ale nedosiahne váš súbor. A X nebude možné naštartovať.

Reštartujeme štandardné jadro v plnom režime. Ak bolo všetko urobené správne, X sa spustí. Tešte sa, aspoň máte stále funkčný systém.

9. Inštalácia ovládačov nVidia pre domáce jadro

Teraz zostáva posledný krok – aby grafika fungovala v novom jadre. Všetko je tu celkom jednoduché. Zavedieme do režimu konzoly domáceho jadra. Dávame príkaz

prihláste sa a spustite v prvej konzole

Prejdite do katalógu /usr/src/nvidia a začnite s tímom inštalovať palivové drevo

./NVIDIA-Linux-x86-96.43.01-pkg1.run -Ke

Možnosti " - Ke"umožňuje zostaviť iba grafický modul nvidia.ko pod aktuálnym jadrom (a súbor bude umiestnený v adresári /lib/modules/current_kernel_name/kernel/drivers). Žiadne ďalšie zdieľané súbory, ktoré by sa napríklad nachádzali v /usr/lib... ako pri kompilácii s voľbou "-e" sa nevytvorí.

Presne tak, ako pri kompilácii v štandardnom jadre, klikaním súhlasíme s cestami Zadajte. Dostaneme sa na obrazovku, kde budú uvedené súbory, ktoré budú nainštalované. Ak sú na začiatku tohto zoznamu konfliktné súbory " Záložný súbor...“, prepnite na ďalšiu konzolu a odstráňte (preneste) tieto súbory.

Po odstránení konfliktných súborov v prvej konzole prerušte inštaláciu ( Ctrl+c) a spustite ho znova (s možnosťou " - Ke"prirodzene). Po dokončení inštalácie reštartujte výberom z ponuky Grub v plnom režime s vaším jadrom.

X by malo začať. Môžete sa radovať druhýkrát – máte systém s podomácky vyrobeným jadrom a fungujúcou grafikou.

Kedykoľvek teraz môžete zaviesť systém pod požadovaným jadrom a grafika by mala fungovať všade. To je všetko.