Portál AbcLinuxu, 13. května 2025 22:47

Dotaz: Kompilace kernelu po xxxté

3.7.2008 20:46 ForrestG | skóre: 3
Kompilace kernelu po xxxté
Přečteno: 703×
Odpovědět | Admin
Dobrý den, vážená linuxová komunito.

Při kompilaci kernelu postupuji takto. 1)Stáhnu jádro například 2.6.25 z kernel.org 2)Rozbalím ho do /usr/src, takže mám /usr/src/linux-2.6.25 3)Vlezu do toho adresáře smazu případné soubory co tam nemají být příkazem make mrproper 4)Nakonfiguruju jádro make menuconfig nebo protože mám gnome tak make gconfig 5)Kompiluju make

Tak a ted k problému. Nevím přesně co všechno se provede při kompilaci. Je mi jasné, že se skompiluje jádro, ale nevím kam a ani jak se jmenuje?

A druhý problém jsou knihovny. Nemám v tom moc jasno. Knihovny jsou nutné pro ostatní aplikace, ale pro samotné jádro ne, je to tak? Takže když po kompilaci veznu jádro a použiji ho například pro livecd tak by mělo fungovat?

Snažím se co nejrychleji proniknout do linuxu a tak jsem si jako první cíl stanovil vytvořit systém, který nabootoje z cd a pustí bashe. Přečetl jsem kde co, ale stále v tomto nemám jasno. Děkuji všem
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

tomas789 avatar 3.7.2008 21:47 tomas789 | skóre: 15 | blog: big_blog | Litomyšl
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pokud použiješ pouze příkaz make, tak nezkompiluješ moduly. Musíš použít například make && make modules_install. Jádro potom můžeš zkopírovat do adresáře /boot nějak takto: cp arch/i386/boot/bzImage /boot/kernel-2.6.24-gentoo-r5. Osobně používám make bzImage && make modules && make modules_install && make install. Toto ti zkompiluje jak kernel, tak moduly a kernel rovnou zkopíruje do /boot, kde ho najdeš jako vmlinuz (pokud už tam nějaký vmlinuz byl, tak ho to přejmenuje na vmlinuz.old). Je to i jednodužší pokud častěji kompiluješ jádro, tak do boot loaderu stačí napsat něco jako kernel /boot/vmlinuz a při příští kompilaci už se nemusíš o nic starat. Stačí pouze reboot.

Pokud takto zkompilované jádro použiješ do livecd, tak to samozřejmě bude fungovat, avšak je to složitější. U livecd musíš dosáhnout podpory co nejvíce železa, ale pokud by jsi to všechno naházel do jádra, tak by bylo velké a značně neohrabané. Tam se to řeší tak, že základ se dá do jádra a zbytek (a že toho je hodně) se zkompiluje jako moduly, které se při startu livecd dynamicky zavádí v závislosti na hardwarové konfiguraci PC. Asi bych ti doporučil strčit do šuplíku (CD-ROMky) nějakou live distribuci a sledovat logy při inicializaci. Z těch se dozvíš hodně

Začínal jsem z ničeho a většinu z toho pořád mám.
Max avatar 4.7.2008 11:29 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Pokud použiješ pouze příkaz make, tak nezkompiluješ moduly. Musíš použít například make && make modules_install

Platí pouze pro jádra < 2.6 ;-). U jádra 2.6 ti příkaz "make" zkompiluje jak jádro, tak moduly.
Zdar Max
Měl jsem sen ... :(
Max avatar 4.7.2008 11:33 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Ad "make modules_install". Tohle moduly nekompiluje, ale jen kopíruje ;-). Příkaz "make && make modules_install" udělá toto :
make - zkompiluje jádro a moduly
make modules_install - zkopíruje moduly do /lib/modules/kernel_version/
Takže pak je ještě potřeba ručně zkopírovat jádro ...
Zdar Max
Měl jsem sen ... :(
vencour avatar 4.7.2008 11:59 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté

Místo ručního kopírování dělam "make install" a pak upravim menu.lst pro grub.

Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
3.7.2008 22:34 Miška | skóre: 31 | Praha
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Odpovědět | | Sbalit | Link | Blokovat | Admin
make zkompiluje kernel a moduly. Pokud mas obycejny PC, tak kernel najdes v arch/x86/bzImage. Moduly je nejjednoduzsi nechat automaticky nainstalovat pomoci make modules_install. Cesta kam se budou instalovat se da zvolit pres nejakou promenou (da se vicist z Makefile), defaultne je nejdes v /lib/modules kde je system hleda ;-)

Knihovny jadro nepotrebuje, ale vetsinou programy co chces spustit (napriklad bash) je potrebujou ;-) Bejt tebou, tak zacnu vytvorenim ramdisku, je to jednoduzsi a stejnak to budes potrebovat pro vytvoreni livecd.
3.7.2008 22:47 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. jadro se po zkompilovani (make bzImage) nachazi v souboru arch/[vase architektura]/boot/bzImage

2. knihovny jsou zalezitost userspace programu, nikoliv jadra (to ma vsechno potrebne v sobe)

3. jak udelat livecd pro svuj pc s bashem: prelozit jadro - v menuconfig si zaskrtate svuj hardware jako Y - tj. ovladac bude primo v jadre, nikoliv jako modul (M). pak vezmete pokud mozno staticky slinkovany bash - stahnout zdrojak a prelozit, staticke slinkovani je jeden z parametru configure. na cd to dostanete pomoci isolinux (viz navod), krom jadra a bashe by na cd mel byt taky rozumne zaplneny /dev. ten bash se muze pro jednoduchost jmenovat /sbin/init, aby se po nabootovani spustil, nebo jej muzete dat normalne do bin a pouzit parametr jadra init=/bin/bash. pokud tam chcete i dalsi utility, doporucuji se kouknout na balik busybox, ktery jde take velmi jednoduse nastavit a prelozit - z toho livecd se pak stane vice mene sobestacny system se zakladnimi funkcemi.

4. pokud to livecd ma mit universalni ovladace, budete muset prikrocit k pomerne slozite operaci s initial ramdiskem a kopou modulu a s nejakymi skripty na detekci hw + nacitani modulu.
In Ada the typical infinite loop would normally be terminated by detonation.
4.7.2008 07:47 ForrestG | skóre: 3
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Děkuji všem. S busyboxem, ramdiskem, isolinuxem uz jsem se setkal jen mi nebyla jasna ta kompilace, ale teď už to stad dam dohromady. Jeste posledni dotaz padlo tady staticke linkovani. Předpokladam že je to něco jako, že se slinkuji knihovny s tou vyslednou binarkou tak, že potom binarka nepotřebuje již žadné externí knihovny, ale za cenu toho že je potom větší. Myslim si to dobře?
4.7.2008 16:07 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Jo. U bash a busybox je to vhodne, u vetsiny ostatnich softwaru ne. Mimochodem, vetsina her (pro billa) se dodava staticky/polostaticky slinkovanych, proto je binarka vzdycky tak macata.
In Ada the typical infinite loop would normally be terminated by detonation.
4.7.2008 08:03 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Odpovědět | | Sbalit | Link | Blokovat | Admin
Snažím se co nejrychleji proniknout do linuxu a tak jsem si jako první cíl stanovil vytvořit systém, který nabootoje z cd a pustí bashe. Přečetl jsem kde co, ale stále v tomto nemám jasno.
Na zbytek snad už odpověděli ostatní. Pokud chcete ale do systému proniknout jako uživatel, není vytváření vlastního LiveCD rozhodně ten nejsnazší ani nejlepší způsob, jak začít. I pokud chcete Linux pochopit jako správce systému, bude daleko lepší začít u nějaké hotové distribuce a začít se učit ji konfigurovat – správa uživatelů, souborových systémů, postupně správa dalších služeb, skripty atd. Váš postup by se hodil, pokud byste chtěl dobře rozumět „vnitřnostem“ systému, mechanizmu, jak se jádro zavádí atd. To ale doporučuji zkoumat až v okamžiku, kdy budete jádro kompilovat bez mrknutí oka.
4.7.2008 16:08 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Kompilace kernelu po xxxté
Ja si myslim ze to poradi poznani je naprosto individualni, napriklad ja jsem take sel cestou nejdriv hacker a pak uzivatel.
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.