Kompilace jádra ve zkratce

Založil Petr Slunský, 01. 02. 2009, 16:30:10

Předchozí téma - Další téma

Petr Slunský

Kam ses nedostal?

Nebo spíše kam ses dostal?
Debian

Erich Stark

Najprv mi neslo sa dostat do priecinku /usr/scr/linux potom som ho zmazal a vytvoril este raz..a neviem co vsetko treba nechat zapnute alebo vypnute je tam toho fakt dost..mozno aj kebyze je to po slovensky si nepomozem :-D
a inak som to skusal skompilovat a do /boot/grub/menu.lst som zapisal title (nazov kernelu) a cestu k nemu..pri bootovani ked som ho vybral ze nenaslo mi cestu
" The box said that I needed to have Windows XP or better ... so I installed Debian ."

Boogey

Po kompilaci musis jeste s nejvetsi pravdepodobnosti vytvorit i prislusny initrd, a to prikazem: mkinitramfs -o /boot/initrd-2.6.X-nazev 2.6.X-nazev
Debian Squeeze 32bit, Kernel 2.6.26-2, (Server)
AMD Duron 700MHz@1Ghz, 640MB ram, GeForce 4 MX 64MB
Apache2, PHP5, Samba, ProFTPd, MySQL, KDE 4.2.2(na testovani)

Petr Slunský

Citace od: Boogey kdy 12. 02. 2009, 20:41:07
Po kompilaci musis jeste s nejvetsi pravdepodobnosti vytvorit i prislusny initrd, a to prikazem: mkinitramfs -o /boot/initrd-2.6.X-nazev 2.6.X-nazev

To určitě ne. Kdyby postupoval návodu, který jsem publikoval, tak by to nepotřeboval (kompiluje se se zapnutým --initrd)

Erich má zatím ale problém se základy práce v konsoli, tak to bude muset ještě párkrát zkusit.
Debian

Erich Stark

Citace od: Spox kdy 13. 02. 2009, 23:27:29
Citace od: Boogey kdy 12. 02. 2009, 20:41:07
Po kompilaci musis jeste s nejvetsi pravdepodobnosti vytvorit i prislusny initrd, a to prikazem: mkinitramfs -o /boot/initrd-2.6.X-nazev 2.6.X-nazev

To určitě ne. Kdyby postupoval návodu, který jsem publikoval, tak by to nepotřeboval (kompiluje se se zapnutým --initrd)

Erich má zatím ale problém se základy práce v konsoli, tak to bude muset ještě párkrát zkusit.

holt mam smolu...Musim sa viac ucit..precitat co najviac podrobnych navodou..ako spravit vsetko za sebou, mozno u niekoho su medziriadky samozrejme ale ja to bohuzial neviem :)..staci mi jeden taky navod..spravim to raz,dva,tri krat a uz to pojde od ruky :)
" The box said that I needed to have Windows XP or better ... so I installed Debian ."

Boogey

Neboj, to zvladns v pohode. Kuprikladu ja jsem vcera po docela dlouhym experimentovani dokazal nabootovat i bez initrd a pochopil, jak to funguje :D Je potreba si o tom jen neco precist nebo se poptat a taky venovat tomu nejakej cas. Postupne to pujde bez problemu.
Debian Squeeze 32bit, Kernel 2.6.26-2, (Server)
AMD Duron 700MHz@1Ghz, 640MB ram, GeForce 4 MX 64MB
Apache2, PHP5, Samba, ProFTPd, MySQL, KDE 4.2.2(na testovani)

Erich Stark

Citace od: Boogey kdy 15. 02. 2009, 00:22:43
Neboj, to zvladns v pohode. Kuprikladu ja jsem vcera po docela dlouhym experimentovani dokazal nabootovat i bez initrd a pochopil, jak to funguje :D Je potreba si o tom jen neco precist nebo se poptat a taky venovat tomu nejakej cas. Postupne to pujde bez problemu.

No sak o to ide :-D
Len najhorsie je pochopit niektore veci ci ich zaskrknut v configuracii jadra alebo nie..pravdaze co je to filesystem to viem ale tak vseobecne ostatne :-D
Pocul som ze sa to da aj tak nejak ze pouzijem old config teda ten ktory je aktualny pouzity v systeme a len si tam pridam support mojej wifi karty :)
Ale uz som videl aj viac navodov. napr jeden taky ze sa to skompilovalo a dalo tusim do /boot/... a dalsi taky ze som z toho vsetkeho mal len .deb balicek a to nainstaloval.Aky je medzi tym rozdiel? Asi by mi viac vyhovovalo ten deb balicek pretoze ten si zalohujem a az by sa stalo nieco zo systemom nemusim kompilovat znova ale ho len nainstalujem :)
" The box said that I needed to have Windows XP or better ... so I installed Debian ."

Boogey

#22
Muzu ti napsat postup, kterym to delam ja:

1) Stahnout jadro
Nejnovejsi vanilka:
http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.tar.bz2

2) Rozbalit
Osvedcilo se mi do: /usr/src/
a tam by to melo vytvorit adresar linux-VERZE - tento adresar jiz obsahuje archiv

3) Vyuziti konfigurace aktualniho jadra
v /boot/ je soubor config-VERZE tak ten nakopiruj do rozbalenyho adresare s kernelem pod nazvem .config, cili bez cisla verze a s teckou na zacatku
pokud jedes presne podle navodu, tak: /usr/src/linux-VERZE/.config 

4) Nastaveni kernelu dle potreb:
spustit terminal, nastavit akrualni adresar na /usr/src/linux-VERZE
make menuconfig nebo make xconfig popripade pro gnome make gconfig - je jedno, co pouzije, funguje to obdobne

5) Kompilace kernelu
make -j 3
a cekat, cekat, cekat :D

6) Instalace kernelu do /boot
make install

7) Instalace modulu do /lib/modules/VERZE
make modules_install

8) Pokud pouzivas initrd, tak:
update-initramfs -c -k VERZE

9) Update grubu
update-grub

10) Restart a modlit se :D

Poznamky:
Pokud u menu x/gconfig bude nejaky problem, tak pouzij menuconfig a nebo www.google.cz ;)

Vsechny operace je treba delat jako root.

textem VERZE je mysleno napriklad: 2.6.28.5-mujkernel
Zalezi taky, jak jste to nastavili v configu.
Debian Squeeze 32bit, Kernel 2.6.26-2, (Server)
AMD Duron 700MHz@1Ghz, 640MB ram, GeForce 4 MX 64MB
Apache2, PHP5, Samba, ProFTPd, MySQL, KDE 4.2.2(na testovani)

Petr Slunský

Citace od: Erich Stark kdy 15. 02. 2009, 11:15:07
Citace od: Boogey kdy 15. 02. 2009, 00:22:43
Neboj, to zvladns v pohode. Kuprikladu ja jsem vcera po docela dlouhym experimentovani dokazal nabootovat i bez initrd a pochopil, jak to funguje :D Je potreba si o tom jen neco precist nebo se poptat a taky venovat tomu nejakej cas. Postupne to pujde bez problemu.

No sak o to ide :-D
Len najhorsie je pochopit niektore veci ci ich zaskrknut v configuracii jadra alebo nie..pravdaze co je to filesystem to viem ale tak vseobecne ostatne :-D
Pocul som ze sa to da aj tak nejak ze pouzijem old config teda ten ktory je aktualny pouzity v systeme a len si tam pridam support mojej wifi karty :)
Ale uz som videl aj viac navodov. napr jeden taky ze sa to skompilovalo a dalo tusim do /boot/... a dalsi taky ze som z toho vsetkeho mal len .deb balicek a to nainstaloval.Aky je medzi tym rozdiel? Asi by mi viac vyhovovalo ten deb balicek pretoze ten si zalohujem a az by sa stalo nieco zo systemom nemusim kompilovat znova ale ho len nainstalujem :)

:) když budeš postupovat podle návodu, který jsem publikoval, tak budeš mít i .config zkopírovaný, jak o tom píšeš...

Pokud se ti nelíbí můj návod (který funguje 100%), nebo návod od Boogeyho, tak zkus třeba tento:

http://forum.ubuntu.cz/index.php/topic,25304.0.html
Debian

Petr

Citace od: Spox kdy 01. 02. 2009, 16:30:10
fakeroot make-kpkg --append-to-version "<-suffix>" --revision "<revision#>" --us --uc --initrd kernel_image kernel_headers

Nejsem v tom zatím nějak moc zběhlej a tento řádek mi není moc jasný, teda spíše "suffix". Díky za radu. :)
Nic není zadarmo a vše souvisí se vším.

Erich Stark

#25
Citace od: Petr kdy 15. 02. 2009, 22:26:37
Citace od: Spox kdy 01. 02. 2009, 16:30:10
fakeroot make-kpkg --append-to-version "<-suffix>" --revision "<revision#>" --us --uc --initrd kernel_image kernel_headers

Nejsem v tom zatím nějak moc zběhlej a tento řádek mi není moc jasný, teda spíše "suffix". Díky za radu. :)

ja som to zadal ako

sudo make-kpkg --initrd --stem linux --revision=1.0 kernel_image kernel_headers

A zatial sa mi to kompiluje  ::)


EDIT: Tak uspesne som nabehol do noveho kernelu ale neni som az tak spokojny ako boli moje ocakavania..je to evidentne pomalsie..tak rozmyslam ze ostanem na tom starom.
" The box said that I needed to have Windows XP or better ... so I installed Debian ."

Petr Slunský

Citace od: Petr kdy 15. 02. 2009, 22:26:37
Citace od: Spox kdy 01. 02. 2009, 16:30:10
fakeroot make-kpkg --append-to-version "<-suffix>" --revision "<revision#>" --us --uc --initrd kernel_image kernel_headers

Nejsem v tom zatím nějak moc zběhlej a tento řádek mi není moc jasný, teda spíše "suffix". Díky za radu. :)
DOplním tedy v příkladu:

fakeroot make-kpkg --append-to-version -spox --revision 01 --us --uc --initrd kernel_image kernel_headers

pro bližší vysvětlení jednotlivých opšnů prosím koukni do man make-kpkg
Debian

Roman Horník

Krásnej návod, ale nějak se mi to nepovedlo. Ze stejnýho serveru jsem stáhnul kernel 2.6.32 a na něj patch (bzcat /usr/src/patch-2.6.32.bz2 | patch -p1 -E -t), konfigurace se mi pravděpodobně povedla, ale během kompilace na mne vyskočila chyba, že ve dvou souborech jsou nějaký duplicitní definice, což se mi povedlo opravit, ale s další chybou si nevím rady:
  CC      kernel/trace/trace_output.o
kernel/trace/trace_output.c: In function 'seq_print_userip_objs':
kernel/trace/trace_output.c:416: error: 'const struct userstack_entry' has no member named 'tgid'
kernel/trace/trace_output.c: In function 'trace_print_lat_fmt':
kernel/trace/trace_output.c:503: error: 'struct trace_entry' has no member named 'lock_depth'
kernel/trace/trace_output.c:506: error: 'struct trace_entry' has no member named 'lock_depth'
make[3]: *** [kernel/trace/trace_output.o] Error 1
make[2]: *** [kernel/trace] Error 2
make[1]: *** [kernel] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.32.666'
make: *** [debian/stamp/build/kernel] Error 2


trace_output.c, řádky 409-420 (jakási chyba na ř. 416):
if (trace_flags & TRACE_ITER_SYM_USEROBJ) {
struct task_struct *task;
/*
* we do the lookup on the thread group leader,
* since individual threads might have already quit!
*/
rcu_read_lock();
task = find_task_by_vpid(entry->tgid);
if (task)
mm = get_task_mm(task);
rcu_read_unlock();
}


Ten samej soubor, řádky 477-507 (jakási chyba na ř. 503, 506):
int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry)
{
int hardirq, softirq;
int ret;

hardirq = entry->flags & TRACE_FLAG_HARDIRQ;
softirq = entry->flags & TRACE_FLAG_SOFTIRQ;

if (!trace_seq_printf(s, "%c%c%c",
      (entry->flags & TRACE_FLAG_IRQS_OFF) ? 'd' :
(entry->flags & TRACE_FLAG_IRQS_NOSUPPORT) ?
  'X' : '.',
      (entry->flags & TRACE_FLAG_NEED_RESCHED) ?
'N' : '.',
      (hardirq && softirq) ? 'H' :
hardirq ? 'h' : softirq ? 's' : '.'))
return 0;

if (entry->preempt_count)
ret = trace_seq_printf(s, "%x", entry->preempt_count);
else
ret = trace_seq_putc(s, '.');

if (!ret)
return 0;

if (entry->lock_depth < 0)
return trace_seq_putc(s, '.');

return trace_seq_printf(s, "%d", entry->lock_depth);
}


Google nic relevantního neví, já se v céčku nevyznám, nesetkal se s tím někdo?
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Roman Horník

Jo tak už to vypadá dobře... až na mrtě duplicitních definicí, ale s tím se po(p|s)eru ;)
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Ota Trkola

Z kompilace kernelu jsem vyléčenej, několikrát jsem to zkoušel a ani jednou se mi to nepovedlo, jen jsem si nadělal chlívek, kterej sem musel odstraňovat.