****************************** * KONFIGURACE a KOMPILACE * * LINUX KERNELU * * navod * ****************************** Datum: 2.11.2003 LP Zdroj: http://joe.cz/newbie-kernel.html Jadro: asi verze 2.4.? (nazveme ho , dosadte si vlastni) Viz tez (en): http://www.skybuilders.com/products/network/HowToKernel.html - kratky prehled * POUZITE ZNACENI verze zdrojoveho kodu jadra, ktery chcete kompilovat (neco jako 2.4.21) zde zalezi na nastaveni v Makefile; pokud jej nemenite, je totozne s , jinak tam je na konec jeste pridana hodnota prom. EXTRAVERSION (doporuceno) // oznacuje pocatek meho komentare (kdo uhodne v cem programuju? :-) $ oznacuje zacatek prikazu pro bash/jiny shell (za vysledek pak nerucim) * ZACINAME -------------- 0.Zjistete si, jaky hardware (HW) mate: v linuxu prikazy lspci a cpuinfo (?), ve Windows (Woknech) kdesi v ovladacich panelech a Tento PC->Vlastnosti, dale viz BIOS. 1.Vlezte do adresare obsahujiciho zdrojove kody kernely (napr. /usr/src/kernel-source-/). $ cd 2. ------------------------- - KONFIGURACE ---------------------------------------------------------------- ------------------------- Spustte$ make menuconfig //nebo xconfig mate-li funkcni grafiku //Spusti se textove menu pro konfiguraci jadra: ************************************************************************* Prompt for development and/or incomplete code/drivers - NE //ale viz nize o USB sitovce Prompt for development and/or incomplete code/drivers: 1. a 3. polozka ANO Processor type and features ---> predpokladam athlon/duron/k7 //Dotycny ma Athlon XP 2000+ [*] Machine Check Exception /dev/cpu/*/msr - Model-specific register support /dev/cpu/*/cpuid - CPU information support [*] MTRR (Memory Type Range Register) support [*] Local APIC support on uniprocessors (NEW) [*] IO-APIC support on uniprocessors [ ] Symmetric multi-processing support [ ] Unsynced TSC support; to posledni neni potreba general setup [*] Networking support [*] Networking support [*] PCI support (Any) PCI access mode [*] ISA bus support [*] PCI device name database ( tohle prirazuje k PCI id) [ ] EISA support (kdyz ne v PC) [ ] MCA support microchnnel taky ne [*] Support for hot-pluggable devices (tohle si tam nech kdybys nekdy rozehaval lm_sensors) PCMCIA/CardBus support ---> < > PCMCIA/CardBus support exit < > Kernel support for a.out binaries <*> Kernel support for MISC binaries to posledni vyho < >; sice to umi takovy cool veci jako kdyz spustis EXE ze i to pusti dosemu powermanagemnt +pod linuxem jsou dve moznosti bud ACPI coz asi funguje jenom obcas, nebo APM coz funguje casteji :) [*] Power Management support <*> Advanced Power Management BIOS support (acpi tam muzes dat az to nabootuje) zbytek nech, exit; < > Parallel port support kdyby to nekdo nekdy prrines tiskarnu akorat spustis make menuconfig cvalknes tam a to ostani napises make modules; make modules_install; modprobe parport; a maz podporu pro par prt bez rebbootu :) Co je MTD? - memeory technology devices - ruzny flash karty tak, ale ne ty do USB..., myslim ze se pres tohle da flashovat o BIOS Plug and Play configuration ---> z tohohle podmenu vyhod vsechno pokud nemas ISA (pokud bys mel ISAmusel bys tam nechat veci z hvezdickou) Block devices ---> Normal floppy disk support Loopback device support (pripadne Cryptoloop support), zbytek nech prazdny (loopback funguje tak ze ti ze souboru na disku dovoli udelat blokovy zarizeni na kterm muzes udelat souborovej system treba; tj je to dobry na to aby si *.iso nemusel vypalobvat na CD kdyz se chces podivat na nejaky soubor co tam je - viz man losetup) Multi-device support (RAID and LVM) ---> [ ] Multiple devices driver support (RAID and LVM) //(LVM je logical volume manager, umi udelat 1 partition na vice discich) Networking options ---> [*] Network packet filtering (replaces ipchains) //=> lze si konfig. firewall, tj. iptables [*] Socket Filtering (tohle je potreba kvuli DHCP) // to prvni nechat <*> Packet socket <*> Unix domain sockets [*] TCP/IP networking [*] IP: multicasting IP: Netfilter Configuration ---> Connection tracking (required for masq/NAT) (NEW) FTP protocol support (NEW) IRC protocol support (NEW) IP tables support (required for filtering/masq/NAT) (NEW) Packet type match support (NEW) Connection state match support (NEW) Connection tracking match support (NEW) Packet filtering (NEW) < > Full NAT (NEW) tohle je na NAT prekvapive REJECT target support (NEW) ? (to nemusis ale muzes; "je to k fw"?? ) exit Telephony Support ---> nic ATA/IDE/MFM/RLL support ---> Pro vypalovacku: <*> ATA/IDE/MFM/RLL support (mam-li IDE disk, musi byt v jadre - jinak jadro nebude mit k disku pristup, ani k tomu, aby si z nej nahralo modul pro jeho zpristupneni) IDE, ATA and ATAPI Block devices ---> <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support //nechat <*> Include IDE/ATA-2 DISK support [*] Use multi-mode by default [ ] Auto-Geometry Resizing support to ne (jen pro starsi BIOS) Include IDE/ATAPI CDROM support SCSI emulation support //tohle je kvuli tomu ze vypalovacka ackoliv je IDEATAPIje vlastne SCSI, takze se po IDE budou dat posilat SCSI prikazy [*] CMD640 chipset bugfix/support tohle muzes [ ] //??? [*] PCI IDE chipset support [*] Sharing PCI IDE interrupts support [*] Generic PCI bus-master DMA support [*] Use PCI DMA by default when available Dole je seznam chipsetu (viz info o motherboardu/ zakl. desce, lze zjistit prikazem linuxu lspci) <*> "chipset ktery mate" exit; exit //do zakl. nabidky SCSI support ---> SCSI CD-ROM support SCSI generic support SCSI support SCSI disk support tohle posledni se hodi pokud mas disk SCSI ale pokud mas treba k fotaku kartu tak taky (pres usb) SCSI low-level drivers ---> udtamtud vyhod vsechno; nekde v pulce tam bude vybranej jeden radic PCMCIA SCSI adapter support ---> (tohle bys tam mysim uz nemel mit) exit do zakl. nabidky (ten zbytek mam nechat? - jako [*] Verbose SCSI error reporting (kernel size +=12K), probe foe extra luns atd - ANO, nechat) Fusion MPT device support ---> tohle nic I2O device support ---> nic Network device support ---> semhle vlez ARCnet devices ---> nic Dummy net driver support Ethernet (10 or 100Mbit) ---> [*] EISA, VLB, PCI and on board controllers RealTek RTL-8139 PCI Fast Ethernet Adapter support //(mas-li ho) < > EtherExpressPro/100 support (eepro100, original Becker driver //zrusit, je-li zaskrtnuto exit do zakl. menu Amateur Radio support ---> tohle to je packet radio... takze taky ne IrDA (infrared) support ---> pokud mas (pouzivanou) irdu tak sem...., jinak vyhodit IrDA subsystem support; asi IrLAN protocol (NEW) , IrCOMM protocol (NEW), [ ] Ultra (connectionless) protocol (NEW), tohle nevim ale podle napovedyu tio neni potreba: [ ] Cache last LSAP (NEW), [*] Fast RRs (low latency) (NEW), pak se presun do low-level drivers: IrTTY (uses Linux serial driver) (NEW), IrPORT (IrDA serial driver) (NEW) ISDN subsystem ---> asi ne Old CD-ROM drivers (not SCSI, not IDE) ---> tohle asi ne to je na CDROM co byly pripojeny pres soundblaster **** podpora pro framebuffer (pokud jej chcete, fakt neni nutne) Console drivers ---> [*] VGA text console [*] Video mode selection support Frame-buffer support ---> [*] Support for frame buffer devices (EXPERIMENTAL) (NEW) [*] VESA VGA graphics console (NEW) ... [*] Select compiled-in fonts (NEW); mozna 8x16 bude stacit ****/end **************************** Input core support ---> sem vlez (Pro klavesnici v PS/2 - dnes nejobvyklejsi ?) Mouse support Event interface support zpet do hl. menu Character devices ---> sem vlez [*] Virtual terminal x[*] Support for console on virtual terminal Standard/generic (8250/16550 and compatible UARTs) serial supportx [*] Unix98 PTY support I2C support ---> tohle je na sbernici i2c az budes konfigurovat lm_sensors tak to mozna budes potrebovat ted to vyskrtni Mice ---> pokracuj tady (tady je to relevntni pokud mas tiuchpad nebo p2~s2 mys; takze asi nic) xWatchdog Cards ---> nic ? takze ps/2 mys nechat? - to zalezi jestli ji mas nebo ne..., dyz nemas tak to tam nedavej <*> Mouse Support (not serial and bus mice) [*] PS/2 mouse (aka "auxiliary device") support // casto /dev/psaux Enhanced Real Time Clock Support /dev/agpgart (AGP Support) // Advanced Graphics P... // pro lidi s chipsetem SiS: [*] Generic SiS support [ ] Direct Rendering Manager (XFree86 DRI support) //tohle asi ne na to mas nvidii (graficka karta) pokud mas winmodem, tak uplne dole < > ACP Modem (Mwave) support Do hl. nabidky. Multimedia devices ---> jenom pokud mas grabovaci kartu File systems ---> <*> Kernel automounter version 4 support (also supports v3) //?? pripojeni/odpojeni CD aj automaticky? <*> Ext3 journalling file system support DOS FAT fs support VFAT (Windows-95) fs support // tez NTFS support, mate-li Win NT, 2000 ci XP s jejich zakl. FS NTFS [*] Virtual memory file system support (former shm fs) ISO 9660 CDROM file system support // souborovy system uzivany na vypalovanych CD [*] Microsoft Joliet CDROM extensions // nezbytne ke cteni a psani ISO9660 CD vypalenych ve MS Woknech [*] Transparent decompression extension tohle umozni transparente dokompromovat data z CD neco jako doublespace (prochazeni zkomprimovaneho CD aniz by jste to vubec zaznamenali) [*] /proc file system support [*] /dev/pts file system for Unix98 PTYs <*> Second extended fs support // soub. system ext2, starsi zakladni linuxovy Chcete-li sambu: Network File Systems ---> SMB file system support (to mount Windows shares etc.) [ ] Use a default NLS (NEW) //(tohle je kvuli cestine, stim si asi pohrajeme az potom) mozna tady nastav cp1250 (kodovani cestiny napr. ve Win95/98/NT nfs vyhodit, nechcete-li pouzivat Partition Types ---> asi nechat Native Language Support ---> Default NLS Option: "iso8859-2" (NEW) x Codepage 850 (Europe) (NEW) 852 // codepage uzivana v MS DOS? CP1250 NLS ISO 8859-1 (Latin 1; Western European Languages) (NEW) totez pro ... 8859-2 totez pro ... 8859-15 totez pro UTF8 // vsecko jako moduly Zpet do hl. menu Sound ---> tady vyhodit (protoze mas ALSU a v tomhle kerneu neni jeste; ALSA je zvukovy server, novejsi nez OSS, ktery umi emulovat, bude soucvasti jader 2.6.x) // pak se ukazalo, ze musi zaskrtnout " Sound card support" a ostatni dat pry, bo nefungovala zvukovka. A mozna tex "x OSS sound modules", nekdo ale tvrdil, ze to neni nutne. USB support ---> //Dotycny clovek mel USB mys Support for USB OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support < > USB Mass Storage support //tohle dej pokud mas fotak s compact falsh USB Human Interface Device (full HID) support x[*] HID input layer support USB HIDBP Mouse (basic) support //mate-li USB mys? < > USB Modem (CDC ACM) support //mate-li USB modem? x< > UHCI Alternate Driver (JE) support //pro podporu USB sitovky viz puvodni zaznam rozhovoru // Pokud mate "x--- USB Network adaptors" prazdne, tak: // Code maturity level options ---> // [*] Prompt for development and/or incomplete code/drivers //zapnout! // Pak se objevi neco jako: // x--- USB Network adaptors // x USB Communication Class Ethernet device support (EXPERIMENTAL) [*] Preliminary USB device filesystem Bluetooth support ---> asi nic Kernel hacking ---> sem vlez [*] Kernel debugging [*] Magic SysRq key (NEW) // kdyz se zhrouti system, zkuste Ctrl-PrintScreen|SysReq (vpravo od F12)-F1, v lepsim pripade se vam objevi nouzove menu umoznujici napriklad bootovat. [ ] Morse code panics (NEW) tohle tam asi ani nemas :) (Linux Kernel v2.4.21-pre5-ac1 tohle je totiz jadro co mam ja :)) exit Exit z main menu, zvolit SAVE jinak se konfigurace neulozi!; vytvori se soubor .config s danou konfiguraci ************************************************************************************** ************************************************************************************** ************************************************************************************** ************************************************************************************** 3. ------------------------- - KOMPILACE ---------------------------------------------------------------- ------------------------- 3.0 Potrebujete spravnou verzi kompilatoru gcc, pritom rozhodne neplati nejnovejsi=nejlepsi, neb vyvojari uzivaji vyzkouseny, stabilni a s tim byste to meli i vy kompilovat, jinak pak muzete dostat zahadne nefunkcni jadro. Ted existuje gcc 3.3, ale pro Debian je treba 2.95 a Mandrake ci RedHat 2.96 (coz se v budoucnu urcite zmeni, ze). Overit uzitou verzi gcc: "$ gcc -v" . Pokud je nevyhovujici, lze bud upravit symlink /bin/gcc (pravdepodobne, zkuste "which gcc") at ukazuje na potrebnou verzi (mate-li ji uz nainstalovanou), nebo pred kompilaci (pro Debiana) "$ export CC=gcc-2.95" a pak musite vsude kde mam napsano "make" psat "make -e" a on pouzije 2.95 (uvidite na zacatku vypisu po spusteni make). //3.1 Upravte Makefile: //Na jeho zacatku jsou ruzne promene zaznamenavajici verzi jadra, posledni z nich // se jmenuje, myslim, EXTRAVERSION a je prazdna; nastavte ji na neco (treba "EXTRAVERSION=mujpokus1") // at si sve jadro poznate a at neprijdete o dosavadni moduly - viz nize Spustte$ make dep //je zapotrebi jen jednou pro danou configuraci/jadro(?), vygeneruje ruzne soubory, napr. modversions.h nezbytny pro kompilaci sitoveho a audio driveru od NVIDIA (ale ten audio lze nahradit jakymsi intel8x1 ci tak nejak) //nebo make -e dep, viz vyse bod 3.0 //Nasledujici krok se muze lisit u distribuci, pri ciste kompilaci jadra se dela "make bzImage" ale Debian treba doporucuje vytvorit z jadra balicek a ten pak instalovat - viz kernel-package Spustte$ make bzImage //v Debianu jinak Spustte$ make modules //pokud jste alespon jednou dali pri konfiguraci //Prihlaseni jako root Spustte$ su Password: **** Spustte$ make modules_install //POZOR! Instaluje moduly do /lib/modules// // Predtim vsak smazal vse, co adresar obsahoval => // prisli jste o vsechny moduly! - tak je bud zalohujte, nebo // v Makefile nastavte EXTRAVERSION, takze // bude unikatni a v /lib/modules si vytvori novy adresar a nic neprepise // Dale se predpokla, ze k zavadeni systemu uzivate LILO, s Grub by nemel byt problem. //Pro Debiana nasledujici neplati - jen nainstalujete package a on vse udela sam // "make bzImage" umisti bzImage do arch/i386/boot/bzImage (resp. ...kernel-source-/arch/i386/boot/bzImage $ cp arch/i386/boot/bzImage /boot/ // nazvete treba image 4. ------------------------- - DODELAVKY ---------------------------------------------------------------- ------------------------- 1. Upravte v textovem editoru (vi, emacs ...) soubor /etc/lilo.conf: - zkopirujte zaznam ktery mate pro vas soucasny linux/jadro, zmente mu label a image=... nastavte na vas novy image v /boot Ale stary zaznam ponechte beze zmeny - jinak, pokud by nove jadro nefungovalo, byli byste v haji. Pokud tam mate polozku initrd, tak ji pro to sve nove jadro vymazte (nebo si initrd udelejte ... ). - spuste$ /sbin/lilo //jinak se ty zmeny neprojevi 2. Pokud se jadro uspesne nabootuje a budete ho pouzivat, tak presmerujte symbolicky link /usr/src/linux na misto, kde mate ulozene jeho zdrojaky. Ty uz nikam neposunujte, protoze pri instalaci modulu se symlink /lib/modules/build nasmeruje na misto, kde maji zdrojaky a byl by v tom bordel. 3. Zalohujte si .config soubor, ktery jste tak pracne vyrobili. 5. ------------------------- - TESTY+PROBLEMY ---------------------------------------------------------------- ------------------------- Rebootojte počítač, v nabídce lila si zvolte vas novy image a modlete se, at to funguje :-) (kdyby ne, Ctrl-Alt-Del a vratte se ke staremu) POZN: Pokud chcete podporu dalsiho modulu (), zeditujte .config jadra (make menuconfig), zaskrtnete to, spustte make modules, make modules_install, depmod -a (to se spousti autom. pri startu systemu, ale chcete-li pouzit modul, co jste prave udelali, je nezbytny). Problemy: Dotycnemu nejdrive nefungovala X-ka (ma grafiku of nvidia, kterou jadro nemuze podporovat, musel doinstalovat jejich ovladac), pak mu nesla USB mys (musel v make menuconfig dodat neco jako "CONFIG_INPUT_KEYBDEV=m" a delat co popsano v POZN o radek vys), pak zas nefungovala X-ka (make modules_install smazalo ovladac grafiky od nvidii, mel si ho zalohovat a pak tam zkopirovat zpatky), pak jeste nefungoval zvuk a muselo se zpet do make menuconfig a u zvuku zadat Sound card support, ostatni dat pryc, znovu udelat moduly, configurovat a udelat+instalovat nvidiu a alsu ...; natrapil se s tim hodne, doporucuju k ptecteni.).