Difference between revisions of "Kernel Compilation (Español)"

From ArchWiki
Jump to: navigation, search
(Redirigir a Kernels (Español))
 
(10 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
+
#REDIRECT [[Kernels_(Español)#Compilación]]
[[Category:Kernel (Español)]]
+
{{i18n|Kernel Compilation}}
+
 
+
Arch Linux provee varios metodos para compilar el kernel. Usar [[Arcg Build System]] es el recomendado.
+
 
+
==Usando [[Arch Build System]]==
+
Siempre, se han propuesto varios metodos para contruir facilmente un kernel personalizado partiendo del de Arch. En la wiki se pueden encontrar varios ejemplos. Todos ellos son bastante buenos, pero sufren [https://bugs.archlinux.org/task/12384 algunos inconvenientes] que hacen que no esten oficialmente respaldados por los desarrolladores.
+
 
+
Contrariamente, el metodo descripto en este articolo es mas solido y seguro, y se construye usando el paquete oficial del kernel26.
+
 
+
===Instalando ABS===
+
 
+
{{Cli|# pacman -S abs base-devel}}
+
 
+
Para obtener todo el arbol de ABS, ejecuta:
+
 
+
{{Cli|# abs}}
+
 
+
Revisa [[Arch Build System]] para mas informacion.
+
 
+
===Consiguiendo los ingredientes===
+
Antes que nada, necesitamos un kernel limpo para empezar a personalizarlo. En este articulo asumire que usaras el kernel26 oficial de Arch. Entonces creamos una carpeta para trabajar, y obtenemos los archivos del kernel desde ABS ( luego de la sincronización):
+
 
+
{{Codeline|cp /var/abs/core/kernel26/* <directorio_de_trabajo>/}}
+
 
+
Luego, pongan aqui cualquier paquete que se necesite(ej. archivos de configuracion personalizada, parches , etc.)
+
 
+
===Modificando el  PKGBUILD===
+
Modifica el PKGBUILD del paquete oficial del kernel26.
+
 
+
 
+
====Cambiendo pkgname====
+
Las primeras lineas se pareceran a estas:
+
{{File|name=PKGBUILD|content=
+
# $Id: PKGBUILD 88213 2010-08-21 07:36:11Z tpowa $
+
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
pkgbase="kernel26"
+
pkgname=('kernel26' 'kernel26-headers' 'kernel26-manpages' 'kernel26-docs') # Build stock -ARCH kernel
+
# pkgname=kernel26-custom      # Build kernel with a different name
+
_kernelname=${pkgname#kernel26}
+
...
+
}}
+
 
+
Como ves, hay un comentario para contruir un kernel con diferente nombre (# Build kernel with a different name), todo lo que debemos hacer es descomentar esa linea, cambier el sufijo '-custom' por el nombre que quieras, y comentar la linea anterior ( osea el primer pkgname):
+
 
+
{{File|name=PKGBUILD build()|content=
+
...
+
# pkgname=('kernel26' 'kernel26-headers' 'kernel26-manpages' 'kernel26-docs') # Build stock -ARCH kernel
+
pkgname=kernel26-test      # Build kernel with a different name
+
...
+
}}
+
 
+
{{Note|Esto asume que no vas a recompilar los kernel26-headers, -manpages or -docs. Si los queres recompilar, agregalos.}}
+
 
+
Ahora, todas las variables de tu paquete seran cambiadas de acuerdo al nuevo nombre. Por ejemplo, luego de instalar el paqeute, los modulos seran alojados en {{Filename|/lib/modules/<kernel_release>-test/}}.
+
 
+
====Modificando build()====
+
Probablemente necesites un archivo ".config" personalizado para tu kernel. Podes descomentar una de las posibilidades mostradas en la funcion build() del PKGBUILD, por ejemplo:
+
{{File|name=PKGBUILD|content=
+
...
+
# load configuration
+
# Configure the kernel. Replace the line below with one of your choice.
+
#make menuconfig # CLI menu for configuration
+
make nconfig # new CLI menu for configuration
+
#make xconfig # X-based configuration
+
#make oldconfig # using old config from previous kernel version
+
# ... or manually edit .config
+
...
+
}}
+
 
+
Si ya tenias un archivo de configuracion para el kernel. Te sugiero descomentar una de las herramientas de configuracion interactica, como nconfig, y cargar tu configuracion desde alli. Eso evitara problemas con el nombre del kernel.
+
 
+
{{Note|Si descomentas ''return 1'', podes cambiar el directoria principal del kernel luego de que makepkg termine las extracciones y luego hacer la configuracion con nconfig. Esto te permitira configurar tu kernel en varias sesiones. Cuando estes listo para compilar, copia el archivo .config sobre el .config que se haya generado automaticamente, o sobre el config.x86_64 ( esto dependera de la arquitectura del procesador),comenta ''return 1'' y usa '''makepkg -i'''.}}
+
 
+
====Cambiando la función package_kernel26()====
+
Debemos escribir una funcion personalizada para decirle al sistema como instalar el paquete. Esto es muy simple de hacer, solo debemos cambiarle el nombre a la funcion package_kernel26() por el de package_kernel26-test(),(test, recordemos es el nombre del kernel personalizado) y adaptar las instrucciones a tus necesidades. Si no queres cambiar nada, la funcion deberia quedar asi:
+
 
+
{{File|name=PKGBUILD package_kernel26-test()|content=
+
...
+
package_kernel26-test() {
+
pkgdesc="The Linux Kernel and modules"
+
...
+
}
+
}}
+
 
+
===Compilando con varios nucleos===
+
Para decirle al compilador que use todos los nucleos al momento de compilar, usamos el flag -j<numero_de_nucleos>. El numero debe ser de n+1, donde n es la cantidad de nucleos de tu procesador.
+
 
+
Por ejemplo un procesador de 2 nucleos (2+1=3):
+
{{File|name=/etc/makepkg.conf|content=
+
...
+
#-- Make Flags: change this for DistCC/SMP systems
+
MAKEFLAGS="-j3"
+
...
+
}}
+
 
+
===Compilacion===
+
Ahora podemos compilar el kernel, con los comandos usuales:
+
{{Codeline|makepkg}}
+
Si usaste un programa interactivo para configurar los parametros del kernel ( como menuconfig), deberas estar alli dirante la compilacion.
+
 
+
{{Note|El kernel necesita un tiempo para compilar, una hora no es inusual.}}
+
 
+
===Insalacion===
+
Luego de makepkg, podes revisar el archivo kernel26.install. Veras que algunas variables han cambiado. Ahora, solo debemos instalar con pacman ( o algun programa equivalente):
+
{{Codeline|#pacman -U <paquete_del_kernel>}}
+
 
+
===Boot Loader===
+
Las carpetas y archivos de nustro kernel personalizado han sido creadas, ej. /boot/kernel26-test-img . Para testear el kernel, debemos actualizar el bootloader (/boot/grub/menu.lst para GRUB) y agregar las nuevas entradas ('default' y 'fallback') para nuestro kernel. De esta manera, podes tener ambos kernels el ya instalado y el de personalizado en paralelo.
+
 
+
===Drivers propietarios de Nvidia===
+
Revisar [[NVIDIA|Instalacion alternativa: kernel personalizado]].
+
 
+
==Usando [[AUR]]==
+
 
+
En AUR hay alguns paquetes de los kernels mas conocidos. Podes instalarlos como estan, o usarlos como base para tu kernel pernosalizado.
+
 
+
[[Kernels|Kernels en AUR]]
+
 
+
==Tradicional==
+
 
+
[[Kernel Compilation From Source|La manera tradicional ]] es simple y directa.
+
 
+
Este metodo require de la descarga manual del tarbal, y la contruccion en tu directorio home como usuario normal. Una vez configurado, se explican dos metodos de compilacion/instalacion, el metodo manual y el de makepkg/pacman.
+
 
+
Si sos nuevo en este proceso,[[Kernel Compilation From Source For New Users Guide|la manera tradicional para nuevos usuarios]] es la apropiada.
+
 
+
==Revisa tambien ==
+
 
+
*[[Kernels]]
+
*[http://www.kroah.com/lkn/ O'Reilly - El kernel de linux en una cascara de nuez] (ebook gratuito)
+

Latest revision as of 14:02, 30 December 2013