Tuesday, April 11, 2006

Ako som inštaloval debian_amd64 časť druhá.

Kompilácia vlastného jadra.


Priebeh vytvorenia vlastného jadra vyzeral asi takto:
while ( !priaznive-postavenie-hviezd ) {
switch(random(2)) {
case 1: skomiloval som jadro
reboot
kernel panic
break;
case 2: skompiloval som jadro
vytvoril ramdisk
reboot
kernel panic
break;
default: kernel panic;
}
}


Nakoniec sa mi to po niekoľkých úmorných hodinách kompilácie, googlenia a študovania manuálov podarilo i keď v konečnom dôsledku ani presne neviem čo zabralo.

Začal som tým, že som si skopíroval config aktuálneho jadra z distribúcie k zdrojákom jadra, ktoré som sa chystal preložiť ( konkrétne 2.6.16 - [linux-source-2.6.16]) a pustil make menuconfig

Ako 2-year-linux-power-user-o_O som vybral všetko potrebné čo sa týkalo môjho hardware, to dal do jadra, zbytok čo by sa mohol niekedy hodiť do modulov a už som púšťal make && make modules_install . Nakoniec som nastavil ešte rýchlo grub - trošku sa počudoval čo je asi to initrd pre istotu to zakomentoval a spokojný nad svojím výkonom som rebootol systém.
Po krásnej modrej grub tabuľke a nasledujúcich asi 2 sekundách to na mna vybaflo kernel panic ... "omgwtf" pomyslel som si. Znechutene som reštartol na funkčné jadro a hybaj prechádzať config kde som ešte urobil chybu a googliť hlášku "unable to mount root fs on uknown-block".

Google poradil že by som si mal vytvoriť ramdisk, pretože jadro mám na SATA disku a bez potrebných modulov ( sata_nv, libata, scsi_mod ), mi to nenájde SATA disk a nebude z neho možné nabootovať jadro. Dal som sa teda do štúdia manuálu k mkinitrd nastavovania modulov v /etc/mkinitrd/modules a nastavenia zariadenia, z ktorého sa má bootovať v /etc/mkinitrd/mkinitrd.conf ( riadok ROOT="/dev/sda2 reiserfs" ).

Po pár pokusoch o vytvorenie funkčného ramdisku som to vzdal a skúsil utilitku make-kpkg na "zabalalíčkovanie" jadra a tajne som dúfal že mi vytvorí i podtrebný ramdisk. Nič také sa však nekonalo a ja už po x kompiláciách, reštartoch a večných kernel panic som pomaly strácal nádej na vytvorenie vlastného jadra.

Dal som si preto spaciu pauzu a s heslom "ráno je múdrejšie večera" som zalomil.

Ďalší deň sa asi zmenilo postavenie hviezd a mne sa KONEČNE podarila nájsť správná kombinácia k vytvoreniu nepanikáriaceho jadra. Urobil som som to čo na začiatku, že som vychádzal z funkčného config-u a po skúsenostiach z predošlého dňa som vybral všetko potrebné do jadra - teda podporu scsi, scsi nforce, reiserfs a vypol a vyhodil všetky ostatné scsi drivery. Vedel som už, že určite nepotrebujem ramdisk ak mám podporu SATA zakompilovanú v jadre ( doteraz nechápem prečo to nešlo hneď na prvý krát ) opäť vyhodil initrd pre moje jadro z grub/menu.lst a po pár modlidbách k veľkému Tuxovi som systém reštartol. A verte alebo nie svet bol zase krajší keď mi systém nabehol :-) .

Tu je môj kernel config po tom čo sa mi to podarilo rozbehnúť. Chce to ešte pár úprav ale to sa dorieši časom. Neskôr zverejním i vyladený ( teda snáď :-P ).

Konfigurácia, pre ktorú som kompiloval:

MB GIGABYTE K8NF-9 Ultra nForce4U S939, PCIe,SATA2,GLAN,1394
CPU AMD ATHLON 64 3200+
HD SEAGATE 250 GB BARRACUDA SATAII/300 16MB ( ST3250624AS )
GK nVidia GF 6600GT GB silent2 256MB DDR2,DVI,TVout,PCIEx16


Najbližšie sa trošku rozpíšem ako som chroot-oval kôli 32bit aplikaciám, ktoré ešte nie sú naportované do debian_amd64 distribúcie.

No comments: