Najnoviji linux kernel. Izgradnja kernela u Ubuntu. Korak po korak instrukcije. Gdje preuzeti Linux kernel

Dugo sam želio da napišem članak o tome kako napraviti Linux kernel. I sada je došao ovaj trenutak.

Zapravo, zašto praviti kernel ako distribucija pruža savršeno upotrebljiv kernel?

Na primjer, da biste koristili najnovije drajvere i rješenja u novom kernelu, kada je samo stara grana dostupna iz distribucije. Također, na primjer, da ga prilagodite svom hardveru i malo ubrzate rad. Napravio sam 3.11 za sebe, jer sadrži set zakrpa koje poboljšavaju rad sa ATI video karticama, a ja sam vlasnik jedne od njih.

Mnogo je članaka napisano o izgradnji kernela, tako da neću ulaziti u detalje, već ću samo napisati kako sam napravio kernel za sebe.

Prije svega, trebate nabaviti arhivu sa izvornim kodovima željene verzije Linux kernela.

Na stranici https://www.kernel.org/ možete preuzeti željenu verziju. Opisaću proces izgradnje i instalacije koristeći verziju 3.11.0 kao primjer.

Preporučljivo je izgraditi kernel u direktoriju posebno kreiranom za ovu svrhu pod neprivilegiranim korisnikom. Sastavljam u folder ~src/linux/linux-verzija

Prije kompajliranja, trebali biste se uvjeriti da su sve ovisnosti potrebne za izgradnju instalirane i oko 3 GB slobodnog prostora u direktoriju za kompilaciju.

Evo liste paketa za uspješno kompajliranje (za Debian/Ubuntu):

gcc, napraviti- Neophodni alati za montažu i povezivanje. Po mogućnosti jedna od najnovijih dostupnih verzija gcc-a.

libncurses5-dev- potrebno da bi konfiguracija menija radila

ccache- omogućava vam da ubrzate ponovno sastavljanje

Ako želite koristiti grafički konfigurator kernela, trebali biste instalirati i pakete za QT razvoj, npr. libqt4-dev, g++, pkg-config.

Lzop, lz4c- ako vas zanimaju alternativni mehanizmi kompresije kernela i initramfs-a.

Pretpostavlja se da je trenutni direktorij direktorij raspakiranog kernela.

Nakon što je okruženje za izgradnju pripremljeno, potrebno je generirati konfiguraciju kernela. Trenutna konfiguracija se može pogledati ovako:

Cat /boot/config-`uname -r`

Zcat /proc/config.gz

U principu, možete koristiti trenutnu konfiguraciju tako što ćete je urediti u jednom od konfiguracijskih programa. Kopirajte ga u direktorij u kojem je raspakirana arhiva sa kernelom i preimenujte je u .config

cp /boot/config-`uname -r` .config

Sviđa mi se xconfig, smatram ga najzgodnijim.

Napravite xconfig

Prethodno kopirano se automatski učitava .config, koji nam služi kao osnova za konfiguraciju. Ima dosta savjeta za podešavanje kernela, samo preporučujem da odaberete verziju procesora, isključite hardverske drajvere kojih nema, možete odabrati i dodatne module, kao što su zram i algoritam kompresije, ja sam izabrao lz4 kao najbrži.

Nakon što sačuvate konfiguraciju, možete početi sa kompajliranjem.

Ako ste previše lijeni da ručno konfigurirate kernel, moguće je automatski konfigurirati koristeći informacije o učitanim modulima: make localmodconfig

Sada je drugi glavni korak kompajliranje kernela i modula. Izvršava se jednom komandom:

Napravite -j4 CC="ccache gcc" bzImage module

Gdje -j4 odgovara broju procesorskih jezgara u vašoj konfiguraciji.

Kompilacija neće dugo trajati ako je hardver dovoljno moćan i ako se ne koristi konfiguracija kernela distribucije. Na mom laptopu sa AMD Phenom P820 procesorom i šest gigabajta RAM-a, kompilacija traje oko pola sata.

Poslednji korak je instaliranje kernela i modula.

Sudo sed -i.bak "s/MODULES=most/MODULES=dep/" /etc/initramfs-tools/initramfs.conf

Ovo je neophodno kako bi se smanjila veličina initrd datoteke uključivanjem samo modula potrebnih za učitavanje.

Instalacija se može obaviti i jednom komandom:

sudo make modules_install install

Ili instalirajte sve ručno. Prvo moduli

sudo make modules_install

Zatim jezgro

Verzija=`awk "NR<=3 {printf "%s.",$NF}" < Makefile | sed "s/\.$//"`

ovako dobijamo verziju kernela iz Makefile-a

sudo cp arch/`uname -m`/boot/bzImage /boot/vmlinuz-$verzija sudo cp .config /boot/config-$version sudo cp System.map /boot/System.map-$version sudo update-initramfs - c -k $verzija sudo update-grub

Na kraju, prilažem skriptu za automatizaciju procesa.

Tokom konfiguracije konfiguracije, može postaviti nekoliko pitanja, da biste odgovorili po defaultu, samo trebate pritisnuti Enter.

Sretna kompilacija.

Zašto bi neko želio da kompajlira novi kernel? Često nije potrebno jer zadana kernel isporučena s Debianom upravlja većinom konfiguracija. Također, Debian često nudi nekoliko alternativnih kernela. Stoga biste mogli prvo provjeriti postoji li alternativni paket slike kernela koji bolje odgovara vašem hardveru. Međutim, može biti korisno sastaviti novo jezgro kako bi se:

Nemojte se bojati pokušati kompajlirati kernel. Zabavno je i isplativo.

Za kompajliranje kernela na Debian način, potrebni su vam neki paketi: , i nekoliko drugih koji su vjerojatno već instalirani (pogledajte kompletan popis).

Ova metoda će napraviti .deb izvornog koda vašeg kernela, a ako imate nestandardne module, napravite i sinhronizovani zavisni .deb od njih. To je bolji način upravljanja slikama kernela; će sadržavati kernel, System.map i dnevnik aktivne konfiguracijske datoteke za build.

Imajte na umu da nemate imati kompajlirati vaš kernel na “Debian način”; ali smatramo da je korištenje sistema pakovanja za upravljanje vašim kernelom zapravo sigurnije i lakše. U stvari, izvore kernela možete dobiti direktno iz Linusa umjesto iz , ali i dalje koristite metodu kompilacije.

Imajte na umu da ćete kompletnu dokumentaciju o korištenju pronaći pod . Ovaj odjeljak sadrži samo kratak vodič.

U nastavku ćemo pretpostaviti da imate slobodnu kontrolu nad vašom mašinom i da ćemo izdvojiti izvorni izvor kernela negdje u vašem kućnom direktoriju. Također ćemo pretpostaviti da je vaša verzija kernela 3.16. Provjerite jeste li u direktoriju gdje želite da raspakujete izvore kernela, raspakirajte ih koristeći i promijenite u direktorij koji će biti kreiran.

Sada možete konfigurirati svoje kernel. Pokreni ako je X11 instaliran, konfiguriran i pokrenut; pokrenite u suprotnom (trebat ćete instalirati). Odvojite vrijeme da pročitate online pomoć i pažljivo birajte. Kada ste u nedoumici, obično je bolje uključiti drajver uređaja (softver koji upravlja hardverskim periferijama, kao što su Ethernet kartice, SCSI kontroleri i tako dalje) za koji niste sigurni. Budite oprezni: druge opcije, koje se ne odnose na određeni hardver, treba ostaviti na zadanoj vrijednosti ako ih ne razumijete. Ne zaboravite odabrati "Učitavač modula kernela" u "Podrška modula koji se može učitati" (nije odabrano po defaultu). Ako nije uključeno, vaša Debian instalacija će imati problema.

Očistite izvorno stablo i resetirajte parametre. Da biste to uradili, uradite.

Sada kompajlirajte kernel: . Broj verzije “1.0” može se promijeniti po želji; ovo je samo broj verzije koji ćete koristiti da pratite svoje verzije kernela. Isto tako, možete staviti bilo koju riječ koju želite umjesto "custom" (npr. ime hosta). Kompilacija kernela može potrajati dosta vremena, ovisno o snazi ​​vašeg stroja.

Kada je kompilacija završena, možete instalirati svoj prilagođeni kernel kao bilo koji paket. Kao root, uradite . Dio je opciona podarhitektura, ovisno o tome koje opcije kernela postavite. će instalirati kernel, zajedno sa nekim drugim lepim pratećim fajlovima. Na primjer, bit će ispravno instaliran (korisno za otklanjanje grešaka u kernelu) i bit će instaliran, sadržavajući vaš trenutni set konfiguracije. Vaš novi kernel paket je također dovoljno pametan da automatski ažurira vaš pokretački program za korištenje novog kernela. Ako ste kreirali paket modula, moraćete da instalirate i taj paket.

Vrijeme je za ponovno pokretanje sistema: pažljivo pročitajte svako upozorenje koje je možda proizveo gornji korak, a zatim .

Za više informacija o Debian kernelima i kompilaciji kernela, pogledajte Debian Linux Kernel Handbook. Za više informacija o , pročitajte finu dokumentaciju u .

Ako se sećate, ne tako davno smo naučili kako da izgradimo FreeBSD kernel iz izvora. Pitanje je, zašto ne naučiti raditi isto s Linux kernelom? Razlozi za izgradnju Linux kernela iz izvora su, generalno, isti - dobijanje najnovije verzije kernela, hitna primena sigurnosnih zakrpa, optimizacija za specifične zadatke i specifičan hardver, kao i želja da učestvujete u razvoju kernela, čak i u ulozi QA.

Bitan! Praćenje uputstava u ovoj objavi može dovesti do gubitka vaših podataka. Napravite sigurnosne kopije i zapamtite da sve radite na vlastitu odgovornost i rizik. Sve dole opisano je testirano na Ubuntu 14.04 LTS. Ali na drugim verzijama Ubuntua, kao i drugim distribucijama Linuxa, razlike bi trebale biti minimalne.

Podešavanje bootloadera

Uredite /etc/default/grub ovako:

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=tačno
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i-s2>/dev/null ||echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="tiho prskanje"
GRUB_CMDLINE_LINUX=""

Nakon uređivanja kažemo:

sudo update-grub

Kao rezultat toga, prije nego što se sistem pokrene, od vas će biti zatraženo 10 sekundi da odaberete kernel sa kojim želite da se pokrenete. Vrlo zgodno ako zabrljate konfiguraciju kernela i želite se pokrenuti s prethodnom verzijom!

Instalirajte zavisnosti

Trebat će nam najmanje sljedeći paketi:

sudoapt-get installgitgccmakebc fakeroot dpkg-dev\
libncurses5-dev libssl-dev

Na mnogim sistemima, svi će oni, međutim, već biti prisutni.

Dobivanje izvora

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.xz
tar-xz-xvf linux-4.6.4.tar.xz
cd linux-4.6.4

Ili, ako želite najnovije, možete preuzeti izvor direktno iz Gita:

# Ogledalo: https://github.com/torvalds/linux
git clone'git://git.kernel.org/pub/scm/linux/kernel/git/'\
'torvalds/linux.git'
cd linux

Sudeći po činjenici da nisam mogao pronaći tag v4.6.4 u Gitu, Linux kernel izdanja su napravljena isključivo u obliku komprimiranih tar arhiva.

Ako, umjesto vanilla kernela, želite da napravite kernel sa zakrpama iz Canonical-a:

git klon git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
cd ubuntu-trusty
git tag|manje
git checkout Ubuntu-lts-4.4.0-31.50_14.04.1

Iz mog vlastitog iskustva, ako koristite Ubuntu, možete bezbedno koristiti vanilla kernel. Malo je vjerovatno da ćete imati problema s tim.

Bilješka: Zanimljivo je da od postojećih relativno popularnih Linux distribucija, čini se da samo Gentoo, Slackware i Arch Linux koriste kernel bez vlastitih zakrpa.

U svakom slučaju, sada imate izvorni kod.

Kompilacija i instalacija kernela

Odaberite opcije sa kojima će kernel biti izgrađen:

Ako je potrebno, promijenite postavke, kliknite Sačuvaj, a zatim Izađi. Kao rezultat, kreirat će se datoteka koja sadrži parametre koje smo odabrali.

At ažurirati kernel (da li već koristite neku vrstu kernela?) zgodno je uzeti konfiguraciju trenutnog kernela i postaviti nove opcije na njihove zadane vrijednosti:

zcat/proc/config.gz > ./.config
napravi olddefconfig

Na kraju prikupljamo:

make-j4 bindeb-pkg LOCALVERSION=-prilagođeno

Jezgro se sastavlja dosta dugo. Na mom laptopu montaža je trajala 1 sat i 15 minuta. Međutim, od ovog vremena o Ostatak se troši na izgradnju ogromnog kernel paketa sa simbolima za otklanjanje grešaka.

Ručna izrada i konfiguracija Linux kernela

Sklapanje ovog paketa može se onemogućiti komentarisanjem parametra CONFIG_DEBUG_INFO u konfiguraciji. Samo imajte na umu da je ovaj paket potreban za SystemTap i druge korisne alate.

Osim samog kernela, možete prikupiti i dokumentaciju:

# postoji i `make pdfdocs` i drugi, pogledajte `make help`
napravite htmldocs
chromium-browser Documentation/DocBook/index.html

Po završetku montaže podružnica direktorijum vidimo nešto poput:

linux-firmware-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-headers-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom-dbg_4.4.13-custom-1_amd64.deb
linux-libc-dev_4.4.13-custom-1_amd64.deb

Stavljamo sve deb-pakete osim dbg-verzije kernela sa uobičajenim i restartujemo. Nakon ponovnog pokretanja, gledamo izlaz naredbe. Uvjeravamo se da smo zaista pokrenuli s novim kernelom. Ako nešto nije u redu sa novim kernelom, u bootloaderu jednostavno izaberemo onaj sa kojim je sistem ranije pokrenut. Nakon pokretanja sa starim kernelom, brzo uklanjamo pakete novog kernela i voila - sistem se vratio u svoje prethodno stanje.

Dodatno, nakon učitavanja novog kernela, možete pokrenuti testove na njemu:

sudomake kselftest
sudomake kselftest-clean

Čestitamo, sada znate kako da napravite Linux kernel!

Zaključak

Materijali o unutrašnjosti Linux kernela:

  • KernelNewbies.org, stranica za početnike u Linux kernelu sa vlastitom mailing listom, IRC kanalom, forumom, wikijem i još mnogo toga;
  • LKML.org, stranica za udobno čitanje mailing liste programera Linux kernela putem pretraživača. Budite oprezni, često kvari formatiranje slova! U tom smislu, arhiva mailing liste na marc.info je mnogo bolja;
  • Linux Cross Reference, stranica za udobno čitanje Linux kernel koda kroz pretraživač;
  • Knjiga Linux Kernel Development, 3rd Edition je najnovija knjiga o Linux kernelu na engleskom (2010, kernel 2.6.x), postoji prevod na ruski;
  • Knjiga Linux-Treiber entwickeln, 4. izdanje je novija (2015, kernel 4.x), ali je napisana na njemačkom jeziku i nema prijevod;
  • Besplatna knjiga Linux Insides autora Aleksandra Kulešova zvanog @0xAX izgleda kao najpristupačnija i najsavremenija, ali je još uvijek u procesu pisanja;
  • Ponekad možete pronaći nešto korisno u HTML dokumentaciji Linux kernela, službenoj dokumentaciji iz izvora Linux kernela;
  • Primeri za knjigu Linux Device Drivers, 3. izdanje, koji pokušavaju da budu ažurirani, plus izvori za 4. izdanje, koje se trenutno piše;

Da li gradite kernel iz izvora, i ako jeste, zašto? 🙂

dodatak: Možda će vas također zanimati članak Skandalozna istina o otklanjanju grešaka koda kernela na Linuxu.

Tagovi: Linux, Ring0.

Kompajliranje linux kernela


Mnogi smatraju da je to besmisleno gubljenje vremena da bi se pokazao kao pametan i napredan "Linuksoid". U stvari, kompajliranje kernela je veoma važna stvar. Recimo da ste kupili novi laptop koji nema ispravnu web kameru. Vaši postupci? Gledate u tražilicu i tražite rješenje za problem po ovom pitanju. Vrlo često se može ispostaviti da vaša web kamera radi na novijoj verziji kernela od vaše. Ako ne znate koju verziju imate, upišite uname -r u terminal, kao rezultat ćete dobiti verziju kernela (na primjer, linux-2.6.31-10). Također, kompilacija kernela se naširoko koristi za povećanje performansi: činjenica je da se distribucije kernela kompajliraju "za sve" prema zadanim postavkama, zbog toga uključuje ogroman broj drajvera koji vam možda neće trebati. Dakle, ako dobro poznajete svoj hardver, možete onemogućiti nepotrebne drajvere u fazi konfiguracije. Također je moguće omogućiti podršku za više od 4 gigabajta RAM-a bez promjene dubine bita sistema.

Kako napraviti linux kernel? Izgradnja Linux kernela

Dakle, ako još uvijek trebate imati svoj kernel, počnimo sa kompajliranjem!


Prva stvar koju treba učiniti je dobiti izvorni kod za željenu verziju kernela. Obično morate nabaviti najnoviju stabilnu verziju. Sve zvanične verzije kernela dostupne su na kernel.org.

Ako već imate instaliran X server (kućni računar), onda možete otići na stranicu u svom omiljenom pretraživaču i preuzeti željenu verziju u tar.gz arhivi (komprimirani gzip). Ako radite u konzoli (na primjer, još niste instalirali X server ili konfigurirate server), možete koristiti tekstualni pretraživač (na primjer, elinks).

Također možete koristiti standardni wget menadžer preuzimanja:


tar -zxvf put_do_arhive

Konfiguracija kernela.

Kompilacija.
napravi && napravi instalaciju
Čekamo od 20 minuta do nekoliko sati (u zavisnosti od snage računara). Kernel je instaliran. Da bi se pojavio na listi grub(2), otkucajte (kao root)
update-grub


Arhiva članaka:
maj 2017
mart 2017
april 2016
mart 2016
oktobar 2013
septembar 2013
maj 2013
mart 2013
novembar 2012
jul 2012
juna 2012
april 2012
mart 2012
februar 2012
april 2011
mart 2011
februar 2011
januar 2011
decembar 2010
novembar 2010
oktobar 2010
septembar 2010
avgust 2010
jul 2010
juna 2010
maj 2010
april 2010
mart 2010

nasumično:

Virtuelni planetarijum Stellarium: pregled novih mogućnosti

BOINC: računarstvo za nauku

Gambas: Osnovni razvoj na linuxu

SSH 2.0 serijski dijagrami

Linuxnow.ru: Planovi za budućnost

Iznenada vam ponestaje slobodnog prostora na disku? Možda je problem u evidenciji.

Kolege: svi
Linux za svakoga

Naši baneri:


Postavi baner

Konfiguracija Linux kernela

Provjera izvornih paketa

Ponovno kompajliranje kernela zahtijeva njegove izvore.

Blog o sistemskoj administraciji. Članci o Linuxu, Windowsu, NetApp skladištenju i virtuelizaciji.

Red Hat smješta izvore kernela u jedan rpm paket, ali nije instaliran po defaultu. Naziv ovog paketa:

kernel-source-2.4.2-2.1386.rpm

Pored izvornog koda, za ponovno kompajliranje kernela potreban vam je kompajler koji se sastoji od dvije komponente:

make utility;

sam kompajler jezika C je gcc ili egcs.

Kreiranje sigurnosne kopije trenutnog kernela izvodi se u tri faze:

1. Kreiranje sigurnosne kopije izvora kernela, koja vam omogućava da je vratite ako je konfiguracija oštećena.

2. Kreiranje rezervne kopije samog kernela kao poznatog radnog sredstva za pokretanje sistema.

3. Kreiranje novog unosa za učitavač operativnog sistema, koji se može koristiti za pokretanje iz rezervne kopije kernela.

Kreiranje izvorne sigurnosne kopije se vrši kopiranjem izvornog direktorija kernela na disk. Oporavak se vrši kopiranjem u suprotnom smjeru.

Kada se kernel ponovo kompajlira, stari kernel se upisuje u datoteku sa ekstenzijom .old. Međutim, ova kopija kernela se još ne može koristiti za pokretanje sistema. Ovo objašnjava potrebu za izvođenjem gore navedenih operacija.

Učitavač operativnog sistema tipa LILO, koji se obično koristi za pokretanje Linuxa, konfiguriše se postavljanjem veze na datoteku kernela u korijenskom sistemu datoteka.

Nakon što napravite sigurnosnu kopiju kernela, morate dodati još jedan unos u /etc/lilo.conf datoteku kako biste mogli pokrenuti Linux sa starim kernelom:

otvorite datoteku /etc/lilo. conf u uređivaču teksta

kreirajte kopiju cijele particije;

promijenite dvije pozicije u kopiji:

zamijenite naziv datoteke kernela imenom njegove rezervne kopije (zajedno sa ekstenzijom);

zamijenite oznaku particije nečim poput linuxa. original (originalni Linux) ili linux-prethodni (stari Linux).

redove koji počinju sa initrd treba zamijeniti odgovarajućim rezervnim, kao što je initrd-2 .4.2-2. orig. img;

upišite promjene u /etc/lilo. konf.

unesite naredbu /sbin/lilo da unesete novi unos u bootloader. Kada pokrenete lilo komandu, na ekranu se prikazuju oznake slika unesenih u pokretač operativnog sistema.

Sljedeći put kada se sistem ponovo pokrene, novi ID kernela će biti prikazan u opisu alata LILO pokretača.

Konfiguriranje novog kernela

Konfiguracija odlučuje koje karakteristike će uključiti u kernel, koje ne uključiti itd. Možete birati između konfiguracije starog kernela i instaliranja/konfiguracije novog. Na primjer, koristeći Red Hat Linux 7.1, možete rekonfigurirati postojeći kernel 2.4.2 s novim opcijama. Također možete preuzeti i instalirati novi kernel 2.4.4. Iako su detalji konfiguracije različiti u ova dva slučaja, korišteni uslužni programi i sama metodologija konfiguracije su isti.

Linux ima tri odvojena uslužna programa za konfiguraciju, od kojih svaki ima svoje karakteristike.

Uslužni program sa interfejsom komandne linije. Korisnik dosledno odgovara na pitanja o karakteristikama koje treba da budu uključene u kernel. Ovaj uslužni program je koristan za one koji znaju kako raditi s kernelom i za one koji imaju konfiguracijske skripte za ovaj uslužni program.

Uslužni program sa menijem za tekstualni režim. Višerazinski meni ovog uslužnog programa omogućava vam da postavite i ponovo instalirate parametre kernela bilo kojim redoslijedom.

GUI uslužni program. Ovo je najatraktivniji uslužni program, ali radi samo na grafičkom X Window sistemu.

Navedeni uslužni programi kreiraju istu konfiguracijsku datoteku koju koristi uslužni program make prilikom kompajliranja punih ili djelomičnih kernela.

Opcije kernela

Kada pregledavate postavke u bilo kojem konfiguracijskom programu (komandna linija, tekstualni ili GUI), morate biti jasni o uticaju ovih postavki na rad kernela.

Identifikacija parametara u svakom programu je različita, ali je u sva tri prikazan isti skup njih. Parametri su podijeljeni u dvije glavne grupe:

modularno;

nemodularno.

Ako programski blok koji odgovara ovom parametru nije učitan kao modul kernela, to može biti jedna od dvije stvari:

[*] sastavni dio kernela;

Sastavni dio kernela.

Znakovi u uglastim zagradama (zajedno sa zagradama) odgovaraju oznakama opcija u meniju konfiguracijskih programa (osim uslužnog programa komandne linije).

Za modularne parametre postoje tri opcije za podešavanje (prema njihovom predstavljanju u meniju uslužnih programa za konfiguraciju):

<>nije uključen u kernel i nije kreiran kao modul koji se može kasnije učitati:

<*>je uključen u kernel, tako da nema potrebe da ga kasnije učitavate kao modul:

<М>Uključeno kao modul, ali ne kao dio kernela. Blok se može instalirati ili ukloniti iz kernela u bilo kojem trenutku.

Ponekad se vrijednost parametra ne može promijeniti dok se ne postavi drugi parametar. Na primjer, možete instalirati podršku za određeni SCSI uređaj tek nakon što omogućite podršku za te uređaje općenito.

Kada su potrebni alati (uslužni program make i gcc kompajler) i izvorni tekstovi instalirani na sistem, možete pokrenuti jedan od uslužnih programa za konfiguraciju i započeti konfiguriranje kernela.

GUI konfigurator

Pokretanje uslužnog programa za konfiguraciju sa grafičkim sučeljem izvodi se sljedećim redoslijedom.

Pokrenite X Windows sistem (sa bilo kojim grafičkim okruženjem i radnom površinom).

Otvorite prozor emulatora terminala (prozor komandne linije).

Kao i kod pokretanja prethodnog uslužnog programa, na ekranu će treptati nekoliko poruka o kompilaciji uslužnog programa, a nakon nekoliko minuta otvorit će se njegov glavni prozor.

Rice. 8. Uslužni program za konfiguraciju kernela sa grafičkim sučeljem: tipke menija za postavljanje vrijednosti parametara

Grafički uslužni program se ne razlikuje previše od uslužnog programa menuconf ig. Ovdje su opcije također kategorizirane; Klikom na određenu kategoriju otvara se dijaloški okvir sa listom opcija, od kojih se svaka može postaviti na vrijednost koja određuje da li se odgovarajući alat treba koristiti kao dio kernela, kao modul koji se može učitati, ili uopće ne treba koristiti.

Takav dijaloški okvir je prikazan na sl.

Rice. 9. Dijaloški okviri poput ovog postavljaju opcije konfiguracije kernela

2.4.2 kernel u Red Hat Linux-u podržava simetričnu višeprocesorsku arhitekturu prema zadanim postavkama. Morate postaviti odgovarajuću opciju na n ako vaš računar ima samo jedan procesor.

Desno od svake opcije nalazi se dugme Pomoć.

Velika prednost uslužnog programa za grafičku konfiguraciju (posebno za one koji prvi put koriste konfiguratore kernela) je to što meni prikazuje zavisnosti između različitih opcija. Na primjer, u odjeljku Block Devices, ne možete instalirati podršku za RAID ugrađenu u kernel dok se ne omogući opcija Podrška višestrukim upravljačkim programima.

Ako je u uslužnom programu menuconfig ovisnost parametara jedan od drugog prikazana uvlačenjem imena parametara u izborniku, onda je u grafičkom uslužnom programu jednostavno nemoguće postaviti nedozvoljene kombinacije parametara. Rad sa grafičkim uslužnim programom pomaže u razumijevanju zavisnosti između različitih modula.

Na kraju glavnog menija grafičkog uslužnog programa nalaze se komande slične odgovarajućim komandama uslužnog programa iz menija tekstualnog režima.

Sačuvaj i izađi (Izlaz sa čuvanjem). Kreiranje konfiguracijske datoteke kernela i gašenje uslužnog programa.

Odustani bez spremanja. Isključivanje uslužnog programa bez kreiranja konfiguracijske datoteke kernela.

Bez kreiranja konfiguracijske datoteke kernela pomoću jednog od navedenih uslužnih programa, ponovno kompajliranje kernela nije moguće.

Učitaj konfiguraciju iz datoteke. Učitavanje ranije kreirane konfiguracijske datoteke.

Konfiguraciju pohraniti u datoteku. Upisivanje konfiguracijskih podataka u datoteku sa navedenim imenom (za daljnju upotrebu ili prijenos kolegi). Ovo ne utiče na potrebu da se izvrši naredba Save and Exit, koja kreira konfiguracionu datoteku za ponovno kompajliranje kernela.

Prevođenje i pokretanje novog kernela

Nakon što je konfiguracija završena, morate provjeriti da li postoji nova konfiguracijska datoteka (.config) koja se nalazi u direktoriju /usr/src/linux-2 .4.2 (u zavisnosti od broja verzije). Ako je konfiguracijska datoteka .config na mjestu, možete koristiti naredbu make za ponovno kompajliranje kernela.

Tipično, rekompilacija kernela traje od 15 minuta do nekoliko sati. Zavisi od brzine procesora, količine RAM-a i niza drugih faktora, pa je zgodno sve komande unete tokom kompilacije spojiti u jednu, odvojenu tačkom i zarezom, tako da se izvršavaju uzastopno.

Pokretanje procesa rekompilacije

Naredbe ispod su dizajnirane za kreiranje novog kernela ponovnim kompajliranjem svih njegovih modula i njihovim pisanjem u odgovarajuće sistemske direktorije. (Tamo će biti dostupne komandama kernela.)

Za ponovno kompajliranje sistema biće unesene sljedeće komande.

# napravi dep; očistiti; make bzlmage; napraviti module; make modules_install

Svaka naredba make se može unijeti zasebno, nakon što je prethodna završena.

Nakon unosa ovih komandi, na ekranu će treptati linije koje opisuju direktorijume kojima je pristupio make program, pokretanje gcc kompajlera. za kompajliranje različitih izvornih datoteka i povezivanje različitih blokova. Svaka od ovih naredbi će trajati nekoliko minuta.

Sada možete kreirati disk za pokretanje za novi kernel pomoću naredbe

Prije izvršavanja ove naredbe, morate umetnuti formatiranu disketu u uređaj. Gotov disk za pokretanje mora biti testiran. Ponovo pokrenite računar bez vađenja diskete iz uređaja.

Nakon izvršenja naredbi za kompilaciju kernela i povratka na komandnu liniju, kreira se novi kernel. Da biste pokrenuli sistem s novim kernelom, on mora biti premješten u standardni direktorij iz kojeg će se pokrenuti. To se radi unosom naredbe

# cf /usr/src/linux-2.4.2/arch/i386/boot/bzlmage /boot/vmlinuz-2.4.2-2

Konačno, da ažurirate mapu pokretanja, pokrenite naredbu lilo:

Možete odrediti broj verzije u nazivu slike kernela za kopiranje. Važno je da ime ove datoteke odgovara imenu navedenom u datoteci /etc/lilo.conf.

Testiranje novog kernela

Nakon premeštanja nove kernel datoteke u podrazumevani direktorijum (naveden u datoteci lilo.conf), sistem se može ponovo pokrenuti sa ovim kernelom.

Odmah nakon ponovnog pokretanja, provjerite rad novih alata za koje je pokrenuta rekompilacija. Možete učiniti sljedeće.

Poređenje volumena stare i nove jezgre. Trebali biste provjeriti količinu memorije koju zauzima operativni sistem izdavanjem naredbe free.

Montiranje sistema datoteka ili pokušaj pristupa uređaju bez učitavanja modula kernela koji ga podržava (ako je podrška za taj uređaj ugrađena u kernel).

Korištenje mrežnih resursa (kao što su IP alijasi) koji nisu bili prisutni u starom kernelu.

Možda će biti potrebno provjeriti vremensku oznaku trenutne datoteke kernela. Da biste to učinili, unesite naredbu uname. Ovo vam omogućava da budete sigurni da sistem trenutno radi sa ponovo kompajliranim kernelom. Vremenska oznaka i datum kernela moraju odgovarati vremenu ponovnog kompajliranja.

Ako odgovor naredbe uname ukazuje da sistem nije pokrenut s novim kernelom, pogledajte LILO pokretački program. Proverite da li je naziv kernela za pokretanje tačan u datoteci /etc/lilo.conf.

VIDI VIŠE:

Prevođenje i instalacija Linux kernela iz izvora u Debianu

Materijal iz Bryansk Linux Users Group i www.rm.pp.ru

Svaka distribucija ima svoje specifičnosti izrade kernela, a ovaj se članak fokusira na to kako to učiniti u Debian Etchu. Također otkriva pitanje kako primijeniti ovu ili onu zakrpu na kernel kada je potrebno podržati određenu funkcionalnost ili novi hardver u vašem sistemu. Članak je prvenstveno namijenjen naprednijim korisnicima i nema garancija da će ova metoda funkcionirati kako treba i sve opisane radnje i odgovornost padaju na vas.

  1. Bilješka
  2. Prvi metod. Ugradnja kernela u .deb pakete
  3. Postavljanje zakrpa
  4. Konfiguracija kernela
  5. Prevođenje kernela
  6. Instalacija novog kernela
  7. Metod dva. "tradicionalni" način
  8. Problemi
  9. Linkovi

Bilješka

Biće opisane dvije metode za izgradnju kernela. Prvo će biti opisana varijanta izrade .deb paketa koji se mogu instalirati na vašem ili drugom sistemu.

Druga metoda je takozvani "tradicionalni" način.

Prvi metod. Ugradnja kernela u .deb pakete

Instaliranje potrebnih paketa za kompajliranje kernela

Prvo, ažurirajmo liste paketa:

# apt-dobi ažuriranje

Instalirajte pakete koji su nam potrebni:

# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Preuzimanje izvora kernela

Idite u direktorij /usr/src, idite na www.kernel.org i odaberite željenu verziju kernela. U ovom slučaju, verzija linux-2.6.23.1.tar.bz2 će biti uzeta u obzir. Preuzimanje:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2

Raspakujte izvore i kreirajte simboličku vezu:

# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (ukloni prethodnu simboličku vezu) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux

Postavljanje zakrpa

Opciono i nepotrebno nemojte ovo raditi!

Ponekad su potrebni drajveri ili funkcije koje nisu podržane u trenutnom kernelu, kao što je tehnologija virtuelizacije ili druge specifičnosti koje nisu u trenutnom izdanju. U svakom slučaju, ovo se ispravlja primjenom takozvanih zakrpa (ako ih ima).

Dakle, recimo da ste preuzeli potrebnu zakrpu (nazovimo je na primjer patch.bz2) u /usr/src. Primijenite preuzetu zakrpu na naše izvore (i dalje biste trebali biti u direktoriju /usr/src/linux):

# bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | patch-p1

Prva komanda je samo test i nikakve promjene neće biti primijenjene na izvore. Ako nije vraćena nijedna greška nakon prve naredbe, možete pokrenuti drugu naredbu da biste primijenili zakrpu. Ni u kom slučaju nemojte izvršavati drugu naredbu ako je došlo do greške nakon prve!

Na ovaj način možete primijeniti zakrpe na izvore kernela. Na primjer, postoje neke funkcije koje su dostupne samo u kernelu 2.6.23.8, a izvori nisu sadržavali potrebnu funkcionalnost, ali je objavljena zakrpa-2.6.23.8.bz2. Ovu zakrpu možete primijeniti na izvore kernela 2.6.23, ali ne i na 2.6.23.1 ili 2.6.23.3, itd. Više o ovome možete pročitati na:

Prefiksi (prepatches) - ekvivalentni alfa izdanjima; zakrpe se moraju primijeniti na izvore potpunog prethodnog izdanja sa trocifrenom verzijom (na primjer, zakrpa 2.6.12-rc4 se može primijeniti na izvore verzije 2.6.11, ali ne i na verziju 2.6.11.10.)

To znači da ako želimo da napravimo kernel 2.6.23.8, moramo preuzeti izvore za verziju 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6. 23.tar.gz) primijenjen na drugi način "tradicionalni" način!

Primijenite zakrpu-2.6.23.8.bz2 na kernel 2.6.23:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/patch-2.6.23.8.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch-p1

Konfiguracija kernela

Dobra je ideja koristiti postojeću konfiguracijsku datoteku pokrenutog kernela i za novu. Stoga kopiramo postojeću konfiguraciju u /usr/src/linux:

# očisti && napravi mrproper # cp /boot/config-`uname -r` ./.config

# napravi konfiguraciju menija

nakon čega će se učitati meni grafičke konfiguracije kernela. Odaberite "Učitaj alternativni konfiguracijski fajl" u izborniku konfiguratora i kliknite "OK". Zatim (ako je potrebno) napravite potrebne promjene u konfiguraciji kernela navigacijom kroz menije (detalji o konfiguraciji kernela mogu se naći na www.google.com). Kada završite i pritisnete "Izlaz", biće postavljeno pitanje "Da li želite da sačuvate svoju novu konfiguraciju kernela?", mi odgovaramo potvrdno "Da".

Izgradnja Linux kernela

Prevođenje kernela

Izgradnja kernela se vrši u samo dvije naredbe:

# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers

Nakon --append-to-version=, možete napisati koje god ime želite, ali ono mora početi sa znakom minus (-) i ne mora imati razmake.

Proces kompajliranja i izgradnje .deb paketa može potrajati dosta dugo. Sve će ovisiti o konfiguraciji kernela i mogućnostima vašeg procesora.

Rješavanje problema sa kreiranjem initrd.img

Nedavno se u Debianu pojavila greška koja se sastoji u činjenici da se nakon instaliranja paketa s kernelima izgrađenim na način opisan ovdje, datoteka /boot/initrd.img koja im odgovara ne kreira. Da popravite već instalirani kernel, morat ćete ručno kreirati initrd.img:

update-initramfs -c -k<полная-версия-ядра>

Da biste riješili problem "za budućnost" - prokomentirajte, kao što je prikazano, drugu od dolje citiranih linija u datoteci /etc/kernel/postinst.d/initramfs-tools:

# kernel-package prosljeđuje dodatni arg; hak da se ne pokrene pod kernel-paketom #[ -z "$2" ] || izlaz 0

Instalacija novog kernela

Kada se izgradnja kernela uspješno završi, dva .deb paketa će biti kreirana u /usr/src direktoriju:

# cd /usr/src # ls -l

linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - sam stvarni kernel i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.23.1-cybermind-10.b8.0. potrebno za pravljenje drugih modula (na primjer, kada se prave nVidia upravljački moduli). Instalirajući ih:

# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.06.

(Ovi paketi sada mogu da se instaliraju na drugom sistemu bez potrebe da se ponovo prave.)

Sve, instalacija je završena, meni bootloadera, instalacija novog RAM diska i kernela će se obaviti automatski. Ostaje samo ponovo pokrenuti:

Metod dva. "tradicionalni" način

Izvodimo sve gore opisane tačke PRIJE tačke "Kompajliranje kernela".

# napravi sve # napravi module_install # napravi instalaciju

Kao i obično, izrada može potrajati dugo, ovisno o konfiguraciji kernela i mogućnostima procesora.

Glavni nedostatak ove metode je da ako često ažurirate kernele, onda će se nakon nekog vremena nakupiti veliki broj njih i poželjet ćete ukloniti one koje se ne koriste. Da biste ovo olakšali, možete izgraditi kernel i druge datoteke koje su instalirane u sistem koristeći komande "make modules_install" i "make install" u deb paket (ili bolje rečeno, dva počevši od kernela 2.6.27) kao što je prvi metodu, ali mi ćemo ovdje koristiti sa skriptama kernela:

# napravi sve # napravi deb-pkg

Dvije .deb datoteke će se pojaviti u direktoriju jedan nivo iznad izvornog direktorija. Preveo sam kernel u direktorijum /usr/src/linux-2.6.27.10 i dobio sam fajlove u direktorijumu /usr/src/

# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb

Kernel se instalira sa naredbom

# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb

Stara jezgra se mogu ukloniti, na primjer, iz sinaptike

Sljedeći koraci

Kernel je napravljen i instaliran, ali sada treba da kreirate RAM disk (bez kojeg se kernel jednostavno neće pokrenuti) i potrebno je da ažurirate GRUB bootloader. Da biste to učinili, učinite sljedeće:

# depmod 2.6.23.1 # apt-get install yaird

Instalirajte RAM disk:

# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1

Ažurirajmo bootloader lako i bezbolno:

Sve, bootloader i novi kernel su spremni, ostaje samo da se restartuje:

Problemi

Ako se nakon ponovnog pokretanja vaš izabrani novi kernel ne pokrene, ponovo pokrenite i odaberite svoj prethodni kernel i možete pokušati ponovo proći kroz cijeli proces kako biste napravili ispravan kernel. U ovom slučaju, ne zaboravite da izbrišete redove kernela koji ne radi u /boot/grub/menu.lst.

Kompajliranje linux kernela

Zašto uopšte sami kompajlirati kernel?
Možda je glavno pitanje koje se postavlja u vezi sa kompajliranjem kernela: “Zašto bih to radio?”.
Mnogi smatraju da je to besmisleno gubljenje vremena da bi se pokazao kao pametan i napredan "Linuksoid". U stvari, kompajliranje kernela je veoma važna stvar. Recimo da ste kupili novi laptop koji nema ispravnu web kameru. Vaši postupci? Gledate u tražilicu i tražite rješenje za problem po ovom pitanju. Vrlo često se može ispostaviti da vaša web kamera radi na novijoj verziji kernela od vaše. Ako ne znate koju verziju imate, upišite uname -r u terminal, kao rezultat ćete dobiti verziju kernela (na primjer, linux-2.6.31-10). Također, kompilacija kernela se naširoko koristi za povećanje performansi: činjenica je da se distribucije kernela kompajliraju "za sve" prema zadanim postavkama, zbog toga uključuje ogroman broj drajvera koji vam možda neće trebati. Dakle, ako dobro poznajete svoj hardver, možete onemogućiti nepotrebne drajvere u fazi konfiguracije.

Također je moguće omogućiti podršku za više od 4 gigabajta RAM-a bez promjene dubine bita sistema. Dakle, ako još uvijek trebate imati svoj kernel, počnimo sa kompajliranjem!

Dobivanje izvornog koda kernela.
Prva stvar koju treba učiniti je dobiti izvorni kod za željenu verziju kernela. Obično morate nabaviti najnoviju stabilnu verziju. Sve zvanične verzije kernela dostupne su na kernel.org. Ako već imate instaliran X server (kućni računar), onda možete otići na stranicu u svom omiljenom pretraživaču i preuzeti željenu verziju u tar.gz (gzip komprimovanoj) arhivi. Ako radite u konzoli (na primjer, još niste instalirali X server ili konfigurirate server), možete koristiti tekstualni pretraživač (na primjer, elinks). Također možete koristiti standardni wget menadžer preuzimanja:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.1.tar.gz
Ali imajte na umu da morate znati tačan broj verzije koji vam je potreban.

Raspakivanje arhive izvornog koda.
Nakon što primite arhivu sa izvornim kodom, potrebno je da je raspakujete u fasciklu. To se može učiniti iz grafičkih upravitelja datoteka (dolphin, nautilus, itd.) ili putem mc-a. Ili koristite tradicionalnu naredbu tar:
tar -zxvf put_do_arhive
Sada imate izvorni folder, idite do njega koristeći cd kernel_source_code_dir (da biste naveli direktorije u folderu, koristite naredbu ls).

Konfiguracija kernela.
Nakon što ste promijenili izvorni direktorij kernela, trebate napraviti "20-minutnu" konfiguraciju kernela. Njegova svrha je da ostavi samo potrebne drajvere i funkcije. Sve naredbe već moraju biti izvršene u ime superkorisnika.

make config - konzolni mod konfiguratora.

napravi menuconfig - način rada konzole kao listu.

make xconfig - grafički način rada.

Nakon što izvršite potrebne promjene, sačuvajte postavke i izađite iz konfiguratora.

Kompilacija.
Vrijeme je za završnu fazu montaže - kompilaciju. Ovo se radi sa dve komande:
napravi && napravi instalaciju
Prva komanda će kompajlirati sve datoteke u mašinski kod, a druga će instalirati novi kernel na vaš sistem.
Čekamo od 20 minuta do nekoliko sati (u zavisnosti od snage računara).

Konfiguriranje i kompajliranje Linux kernela

Kernel je instaliran. Da bi se pojavio na listi grub(2), otkucajte (kao root)
update-grub
Sada nakon ponovnog pokretanja pritisnite "Escape" i vidjet ćete novi kernel na listi. Ako se kernel ne uključi, onda samo pokrenite sa starim kernelom i pažljivije konfigurišite.

KernelCheck - kompilacija kernela bez ulaska u konzolu.
KernelCheck vam omogućava da izgradite kernel u potpuno grafičkom načinu za Debian i njegove distribucije. Nakon pokretanja, KernelCheck će ponuditi najnovije verzije kernela i zakrpe, a nakon vašeg pristanka, preuzmite izvorni kod, pokrenite grafički konfigurator. Program će ugraditi kernel u .deb pakete i instalirati ih. Samo morate ponovo pokrenuti.

Arhiva članaka:
maj 2017
mart 2017
april 2016
mart 2016
oktobar 2013
septembar 2013
maj 2013
mart 2013
novembar 2012
jul 2012
juna 2012
april 2012
mart 2012
februar 2012
april 2011
mart 2011
februar 2011
januar 2011
decembar 2010
novembar 2010
oktobar 2010
septembar 2010
avgust 2010
jul 2010
juna 2010
maj 2010
april 2010
mart 2010

nasumično:

Aurorae: mehanizam za ukrašavanje prozora za KDE

Sblog će biti prepisan u .NET

Linuxnow.ru: Planovi za budućnost

Bolgenos. Telecon-ovo pobijanje

GRUB 2 Brzi oporavak

Free Software Foundation i copyleft.

Kolege: svi
Linux za svakoga

Naši baneri:


Postavi baner

Pitanje je, zašto ne naučiti raditi isto s Linux kernelom? Razlozi za izgradnju Linux kernela iz izvora su, generalno, isti - nabavka najnovije verzije kernela, hitna primjena sigurnosnih zakrpa, optimizacija za specifične zadatke i specifičan hardver, kao i želja da učestvujete u razvoju kernela, čak iu ulozi QA.

Bitan! Praćenje uputstava u ovoj objavi može dovesti do gubitka vaših podataka. Napravite sigurnosne kopije i zapamtite da sve radite na vlastitu odgovornost i rizik. Sve dole opisano je testirano na Ubuntu 14.04 LTS. Ali na drugim verzijama Ubuntua, kao i drugim distribucijama Linuxa, razlike bi trebale biti minimalne.

Podešavanje bootloadera

Uredite /etc/default/grub ovako:

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=tačno
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR =` lsb_release -i -s 2 > /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="tiho prskanje"
GRUB_CMDLINE_LINUX=""

Nakon uređivanja kažemo:

sudo update-grub

Kao rezultat toga, prije nego što se sistem pokrene, od vas će biti zatraženo 10 sekundi da odaberete kernel sa kojim želite da se pokrenete. Vrlo zgodno ako zabrljate konfiguraciju kernela i želite se pokrenuti s prethodnom verzijom!

Instalirajte zavisnosti

Trebat će nam najmanje sljedeći paketi:

sudo apt-get install git gcc make bc fakeroot dpkg-dev \
libncurses5-dev libssl-dev

Na mnogim sistemima, svi će oni, međutim, već biti prisutni.

Dobivanje izvora

wget https:// www.kernel.org/ pub/ linux/ kernel/ v4.x/ linux-4.6.4.tar.xz
tar --xz -xvf linux-4.6.4.tar.xz
cd linux-4.6.4

Ili, ako želite najnovije, možete preuzeti izvor direktno iz Gita:

# Ogledalo: https://github.com/torvalds/linux
git clone "git://git.kernel.org/pub/scm/linux/kernel/git/"\
"torvalds/linux.git"
cd linux

Sudeći po činjenici da nisam mogao pronaći tag v4.6.4 u Gitu, Linux kernel izdanja su napravljena isključivo u obliku komprimiranih tar arhiva.

Ako, umjesto vanilla kernela, želite da napravite kernel sa zakrpama iz Canonical-a:

git klon git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
cd ubuntu-trusty
git tag | manje
git checkout Ubuntu-lts-4.4.0-31.50_14.04.1

Iz mog vlastitog iskustva, ako koristite Ubuntu, možete bezbedno koristiti vanilla kernel. Malo je vjerovatno da ćete imati problema s tim.

Bilješka: Zanimljivo je da od postojećih relativno popularnih Linux distribucija, čini se da samo Gentoo, Slackware i Arch Linux koriste kernel bez vlastitih zakrpa.

U svakom slučaju, sada imate izvorni kod.

Kompilacija i instalacija kernela

Odaberite opcije sa kojima će kernel biti izgrađen:

napravi menuconfig

Ako je potrebno, promijenite postavke, kliknite Sačuvaj, a zatim Izađi. Ovo će kreirati .config datoteku koja sadrži opcije koje smo odabrali.

At ažurirati kernel (da li već koristite neku vrstu kernela?) zgodno je uzeti konfiguraciju trenutnog kernela i postaviti nove opcije na njihove zadane vrijednosti:

zcat /proc/config.gz > ./.config
napravi olddefconfig

Na kraju prikupljamo:

make -j4 bindeb-pkg LOCALVERSION=-prilagođeno

Jezgro se sastavlja dosta dugo. Na mom laptopu montaža je trajala 1 sat i 15 minuta. Međutim, od ovog vremena o Ostatak se troši na izgradnju ogromnog kernel paketa sa simbolima za otklanjanje grešaka. Sklapanje ovog paketa može se onemogućiti komentarisanjem parametra CONFIG_DEBUG_INFO u konfiguraciji. Samo imajte na umu da je ovaj paket potreban za SystemTap i druge korisne alate.

Osim samog kernela, možete prikupiti i dokumentaciju:

# postoji i `make pdfdocs` i drugi, pogledajte `make help`
napravite htmldocs
chromium-browser Documentation/ DocBook/ index.html

Po završetku montaže podružnica direktorijum vidimo nešto poput:

linux-firmware-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-headers-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom-dbg_4.4.13-custom-1_amd64.deb
linux-libc-dev_4.4.13-custom-1_amd64.deb

Stavljamo sve deb-pakete osim dbg-verzije kernela sa uobičajenim sudo dpkg -i i ponovo pokrenite. Nakon ponovnog pokretanja, pogledajte izlaz naredbe uname-a. Uvjeravamo se da smo zaista pokrenuli s novim kernelom. Ako nešto nije u redu sa novim kernelom, u bootloaderu jednostavno izaberemo onaj sa kojim je sistem ranije pokrenut. Nakon pokretanja sa starim kernelom, brzo uklanjamo pakete novog kernela i voila - sistem se vratio u svoje prethodno stanje.

Sredinom marta, nakon skoro dva mjeseca razvoja i sedam kandidata za izdavanje, Linus Torvalds je predstavio novu verziju kernela 4.5. Osim popravki, u izdanju ima zaista puno novih stvari. Promjene su se odrazile na sve podsisteme - disk, memoriju, sistemske i mrežne usluge, sigurnost i, naravno, dodani su drajveri za nove uređaje. Pokušajmo se pozabaviti nekim od najzanimljivijih.

O izdanju

Izdanje kernela 4.4 objavljeno je relativno nedavno, početkom januara 2016. godine, ali se za ovo kratko vrijeme nakupio veliki broj dodataka. I iako je Linus novo izdanje nazvao "normalnim", možete vidjeti da je u poređenju sa verzijom 4.4, veličina zakrpe porasla za skoro trećinu - 70 MB naspram 49 MB. U izradi je učestvovalo oko 1528 ljudi, koji su napravili oko 13 hiljada ispravki. U više od 11 hiljada fajlova, dodato je 1.146.727, uklonjeno je 854.589 linija koda. U 4.4 bilo je 714.106 i 471.010 linija, respektivno. Skoro polovina (45%) svih promena odnosi se na drajvere uređaja, 17% utiče na kod hardverske arhitekture, 14% se odnosi na mrežni stog, 4% na sistem datoteka, a 3% utiče na unutrašnje podsisteme kernela. Doug Ledford iz Red Hata dao je najviše redova, uglavnom čišćenje koda (7,7%), Tomi Valkeinen iz Texas Instruments koji radi na podršci za OMAP podarhitekturu (5,3%), tri programera fokusirana na AMD grafičke drajvere: Eric Huang - 3,3%, Alex Deucher - 2,4% i yanyang1 - 1,6%. Lideri skupa promjena - Linus Walleij iz Linara, koji je implementirao mnoge promjene niskog nivoa, uključujući GPIO koji podržava (2,0%), Arnd Bergmann, koji je uradio puno posla da podrži ARM (1,9%) i Leo Kim, koji je radio na wilc1000 drajveru (1,7%). Kao i prije, mnoge korporacije su zainteresirane za razvoj jezgra. Rad na verziji 4.5 podržalo je više od 200 kompanija, uključujući Red Hat, Intel, AMD, Texas Instruments, Linaro, Linux Foundation, Samsung, IBM, Google. Većina njih razvija podršku za svoje uređaje i povezane podsisteme i alate, ali, na primjer, Google tradicionalno pravi mnogo promjena u mrežnom podsistemu Linuxa.

Kernel i drajveri

Prenošenje složenog i loše održavanog koda napisanog u asembleru (x86/asm) na C nastavljeno je u 4.0. Kernel se sada može izgraditi sa opcijom -fsanitize=undefined. Sam parametar se pojavio prije dvije godine u GCC 4.9+ i aktivira UBSan (Undefined Behavior Sanitizer) način otklanjanja grešaka, koji otkriva nedefinirano ponašanje svojstveno jezicima C i C++: korištenje nestatičkih varijabli prije inicijalizacije, podjela na nulu, prekoračenje cijelog broja i tako dalje. Prevoditelj obično pretpostavlja da se takve operacije nikada neće dogoditi, a ako se dogode, rezultat može biti bilo koji i ovisi o samom kompajleru. Sada kompajler detektuje takve situacije, izdaje "grešku u toku izvođenja:" (možete onemogućiti -fno-sanitize-recover) i nastavlja izvršavanje. Podrazumevano, u svakom OS sklopu, sve biblioteke se učitavaju na određene adrese, što olakšava implementaciju napada. Za povećanje sigurnosti koriste se brojne tehnologije, jedna od njih je nasumični pomak prilikom pozivanja mmap (), implementiran u obliku ASLR-a (Address Space Layout Randomization). ASLR tehnologija se prvi put pojavila u Linuxu 2005. godine u kernelu 2.6 i dala je 8-bitni pomak za 32-bitne sisteme (tj. 256 adresa adrese, iako zapravo manje), a za x64 - ofset je već 28-bitni. Za x64 postoji sasvim dovoljno opcija, ali za 32-bitne sisteme, uključujući Android, to danas očigledno nije dovoljno. Već su poznati eksploati koji mogu pokupiti adresu. Kao rezultat potrage za rješenjem problema, napisana je zakrpa koja vam omogućava da postavite više slučajnosti za ASLR, putem /proc/sys/vm/mmap_rnd_bits i /proc/sys/vm/mmap_rnd_compat_bits (na x64 sistemima za x86 procese). Za svaku arhitekturu navedene su minimalne i maksimalne vrijednosti, uzimajući u obzir raspoloživi adresni prostor. Za x86, vrijednost može biti u rasponu od 8 do 16 bita, ili 28 do 32 (za verziju x64). Zadane opcije se mogu postaviti prilikom izgradnje kernela.
Konfigurisanje ASLR-a u novom kernelu Proširene mogućnosti DRM drajvera za NVIDIA (Nouveau) i Intel video kartice (podrška za buduću generaciju Kaby Lake čipova), dodata je podrška za nove zvučne kartice, USB kontrolere i kripto akceleratore. Proizvođači grafičkih kartica Intel i NVIDIA odavno su napustili upotrebu UMS-a (Userspace Mode Setting) u svojim drajverima otvorenog koda u korist KMS-a (Kernel Mode Setting), sada je na redu ATI Radeon drajver, koji je uklonio kod za UMS režim. Od verzije 3.9 bilo je moguće to omogućiti pomoću parametra DRM_RADEON_UMS ili postavljanjem radeon.modeset=0 u GRUB-u. Sada ostaje samo KMS (Kernel Mode Setting). Ovo se mora uzeti u obzir ako trebate koristiti starije drajvere ili UMS način rada (UMS ponekad pokazuje bolje performanse). Dodata eksperimentalna podrška za PowerPlay tehnologiju dinamičkog upravljanja napajanjem AMDGPU drajveru da bi se poboljšale performanse GPU-a za Tonga i Fiji GPU i integrisane Carrizo i Stoney. U PowerPlay režimu, GPU se pokreće u režimu niske potrošnje, ali ako se poveća opterećenje grafičkog podsistema, automatski povećava frekvenciju. Po defaultu, PowerPlay je onemogućen; da biste ga omogućili, proslijedite parametar amdgpu.powerplay=1 kernelu. Nova verzija API-ja Media kontrolera proširuje podršku za Video4Linux uređaje i omogućava vam da koristite funkcionalnost multimedijalnog kontrolera u drugim podsistemima kao što su DVB, ALSA i IIO. KVM (Virtuelna mašina zasnovana na kernelu) je učinila mnogo da podrži arhitekturu s390 (sada može da koristi do 248 vCPU-a), ARM/ARM64 i poboljša x86 performanse u Hyper-V-u.

Instalacija kernela 4.5 u Ubuntu

Najlakši način da se upoznate sa novim kernelom je da koristite build iz Ubuntu Kernel tima. Nakon opsežnog testiranja, novi kernel završava u ppa:canonical-kernel-team/ppa, ali za to obično treba vremena. $ wget -c 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/main /v4.5-wily/linux-image-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb $ sudo dpkg -i linux*.deb Možemo raditi nakon ponovnog pokretanja.

ARM podrška

ARM računari se koriste kao mini serveri za određene zadatke ili kao kontroleri automatizacije, što ih čini veoma popularnim i traženim. Linux ARM zajednica je postala jedna od najaktivnijih u proteklih pet godina, radeći ogroman posao na podršci 32-bitnim ARM platformama, koje zauzimaju značajan udio na tržištu, a ovaj posao je generalno završen izdavanjem 4.5 grana. Ranije je za svaki ARM uređaj bilo potrebno izgraditi vlastito jezgro, pružajući podršku samo za određene uređaje. Ali problem je u tome što su uređaji postali složeniji, postalo je moguće promijeniti konfiguraciju, a sami korisnici na ARM uređajima htjeli su koristiti redovne distribucije bez nepotrebnih pokreta. Ali na kraju smo imali nekoliko stotina opcija za izgradnju kernela, što otežava korištenje Linuxa. Kao rezultat čišćenja i refaktoriranja velike količine koda, postalo je moguće uključiti kod za podršku ARMv6 i ARMv7 u kernel, odnosno sada možemo izgraditi univerzalni kernel koji se može pokrenuti na oba sistema. Ovdje se, vjerovatno, treba prisjetiti nedavno promovirane specifikacije Device Tree, koja je nastala kao dio razvoja otvorenog firmvera. Device Tree vam omogućava da konfigurišete hardver prilikom pokretanja koristeći posebne dts fajlove pohranjene u /boot/dtbs i promenite postavke bez ponovne izgradnje kernela. Upotreba stabla uređaja postaje obavezna za sve nove ARM razvoje, a ne samo za uređaje. Sve ovo zajedno daje sigurnost da se Linux distribucije u budućnosti mogu bezbedno pokretati na bilo kom ARM uređaju. Paralelno, Greg Kroah-Hartman iz Linux fondacije objavio je zakrpu koja implementira sličnu funkciju za rane verzije kernela. U arch/arm64 nalazimo kod koji pruža podršku za novu 64-bitnu ARM arhitekturu (ARMv8). Dodane su nove funkcije za sve popularne ARM arhitekture - Allwinner, Amlogic, Samsung, Qualcomm i podrška za nove ARM ploče različitih programera.

Sistemske usluge

Za pristup podacima firmvera UEFI (Unified Extensible Firmware Interface) u Linuxu koristi se poseban efivars sistem pseudo-datoteka (koji se može konfigurirati pomoću EFIVAR_FS) koji se montira u /sys/firmware/efi/efivars. U nekim implementacijama, prilikom izvršavanja naredbe rm -rf /*, sadržaj ovog direktorija je također obrisan, što je dovelo do uništenja firmvera. Kompanije - programeri uređaja to ne smatraju ozbiljnim nedostatkom, jer situacija, naravno, nije najčešća, i malo je vjerovatno da bi bilo koji korisnik pomislio da to provjeri. Ipak, postoji problem, a pisci virusa zaista mogu iskoristiti ovu priliku. Kernel 4.5 sada dodaje posebnu zaštitu direktoriju /sys/firmware/efi/efivars kako bi se spriječilo brisanje datoteka unutar njega.

I dalje dostupno samo članovima

Opcija 1. Pridružite se zajednici "site" da pročitate sve materijale na stranici

Članstvo u zajednici tokom navedenog perioda će vam omogućiti pristup SVIM Hakerskim materijalima, povećati vaš lični kumulativni popust i omogućiti vam da sakupite profesionalnu ocjenu Xakep Score!

Core(engleski) kernel) je oko čega je izgrađeno sve ostalo. To je ono što se zove Linux. Sada se riječju Linux u svakodnevnom životu naziva operativni sistem izgrađen na njemu, iako se na dobar način zove GNU/Linux (Linuks jezgro i softver iz GNU projekta, koji je u razvoju već dugi niz decenija).

Ubuntu koristi kernel sa velikim brojem zakrpa, od kojih neke dodaju nestabilne i eksperimentalne karakteristike.

Svako izdanje Ubuntua ima svoju verziju kernela. LTS izdanja od 10.04 su mogla nadograditi kernel na verzije uključene u novija izdanja.

Ubuntu verzijaVerzija kernela
4.10 2.6.9
5.04 2.6.11
5.10 2.6.13
6.06LTS 2.6.15
6.10 2.6.18
7.04 2.6.19
7.10 2.6.20
8.04LTS 2.6.24
8.10 2.6.27
9.04 2.6.28
9.10 2.6.31
10.04LTS 2.6.32
10.10 2.6.35
11.04 2.6.38
11.10 3.0.4
12.04LTS 3.2
12.10 3.5
13.04 3.8
13.10 3.11
14.04LTS 3.13
14.10 3.16
15.04 3.19

viljuške

Broj verzija Ubuntu kernela i na web stranici kernel.org se ne poklapaju, budući da programeri iz Canonical-a dodaju mikro verziju kako bi označili dodane zakrpe. Na primjer, verzija 3.2.0-23 bi značila da je kernel baziran na grani 3.2, koja ima 23 zakrpe.

Sljedeće vrste kernela su podržane u Ubuntu spremištu:

generic-pae kernel dozvoljava 32-bitnom sistemu da koristi do 64 GB ukupne RAM-a, izdvajajući ne više od 4 GB za potrebe određenog procesa, dok jednostavno generičko kernel radi sa ne više od 4 GB RAM-a.

64-bitni kernel omogućava adresiranje do 1TB memorije koju troše procesi.

Ako trebate ažurirati kernel na noviju glavnu verziju (obično je to zbog činjenice da nove verzije dodaju podršku za novi hardver, eliminišu regresije), možete koristiti službeno podržanu arhivu http://kernel.ubuntu.com/ ~kernel-ppa/mainline/ .

Prevođenje kernela

Izgradnja kernela iz izvora zahtijeva određene vještine i znanja o tome kako OS radi.

Prije nego počnete graditi kernel, morate instalirati sljedeće pakete:

Fakeroot ncurses-dev libssl-dev, osnovni za izgradnju

Sve dalje radnje se moraju izvršiti u ime superkorisnika:

sudo su

Dobivanje izvornog koda

Izvorni kod za kernel koji koristi Ubuntu može se dobiti instaliranjem linux-source paketa:

apt-get install linux izvor

Nakon instalacije u direktoriju /usr/src postojaće arhiva pod nazivom linux-source-verify_kernels.tar.bz2.

Također možete preuzeti arhivu sa izvornim kodom kernela sa stranice kernel.org.

Prilikom preuzimanja kernela sa kernel.org stranice, morat ćete primijeniti zakrpe na njega

Konfiguracija

Raspakirajte rezultirajuću arhivu i, radi praktičnosti, kreirajte simboličku vezu do rezultirajućeg direktorija:

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

Da biste pojednostavili proces konfiguracije kernela, možete kopirati postavke trenutnog.

Imate pitanja?

Prijavite grešku u kucanju

Tekst za slanje našim urednicima: