<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Sessi%C3%B3_3._Compilaci%C3%B3_del_kernel</id>
	<title>Sessió 3. Compilació del kernel - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Sessi%C3%B3_3._Compilaci%C3%B3_del_kernel"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Sessi%C3%B3_3._Compilaci%C3%B3_del_kernel&amp;action=history"/>
	<updated>2026-04-20T13:04:10Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Sessi%C3%B3_3._Compilaci%C3%B3_del_kernel&amp;diff=525&amp;oldid=prev</id>
		<title>88.8.41.42: New page: 16-01-2008  L'objectiu podria ser col.locar un driver que no tenim  *obtenció *configuració *compilació *instal.lació   Per saber el número de ditribució del kernel: &lt;pre&gt; $ uname -a...</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Sessi%C3%B3_3._Compilaci%C3%B3_del_kernel&amp;diff=525&amp;oldid=prev"/>
		<updated>2008-11-10T00:49:13Z</updated>

		<summary type="html">&lt;p&gt;New page: 16-01-2008  L&amp;#039;objectiu podria ser col.locar un driver que no tenim  *obtenció *configuració *compilació *instal.lació   Per saber el número de ditribució del kernel: &amp;lt;pre&amp;gt; $ uname -a...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;16-01-2008&lt;br /&gt;
&lt;br /&gt;
L'objectiu podria ser col.locar un driver que no tenim&lt;br /&gt;
&lt;br /&gt;
*obtenció&lt;br /&gt;
*configuració&lt;br /&gt;
*compilació&lt;br /&gt;
*instal.lació&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per saber el número de ditribució del kernel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uname -a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Linux ali15 2.6.18-3-686 #1 SMP Mon Dec 4 16:41:14 UTC 2006 i686 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; això vol dir que és la distribució 2.6&lt;br /&gt;
&lt;br /&gt;
hi ha un salt brutal de la distribució 2.4 a 2.6. Per ex, política de dispositius (hi ha hotplug, posada en calent de dispositius, i una configuració dinàmica dels dispositius)&lt;br /&gt;
&lt;br /&gt;
Les distribucions parelles (2.4, 2.6 són estables).&lt;br /&gt;
&lt;br /&gt;
Les imparelles són de testing.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude search linux | grep 2.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==obtenció del kernel==&lt;br /&gt;
&lt;br /&gt;
obtenim els fonts a kernel.org o a linux.org -&amp;gt; ho obtindrem amb format tar.gz (tgz) o tar.bz2&lt;br /&gt;
&lt;br /&gt;
(empaquetament i compressió, sense patent, i comprimeixen millor que les eines amb patent)&lt;br /&gt;
&lt;br /&gt;
una altra possibilitat és anar a la distribució Debian (paquet .deb)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aptitude search linux-source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 -&amp;gt; linux-source-2.6.18&lt;br /&gt;
&lt;br /&gt;
Entrem com a root (su, pwd: ice)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aptitude install linux linux-source-2.6.18&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
es connecta a rediris&lt;br /&gt;
&lt;br /&gt;
Debian, les fonts les posa en el directori:&lt;br /&gt;
&lt;br /&gt;
cd /usr/src&lt;br /&gt;
&lt;br /&gt;
Ens hem descarregat el fitxer linux-source-2.6.18.tar.bz2 (és el font)&lt;br /&gt;
&lt;br /&gt;
Hi ha una sèrie de guions-scripts que ens poden ajudar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude search kernel-package&lt;br /&gt;
aptitude install kernel-package&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
el '''kernel-package''' té la missió en integrar els esforços que fem de compilar el nucli i convertir-ho en un paquet deb.&lt;br /&gt;
&lt;br /&gt;
el kernel-package fa el make config (configuració), make install (compilació),... que farem manualment, i a més els guions de debian que ens portaran a què això sigui un paquet de Debian.&lt;br /&gt;
&lt;br /&gt;
Ara hem de desplegar tot l'arbre del Kernel des d'aquesta arrel (descomprimir i desplegar):&lt;br /&gt;
&lt;br /&gt;
si hagués vingut en format tar per descomprimir seria:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ tar zxf linux-source-2.6.18.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*z: descomprimir coses que estiguin en format tar&lt;br /&gt;
*x: extreure&lt;br /&gt;
*f: a fitxer&lt;br /&gt;
&lt;br /&gt;
però com que està en format tar.bz2 l'ordre és:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ tar jxf linux-source-2.6.18.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(no he ficat l'opció v de verbose)&lt;br /&gt;
&lt;br /&gt;
aquesta descompressió omple uns 200MB&lt;br /&gt;
&lt;br /&gt;
Recordem que estem baixant els fonts, no els binaris.&lt;br /&gt;
&lt;br /&gt;
Ara estem copiant els fonts al disc.&lt;br /&gt;
&lt;br /&gt;
cd /usr/src/linux-source-2.6.18&lt;br /&gt;
&lt;br /&gt;
en aquest directori tenim els fonts&lt;br /&gt;
&lt;br /&gt;
==Configuració==&lt;br /&gt;
&lt;br /&gt;
s'ha de fer make config, però hi ha el problema que és que s'ha de contestar centenars de preguntes&lt;br /&gt;
&lt;br /&gt;
una altra possibilitat és partir d'una configuració de kernel que ja existeix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls /boot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
aquí hi ha els fitxers de config que podem fer servir per a la configuració&lt;br /&gt;
&lt;br /&gt;
mirar que hi ha dins de config-2.6.18-3-686 (cat)&lt;br /&gt;
&lt;br /&gt;
copiem el fitxer al nostre directori:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp /boot/config-2.6.18-5-686 .config&lt;br /&gt;
$ cat .config | more&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(el fitxer, com que té punt, vol dir que és ocult)&lt;br /&gt;
&lt;br /&gt;
per saber quantes línies té: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wc -l .config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
-&amp;gt; més de 3000 línies-etiquetes, de les quals la majoria són preguntes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ make config -&amp;gt; no el farem, ens faria unes 3500 preguntes&lt;br /&gt;
$ make xconfig -&amp;gt; accedim a les etiquetes que ens interessen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Em dóna un problema, falten les llibreries de QT (que ens portaria a una interfície gràfica)&lt;br /&gt;
&lt;br /&gt;
anem allà on s'ha instal.lat la documentació&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /usr/share/doc/linux-source-2.6.18 (es torna al directori inicial amb popd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
podem llegir el readme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make menuconfig #-&amp;gt;també falla.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solució:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aptitude search ncurses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
fem una instal.lació de libncurses-dev (de development)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libncurses-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara make menuconfig sí que funciona.&lt;br /&gt;
&lt;br /&gt;
ncurses is a programming library providing an API, allowing the programmer to write text user interfaces in a terminal-independent manner. It also optimizes screen changes, in order to reduce the latency experienced when using remote shells.&lt;br /&gt;
&lt;br /&gt;
També podíem instal.lar les que ens provocaven l'error en make xconfig&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude search qt4-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
busquem un paquet que sigui dev&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libqt4-dev  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
sembla ser que qt4 no va, qt3 sí que va&lt;br /&gt;
&lt;br /&gt;
un cop instal.lat, make xconfig&lt;br /&gt;
&lt;br /&gt;
si funciona, tenim dues possibilitats:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ make xconfig # o bé&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abans de fer això, fem &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ make clean&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
per saber quin processador tinc, des d'un altre&lt;br /&gt;
&lt;br /&gt;
terminal:&lt;br /&gt;
&lt;br /&gt;
cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
seleccionem Pentium 4&lt;br /&gt;
&lt;br /&gt;
Les respostes són tres si (seleccionar), no (no seleccionar), o M (mòdul, el carrega si el necessita en temps d'execució). El ficarem com a mòdul si no sé si el faré servir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Integrados en la imagen o modulos.&lt;br /&gt;
&lt;br /&gt;
La elección de si debemos marcar algo como módulo o bien integrarlo en la imagen, queda en la mayoría de los casos al libre albedrio de cada individuo, no obstante hay casos en los que solo podemos integrarlo. No es bueno tener todo integrado en la imagen, ya que esto la espesaría hasta tal punto de no caber en un disket o bien, en caso de que excediera mucho el&lt;br /&gt;
&lt;br /&gt;
tamaño &amp;quot;normal&amp;quot;, produciría un error al compilarse. Por tanto debemos escojer ciertas cosas como módulos. Claro ejemplo de ello son tarjetas de red, de sonido, soporte para dispositivos USB, SCSI, PCI, Paralelo, AGP, etc. Ya que esto suele ocupar bastante espacio en la imagen.&lt;br /&gt;
&lt;br /&gt;
El Plug&amp;amp;Play el SO competeix amb la BIOS&lt;br /&gt;
&lt;br /&gt;
Block Devices -&amp;gt; són els discs&lt;br /&gt;
&lt;br /&gt;
RAID ann LVM (gestió de volums lògics -&amp;gt; que els diferents discs es vegin com una sola unitat)&lt;br /&gt;
&lt;br /&gt;
Surto i guardo la nova configuració&lt;br /&gt;
==Compilació==&lt;br /&gt;
ara ho compilem:&lt;br /&gt;
&lt;br /&gt;
hem de seguir les indicacions que trobem a:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /usr/share/doc/kernel-package/&lt;br /&gt;
&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ make-kpkg clean&lt;br /&gt;
$ make-kpkg --initrd --revision=joan1 kernel-image&lt;br /&gt;
&lt;br /&gt;
initrd serveix per carregar en memòria un boot d'un disc d'arranc, i permet carregar guions que ens permeten bootar des de, per ex, un dispositiu USB.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; ho hem fet sense initrd per que a l'aula no tenim permís per accedir al boot&lt;br /&gt;
&lt;br /&gt;
i ara triga molta estona&lt;br /&gt;
&lt;br /&gt;
anem a instal.lar un driver de Nvidia:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aptitude search nvidia-kernel-source&lt;br /&gt;
$ aptitude search ndiswrapper&lt;br /&gt;
$ aptitude install nvidia-kernel-source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ara trobem a /usr/src el nvidia-kernel-source.tar.gz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ tar zxf nvidia-kernel-source.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ara hi ha un nou directori que es diu modules&lt;br /&gt;
&lt;br /&gt;
/usr/src/modules/nvidia-kernel&lt;br /&gt;
&lt;br /&gt;
i ara podem compilar aquest mòdul&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aptitude install ndiswrapper-source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ara trobem a /usr/src el ndiswrapper-source.tar.bz2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ tar jxf ndiswrapper-source.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El ndiswrapper el que fa és agafar un driver de windows i li fa un envoltori per tal que funcioni per a Linux.&lt;br /&gt;
&lt;br /&gt;
lsmod -&amp;gt; podem saber els mòduls carregats en el kernel&lt;br /&gt;
&lt;br /&gt;
la instal.lació d'un driver comporta una entrada en el directori /boot/config&lt;br /&gt;
&lt;br /&gt;
cat /boot/config-2.6.18-5-686 | grep USB | more&lt;br /&gt;
&lt;br /&gt;
(aplico un filtre, hi ha 3500 entrades)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
per saber els mòduls que tenim instal.lats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls -R /lib/modules/`uname -r`&lt;br /&gt;
ls -R /lib/modules/`uname -r` | wc -l -&amp;gt; per saber el número de mòduls instal.lats (2774)&lt;br /&gt;
&lt;br /&gt;
això és la biblioteca de mòduls, que no vol dir que estiguin instal.lats&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; uname -r ens diu el kernel que tenim instal.lat, per ex 2.6.22.14-generic (Ubuntu).&lt;br /&gt;
&lt;br /&gt;
i la instrucció /lib/modules/`uname -r` donaria com a resultat /lib/modules/2.6.22.14-generic&lt;br /&gt;
&lt;br /&gt;
ls -R -&amp;gt; recursiu dins dels directoris&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Per instal.lar un mòdul:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ modprobe -&amp;gt; prova un mòdul en el kernel per veure si funciona, i si no, ho descarta&lt;br /&gt;
$ insmod -&amp;gt; instal.la el mòdul&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modprobe sound&lt;br /&gt;
&lt;br /&gt;
lsmod sound&lt;br /&gt;
&lt;br /&gt;
operació inversa (remove):&lt;br /&gt;
&lt;br /&gt;
rmmod sound&lt;br /&gt;
&lt;br /&gt;
cat /etc/modules&lt;br /&gt;
&lt;br /&gt;
This file contains the names of kernel modules that should be loaded&lt;br /&gt;
&lt;br /&gt;
# at boot time, one per line. Lines beginning with &amp;quot;#&amp;quot; are ignored.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; només hi ha el mòdul loop&lt;br /&gt;
&lt;br /&gt;
cd /etc/modutils&lt;br /&gt;
&lt;br /&gt;
==Instal.lació==&lt;br /&gt;
&lt;br /&gt;
un cop ha acabat la compilació del kernel, i sense fer clean, des de /usr/src/linux-source-2.6.18&lt;br /&gt;
&lt;br /&gt;
make-kpkg modules&lt;br /&gt;
&lt;br /&gt;
per cada mòdul que hem baixat (ndiswrapper, nvidia) crea un paquet deb, que ara els podem instal.lar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/src/modules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i ara dins la carpeta usr/src veig els paquets deb que s'han creat:&lt;br /&gt;
&lt;br /&gt;
nvidia-kernel-2.6.18_1.0.8776-4+joan1_i386.deb&lt;br /&gt;
&lt;br /&gt;
ndiswrapper-modules-2.6.18_1.28-1+joan1_i386.deb&lt;br /&gt;
&lt;br /&gt;
aquests paquets deb s'han d'instal.lar&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -i ndiswrapper-modules-2.6.18_1.28-1+joan1_i386.deb&lt;br /&gt;
&amp;lt;$pre&amp;gt;&lt;br /&gt;
no em deixa perque hi ha un problema de dependències.&lt;br /&gt;
&lt;br /&gt;
Primer s'ha de fer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install  ndiswrapper-utils-1.9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nosaltres el ndiswrapper l'hem compilat a partir de les fonts, però evidentment per Inet ens podem baixar directament els .deb.&lt;br /&gt;
&lt;br /&gt;
L'eina ràpida per fer tot això és el module-assistant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install module-assistant (ja estava instal.lat)&lt;br /&gt;
&lt;br /&gt;
#module-assistant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
és una eina que intenta fer les coses de manera més còmode.&lt;br /&gt;
&lt;br /&gt;
Es pot executar des de la consola, o bé amb interfície pseudo-gràfica (igual que aptitude, que si no es posa res apareix la interfície gràfica)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PREPARE -&amp;gt; la únia cosa que necessita per compilar un mòduls són els headers&lt;br /&gt;
&lt;br /&gt;
SELECT -&amp;gt; tot el que apareix aquí són fonts aquí trobem el ndiswrapper i el nvidia-kernel, i els seleccionem&lt;br /&gt;
&lt;br /&gt;
GET -&amp;gt; ha anat molt ràpid perquè ja els teníem&lt;br /&gt;
&lt;br /&gt;
BUILD -&amp;gt; malament, perquè els headers no coincideixen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ aptitude search header&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>88.8.41.42</name></author>
		
	</entry>
</feed>