[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Compilar kernel



El Tue, Nov 22, 2005 at 04:02:51PM +0100, Josep Molero i Puig ens deleità amb les següents paraules:
> Hola Lluís... 
> Sempre rebo els teus eMAIL en un estat "deplorable" ;-) 
> NO sé què passa entremig, però el meu servidor em diu no sé què de los 
> caracteres i em crea un fitxer de text que conté el cos del teu eMAIL amb 
> alguns caràcters extranys al salt de línia - retorn de carro.
> 
> Bé.. ja l'he reconstruit i l'he llegit amb calma.
> 

noooooooooo! XD
no ho entec, no se pq passa aixo... alguna diferencia de codificacions en 
el text? no se, jo ja escric sempre (o ho intento) sense caracters 
extranys, i LANG=ca_ES@euro... en fi, es un misteri no resolgut...

igualment, envio la resposta a la llista, pq aixi potser li serveix a algu 
mes que pugui tenir les mateixes preguntes

> METODE DIRECTE 
> --------------- 
> No he canviat res de la configuració, excepte lo del Pentium-4. 
> Potser ho tornaré a provar sense ni tan sols tocar això. 
> Si agafo (copio) el fitxer config-<versio> actual, cal que l'obri amb make 
> menuconfig o puc passar directament a la compilació ?
> 

home, si utilitzes un fitxer de configuracio d'un nucli diferent al que 
estas compilant, pot ser que canviin algunes opcions, es per aixo que, si 
vols reconfigurar a partir d'un config d'una altra versio, es millor fer 
primer un 'make oldconfig', ja que aixi et fa les preguntes que han 
aparescut noves, i despres fas la configuracio de torn ('make menuconfig')

si vols veure que ha canviat realment, pots fer 'diff -Nur 
<fitxer_original> <fitxer_reconfigurat>' (crec que la sortida es prou 
clara...)

> METODE DEBIAN 
> -------------- 
> Havia llegit que hi havia el mètode DEBIAN per a compilar/instal·lar un nou 
> nucli. 
> M'agradaria fer-te unes preguntes sobre el que m'has dit (algunes de 
> novatillo total) 
> He anotat cadascun dels passos que em detalalves i he reflexionat sobre 
> ells. 
> Pots fer un cop d'ull ? 
> Gràcies !!!
> 
> 1) DIUS : instal·lar un paquet que proveeixi el paquet virtual linux-tree. 
> És un paquet de Debian ? 
> D'on i com l'he de treure ? 
> Amb un agt-get d'aquells ? 
> On me'ls posarà ?
> 

be, com ja sabras (o hauries de saber! ;)), el paquets de debian, a mes de 
permetre especificar dependencies de siferents nivells (Depen de, Recomana, 
Suggereix), pot proporcionar paquets virtuals, es a dir, que el paquet, per 
exemple, linux-image-2.6.12-1-686, proporciona dos paquets virtuals:

xxx@dante:~$ apt-cache show linux-image-2.6.12-1-686
Package: linux-image-2.6.12-1-686
Priority: optional
Section: base
Installed-Size: 47432
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Architecture: i386
Source: linux-2.6
Version: 2.6.12-10
Provides: linux-image, linux-image-2.6
Depends: initrd-tools (>= 0.1.78), coreutils | fileutils (>= 4.0), 
module-init-tools (>= 0.9.13)
Suggests: linux-doc-2.6.12 | linux-source-2.6.12, lilo (>= 19.1) | grub, 
fdutils
Conflicts: hotplug (<< 0.0.20040105-1)
Filename: pool/main/l/linux-2.6/linux-image-2.6.12-1-686_2.6.12-10_i386.deb
Size: 16685742
MD5sum: 7f9901e267894a3cc4a78f5d16db695f
Description: Linux kernel 2.6.12 image on PPro/Celeron/PII/PIII/P4 machines
 This package provides the binary image and pre-built loadable modules for
 Linux kernel 2.6.12 on Pentium Pro/Celeron/Pentium II/Pentium III/Pentium
 4 machines.
 .
 This packages is produced using an updated kernel packaging system and
 replaces older kernel-image packages


Ho has vist? "Provides: linux-image, linux-image-2.6"

Es a dir, tant linux-image com linux-image-2.6, no son paquets reals, sino 
paquets virtuals (aixi es pot fer que un altre paquet depengui de, per 
exemple, linux-source, sense haver-se de preocupar de la versio, com seria 
el cas de kernel-patch-debianlogo)

En canvi, si fas

xxx@dante:~$ apt-cache show linux-image
xxx@dante:~$ apt-cache showpkg linux-image
Package: linux-image
Versions: 

Reverse Depends: 
Dependencies: 
Provides: Reverse Provides: linux-image-2.6.12-1-k7-smp 2.6.12-10
linux-image-2.6.12-1-k7 2.6.12-10
linux-image-2.6.12-1-686-smp 2.6.12-10
linux-image-2.6.12-1-686 2.6.12-10
linux-image-2.6.12-1-386 2.6.12-10

Per instal.lar-ho? doncs be, jo personalment prefereixo aptitude (que dona 
un munt d'informacio i es forc,a versatil, a part de tenir una "feature" 
molt interessant, que es la del marcatge automatic de paquets), pero si, un 
apt-get install d'aquells servira ;)

[ ja veuras, tu prova a fer 'sudo apt-get install linux-image' ;)
 si no en tens cap d'instal.lat, et dira que n'escullis un que proveeixi el 
 paquet virtual sol.licitat (linux-image), i si ja en tens algun qualsevol, 
 doncs et dira que ja esta fet ]

On estan els fitxers instal.lats pel paquet? Doncs preguntem-ho:

xxx@dante:~$ dpkg -L linux-source-2.6.12 /.
/usr
/usr/src
/usr/src/linux-source-2.6.12.tar.bz2
/usr/share
/usr/share/doc
/usr/share/doc/linux-source-2.6.12
/usr/share/doc/linux-source-2.6.12/README.Debian
/usr/share/doc/linux-source-2.6.12/copyright
/usr/share/doc/linux-source-2.6.12/README.gz
/usr/share/doc/linux-source-2.6.12/changelog.Debian.gz

Jo diria que es prou clar: /usr/src/linux-source-2.6.12.tar.bz2

> 2) DIUS : Instal·lar altres paquets (nvidia-kernel-source ...) On els 
> trobo ?  També els descarrego amb un apt-get o similar ?  Com sé que són 
> vàlids per a la versió del nucli que vull compilar ?  I novament, on els 
> col·locarà ?
> 

xxx@dante:~$ apt-cache show nvidia-kernel-source Package: 
nvidia-kernel-source
Priority: optional
Section: non-free/x11
Installed-Size: 1404
Maintainer: Randall Donald <rdonald@debian.org>
Architecture: i386
Source: nvidia-graphics-drivers
Version: 1.0.7174-4
Replaces: nvidia-kernel-src
Depends: debhelper (>> 4.0.0), make, sed (>> 3.0), dpatch (>= 2.0.0)
Recommends: nvidia-glx (>= 1.0.7174), kernel-package (>= 8.082), devscripts
Conflicts: nvidia-kernel-src
Filename: pool/non-free/n/nvidia-graphics-drivers/nvidia-kernel-source_1.0.7174-4_i386.deb
Size: 1394796
MD5sum: dced0f2b44a37ad5a1ee245c80f9a124
Description: NVIDIA binary kernel module source
 This package builds the NVIDIA XFree86 4.x binary kernel module needed
 by nvidia-glx. The drivers provide optimized hardware acceleration of
 OpenGL applications via a direct-rendering X Server and support the TNT,
 TNT2, TNT Ultra, The GeForce series, nForce, and Quadro chipsets. AGP,
 TV-out, and flat panel displays are also supported.
 .
 PLEASE read /usr/share/doc/nvidia-kernel-source/README.Debian for
 building information.
Tag: hardware::video, role::sw:source, use::driver


aixi doncs, tindras aquest paquet en concret (nvidia-kernel-source) si tens 
"activat" el non-free al teu sources.list

tot i aixo, si utilitzes el paquet module-assistant, facilita molt la tasca 
de compilar moduls externs (com es el cas del d'nvidia)

> 3) Instal·lar kernel-package
> Això suposo que ha de ser fàcil.  Normalment treballo amb synaptic o 
> kpackage (dos gestor gràfics de paquets)
> 

doncs igual de facil que instal.lar els anteriors

> 4) Descomprimir tot el que vegis a /usr/src. 
> Val... tot lo que hi hagi aquí ho descomprimeixo, però.. en alguna carpeta 
> en concret ? 
> O cada fitxer descomprimit es muntarà el seu propi directori ?
> 

a veure... primer de tot, mirem el nucli (aqui la gracia esta en la opcio 
't', que llista els continguta sens descomprimir)

xxx@dante:/usr/src$ tar jtf linux-source-2.6.12.tar.bz2 
linux-source-2.6.12/
linux-source-2.6.12/COPYING
linux-source-2.6.12/CREDITS
linux-source-2.6.12/Documentation/
linux-source-2.6.12/Documentation/00-INDEX
linux-source-2.6.12/Documentation/BUG-HUNTING
[...]
xxx@dante:/usr/src$ dpkg -S /usr/src/linux-source-2.6.12.tar.bz2 
linux-source-2.6.12: /usr/src/linux-source-2.6.12.tar.bz2
xxx@dante:/usr/src$ tar jtf cloop.tar.bz2 modules/
modules/cloop/
modules/cloop/compressed_loop.h
modules/cloop/extract_compressed_fs.c
[...]
xxx@dante:/usr/src$ dpkg -S /usr/src/cloop.tar.bz2
cloop-src: /usr/src/cloop.tar.bz2
xxx@dante:/usr/src$ tar jtf hostap-source.tar.bz2 modules/
modules/hostap-source/
modules/hostap-source/debian/
modules/hostap-source/debian/changelog
[...]
xxx@dante:/usr/src$ dpkg -S /usr/src/hostap-source.tar.bz2
hostap-source: /usr/src/hostap-source.tar.bz2

com pots veure, el nucli es posa en el seu directori linux-source-<versio>, 
mentre que els moduls externs es posen a modules/<alguna_cosa_mes>, tot 
sempre a partir del directori des del que estiguis treballant (en el nostre 
cas /usr/src)

> A partir d'ara .. .he d'executar les comandes estan situat en un directori 
> particular ¿? 
> Vull dir que si no és així, com saben els comandaments quines són les 
> sources que vull compilar ? 
> Podria tenir un munt de carpetes de sources de moltes altres coses.. no ? 
> Entenc que el comandament make i els seus amics treballen amb l'arbre de 
> carpetes on estàs situal, no ? 
> (PERDONA LA IGNORANCIA)
> 

certament, tens tota la rao, treballen al directori on estas situat (pwd), 
pero nomes et puc dir una cosa, "fent i desfent, apren l'aprenent", es a 
dir, si no n'estas segur, sempre ho pots provar, total, si estas compilant, 
el pitjor que et pot passar es que no compili ;)

i si utilitzes make-kpkg, passa el mateix, si no ets dins un directori que 
contingui uns fonts del nucli, es queixara

> 5) Configurar el nucli. 
> Suposo que amb make menuconfig, oi ? 
> Com dèiem, puc agar el config-<versio> que tinc a /boot i fer-la servir per 
> no haver de trencar-me les banyes. 
> On el col·loco ? 
> Un truc potser fer un make menuconfig, salvar i veure on ha creat el fitxer 
> .config. 
> Llavors matxacar-lo i avall.
> 

a veure, sempre que fas una configuracio al nucli (hi ha diverses opcions, 
que pots veure si fas 'make help'), s'agafa com a configuracio el fitxer 
'.config', de manera que si vols reutilitzar-ne un altre, hauras de:

* cd <directori_amb_els_fonts>
* cp <fitxer_config_qualsevol> .config
* make oldconfig
        es opcional, pero molt util si reutilitzem un fitxer de 
        configuracio d'una altra versio del nucli, sino, simplement no ens 
        preguntara res, com ja he explicat en el mail anterior
* make menuconfig
        posem i treiem el que volguem
* <comanda_per_a_compilar_el_nucli_i_fer_moltes_altres_coses>
        aqui pots fer el que deies en el teu primer mail, o be utilitzar el 
        make-kpkg

> 6) Executar make-kpkg (deu voler dir make kernel package, no ?? ) 
> Això també sembla senzill (ja veurem la sintàxis); pel que dius, entenc que 
> el make-kpkg espera uns paràmetres indicant els noms?? dels mòduls que vull 
> incloure, oi ?
> 

el make-kpkg es un programet que compila el nucli per tu i et genera uns 
paquets debian amb el resultat

permet fer varies coses, que li vas indicant per la lina de comandes, com: 
construccio d'un paquet amb els fonts (util per si els has modificat a ma), 
construccio d'un paquet amb les capc,aleres dels fonts, aplicacio de 
patches externs, compilacio del nucli, compilacio de moduls, etc... man 
make-kpkg per a mes informacio ;)

per als parametres de patches del make-kpkg, et pot anar be el programa 
'lskpatches' (paquet kernel-patch-scripts), que et mostra una llista amb 
els patches disponibles (nomes els que has instal.lat), com per exemple el 
que proporciona la gent de debian (l'indicador del patch per al make-kpkg 
es troba a la primera columna)

> Et refereixes als possibles nvida-kernel-source i altres ? 
> Perquè si no és així, he vist un munt d'opcions dins el make menuconfig que 
> instal·la part del nucli com a mòduls (però moooooolts); no crec pas que 
> haguem d'enumerar-los com a paràmetres del make-kpkg, no ?
> 

si, make-kpkg ajunta (basicament, tot i que en fa mes) tres coses en una:

* aplicacio de patches "externs"
* compilacio i generacio de paquets, un amb el nucli, i un altre amb els 
  moduls que s'han sel.leccionat a la configuarcio del nucli
* compilacio i generacio de paquets amb els moduls externs (com per exemple 
  el de nvidia o hostap; els que van al directori modules/, vaja)

> FINALMENT ... que obtenim ?  Un paquet que si volem, l'instal·lem, i si 
> no volem,no.  I si l'instal·lem, ja ens fa els passos necessaris (copiar 
> imatges, el GRBU, etc...)
> 

doncs si, exacte; pero dic jo que si no instal.les el paquet ni en fas res, 
no se pq has fet tot el show aquest... ;)

> LO DEL FINAL DE TOT.. lo del paquet del linux-image, no ho he entès.
> 

be, no se si amb les explicacions que he donat haura quedat clar

be, i ara una mica d'spam... ;) com que tinc varies maquines a casa i 
compilo tots els nuclis des d'una sola maquina (la menys vella...), tinc 
tots els fitxers de configuracio centralitzats en un ordinador i els 
gestiono des d'un script que em vaig fer, que escull automaticament els 
parametres de configuracio del make-kpkg segons els fitxers de configuracio 
(per cada maquina, em guardo la configuracio del nucli, la llista de 
patches externs i la llista de moduls externs), de forma que aixi no cal 
que els recordi

xxx@dante:/usr/src/linux-source-2.6.12$ kpkger

Usage: kpkger <command> <command_options>

 Available commands:
   config - configure a kernel
   make   - make kernel packages
   clean  - clean kernel

xxx@dante:/usr/src/linux-source-2.6.12$ kpkger config

Usage: kpkger config [-c <conf_method>] [-r <root_command>] <tag> [<revision>]

 Options:
   -c  <conf_method>    Configration method used by kernel's make (default: oldconfig)
   -r  <root_command>   make-kpkg's 'rootcmd' (default: sudo)

xxx@dante:/usr/src/linux-source-2.6.12$ kpkger make

Usage: kpkger make [-c <conf_method>] [-r <root_command>] <tag> [<revision>]

 Options:
   -c  <conf_method>    Configration method used by kernel's make (default: oldconfig)
   -r  <root_command>   make-kpkg's 'rootcmd' (default: sudo)

xxx@dante:/usr/src/linux-source-2.6.12$ kpkger clean

Usage: kpkger clean [-c <conf_method>] [-r <root_command>] <tag>

 Options:
   -c  <conf_method>    Configration method used by kernel's make (default: oldconfig)
   -r  <root_command>   make-kpkg's 'rootcmd' (default: sudo)

on <tag> jo hi poso el nom de la maquina (tot i que es pot utilitzar 
qualsevol altre cosa)

aixi que si vols, te'l puc passar, tot i que no se si et sera d'utilitat (a 
mi me n'es, pero pq me l'he fet jo i se com funciona :P)

> Atentament
> 
> Pep

apa!

-- 
 "And it's much the same thing with knowledge, for whenever you learn
 something new, the whole world becomes that much richer."
 -- The Princess of Pure Reason, as told by Norton Juster in The Phantom
 Tollbooth



Reply to: