Fedora Core 3 pro lamy - kompilace kernelu

MyEgo.cz

home foto blogy mywindows.cz kontakt

Fedora Core 3 pro lamy - kompilace kernelu

Linux 09.12.04
kompilace kernelu

Předpokládám, že na základě předchozích článků již máte Fedoru Core 3 nainstalovanou, konfigurovanou a obohacenou o další programy a pluginy.

V tomto článku se podívám na kompilaci kernelu. Kompilace kernelu již nevypadá jako téma pro lamy, nicméně, v některých případech se tomu nevyhneme, konkrétně při zprovoznění CDMA na Linuxu, protože cdc-acm ovladač, díky chybě v Quallcom modemu (chybně reportované max_packet_size) dosahuje bez úprav maximální rychlosti jen cca 28KB/s.

Kompilace kernelu ze zdroje je vhodná i tehdy, pokud chcete optimalizovat kernel pro Váš počítač, a nezahrnovat do jádra (případně formou modulů) podporu pro řadu ovladačů, protokolů, hardware a dalšího, které nemáte, ale standardní kernel je přitom obsahuje.

Zdrojové kódy kernelu

Z fedora.redhat.com/updates/ si stáhněte poslední verzi kernelu, v době psaní tohoto článku je to soubor kernel-2.6.9-1.681_FC3.src.rpm a tento zdrojový kód kernelu si nainstalujte a sestavte:

su
rpm -ivh kernel-2.6.9-1.681_FC3.src.rpm
rpmbuild -bp --target=noarch  /usr/src/redhat/SPECS/kernel-2.6.spec

Následně budete mít kernel dostupný v adresáři /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9. Podívejte se do pod-adresáře configs a zkopírujte konfigurační soubor pro kernel dle typu Vašeho procesoru / architektury do souboru .config o adresář výše, pro P-IV/HT tedy takto:

cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
cp configs/kernel-2.6.9-i686-smp.config .config

Soubor .config obsahuje specifikaci, které moduly a části jádra budou zkompilovány. Pokud byste .config neměnili, dostanete přesně stejný kernel, jak si stáhnete od RedHatu (takže kompilace by byla zcela k ničemu).

Přizpůsobení kernelu

Kernel si můžete přizpůsobit v textovém menu (existují i volby gconfig a xconfig pro grafické menu, ale je to naprosto to samé), které Vám ukáže zhruba 2.500 různých voleb, co si přejete (či nepřejete) do Vašeho nového kernelu zahrnout. Základním bodem bývá volba typu procesoru, podporované chipsety, grafické karty (pokud máte nVidia, nemusíte instalovat ATI, Matrox a další), modemy, síťové karty (včetně třeba podpory pro TokenRing), filesystémy (včetně NTFS), a mnohé další.

Každá položka menu má po stisknutí ? dostupnou nápovědu, a rovněž doporučenou hodnotu, která máte ponechat, pokud té položce nerozumíte.

Uložení těchto voleb provedete stiskem klávesy Escape a potvrzením dotazu na uložení nového .config souboru. Interaktivní menu pro nastavení parametrů kernelu zobrazíte takto:

su
cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
make menuconfig

Kompilace a instalace kernelu

Před kompilací kernelu ješte musíte zmodifikovat soubor Makefile, na jeho začátku naleznete specifikaci verze kernelu, doporučuji si ji změnit dle svého, a to konkrétně položku EXTRAVERSION, tato položka se totiž doplní do názvu instalovaného kernelu, a nebude tak kolidovat s kernelem stávajícím (a budete moci bootovat oba dva).

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 9
EXTRAVERSION = -cdma

Vlastní kompilace a instalace je potom velice jednoduchá:

su
cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
make clean
make
make modules_install
make install

Pokud používáte grub, je tímto vše hotovo, při rebootu počítače si budete moci zvolit starý i nový kernel. Pokud nový kernel bude fungovat, můžete starý kernel z /boot, /boot/grub/grub.conf a /lib/modules vymazat.

Zprovoznění CDMA

Pro CDMA je nutné ručně udělat úpravu cdc-acm.c, dle návodu Petra Písaře, před kompilací kernelu (modulů), jako parametr pro max_packet_size se mi osvědčila hodnota 4096.

Potom již jen stačí nadefinovat nové spojení na /dev/ttyACM0 (nikoliv tedy na defaultním /dev/input/ttyACM0) s číslem #777.

Pokud nechcete modulu předávat parametr, můžete to udělat klidně i “natvrdo”, třeba doplněním těchto řádků do cdc-acm.c:

@071+ #define QUALCOMM_VENDOR_ID 0x05c6 
@072+ #define QUALCOMM_GTRAN_6420 0x3196

@656+ if (
@657+   usb_dev->descriptor.idVendor==QUALCOMM_VENDOR_ID &&
@658+   usb_dev->descriptor.idProduct==QUALCOMM_GTRAN_6420
@659+ ) {
@660+   epctrl->wMaxPacketSize = 4096;
@661+   epread->wMaxPacketSize = 4096;
@662+   epwrite->wMaxPacketSize = 4096;
@663+ } 

ctrlsize = epctrl->wMaxPacketSize;
readsize = epread->wMaxPacketSize;
acm->writesize = epwrite->wMaxPacketSize;

Důležité: po instalaci nového kernelu musíte reinstalovat i nvidia ovladače (modul)!


Komentáře

  1. 1 Luboš Bretschneider 09.12.04, 07:12:30
    FB

    Mé užívání Fedora Core 3 bohužel skončilo tím, že jsem moc lama na to, abych si nějakým způsobem nainstaloval WiFi kartu (ASUS WL-138G). Existuje nějaké jednoduché řešení?

  2. 2 -deleted- 09.12.04, 08:12:56
    FB

    28 KB/s - nemyslel jsi 28Kb/s? 28KB/s mi málo opravdu nepřipadá :-)

  3. 3 Radek Hulán 09.12.04, 09:12:45
    FB

    [2] ne, 28KB/s je zcela správně, CDMA jinak běží na 100KB/s

  4. 4 Pavel@cetoraz 10.12.04, 09:12:02
    FB

    [1] To bude tím, že pro tuto kartu nejsou nativní linuxové ovladače a je potřeba používat projek 'ndiswrapper,' který natahuje originální windowz ovladače. A to samozřejmě nebude ani jednoduché na rozchození, ani příliš stabilní. Ale možná se mohu mýlit.
    Relevantní odkazy: ndiswrapper a seznam podporovaných zařízení/ovladačů.

  5. 5 Ross 10.12.04, 12:12:58
    FB

    [1] Ja uz jsem rozchodil nekolik ruznych wireless karet pomoci linuxant. Je to uplne jednoduche a programu se predhodi ovladace pro win a to zvladne i zacatecnik. Program je mozno vyzkouset pro MAC addressu a pak az zaplatit.

  6. 6 Luboš Bretschneider 10.12.04, 08:12:46
    FB

    [4] [5] Díky za rady... Zatím se mi nepovedlo windowsácký drivery loadnout, protože mi to tvrdí, že zařízení neni připojeno, ale to už snad nějak vyřeším.

  7. 7 David Jaša 10.12.04, 11:12:52
    FB

    Pro "instalaci" jádra doporučuji použít radši přímé kopírování bzImage z arch/i386/boot/ do /boot, protože se těm automatickým věcičkám nedá věřit. :-)

  8. 8 Radek Hulán 10.12.04, 11:12:59
    FB

    [7] hm, nějaký konkrétní důvod, proč se *dá* "věřit" ./configure, make, make menuconfig, make modules_install, ale make install ne? ;-)

  9. 9 bengy 15.05.05, 08:05:30
    FB

    když dám do konzole # rpm -ivh kernel.src.rpm tak mi to vyhodi tohle "warning: kernel-2.6.11-1.20_FC3.src.rpm: V3 DSA signature: NOKEY, key ID 30c9ecf8
    error: nemohu vytvořit sourcedir: /usr/src/redhat/SOURCES"
    co s tim?

  10. 10 Gaza 13.07.05, 01:07:45
    FB

    mam problem - mam jadro 2.6.9-1.667 a kdyz jsem dal automaticky upgrade jadra na 2.6.11-1.35_FC3, tak pri bootovani tohoto jadra se to "sekne" na "Nastavuji parametry jadra:". Ani po hodine nic, tak jsem dal CTRL-C a rozjelo se to -bohjuzel ne na dlouho - tentokrat se to (natrvalo) zastavi na "Spoustim zaznamenavani systemu" (nebo nejak tak)...
    Ted jsem zkousel zkompilovat "vlastni" jadro, ale presne ten samy problem... Nevite nekdo kde je chyba?