150 likes | 427 Views
Kernel de Linux. Configuración del kernel. ¿Qué es el núcleo?. El kernel o núcleo de Linux se podría definir como el corazón de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos.
E N D
Configuración del kernel ¿Qué es el núcleo? • El kernel o núcleo de Linux se podría definir como el corazón de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos. • Las funciones mas importantes del mismo, aunque no las únicas, son: • Administración de la memoria, para todos los programas en ejecución. • Administración del tiempo de procesador, que estos programas en ejecución utilizan. • Es el encargado de que podamos acceder a los periféricos / elementos de nuestro ordenador de una manera cómoda. Kernel de Linux
Configuración del kernel ¿Qué es el núcleo? (II) • Existen dos versiones del Linux kernel: • Versión de producción: La versión de producción, es la versión estable hasta el momento. Esta versión es el resultado final de las versiones de desarrollo o experimentales. Cuando el equipo de desarrollo del kernel experimental, decide que ha conseguido un kernel estable y con la suficiente calidad, se lanza una nueva versión de producción o estable. Esta versión es la que se debería utilizar para un uso normal del sistema, ya que son las versiones consideradas más estables y libres de fallos en el momento de su lanzamiento. • Versión de desarrollo: Esta versión es experimental y es la que utilizan los desarrolladores para programar, comprobar y verificar nuevas características, correcciones, etc. Estos núcleos suelen ser inestables y no se deberían usar, a no ser que sepas lo que haces. Kernel de Linux
Configuración del kernel ¿Qué es el núcleo? (III) • Como interpretar los números de las versiones: • Las versiones del kernel se numeran con 3 números, de la siguiente forma: XX.YY.ZZ • XX: Indica la serie principal del kernel. Hasta el momento solo existen la 1 y 2. Este numero cambia cuando la manera de funcionamiento del kernel ha sufrido un cambio muy importante. • YY: Indica si la versión es de desarrollo o de producción. Un número impar, significa que es de desarrollo, uno par, que es de producción. • ZZ: Indica nuevas revisiones dentro de una versión, en las que lo único que se ha modificado, son fallos de programación / bugs. Kernel de Linux
Configuración del kernel ¿Qué es el núcleo? (IV) • Unos ejemplos nos ayudaran a entenderlo mejor: • ej1: version del kernel 2.4.0: Kernel de la serie 2 (XX=2), version de produccion 4 (YY=4 par), primera version de 2.4 (ZZ=0). • ej2: version del kernel 2.4.1: Kernel de la serie 2, version 4, en el que se han corregido errores de programacion presentes en la version 2.4.0 (ZZ=1). • ej3: version del kernel 2.5.0: version 0 del kernel de desarrollo 2.5. Kernel de Linux
Configuración del kernel ¿Por qué puedo necesitar actualizar el núcleo? • Los núcleos nuevos normalmente ofrecen la posibilidad de entenderse con más accesorios hardware (o sea, incluyen más manejadores), se ejecutan más rápidamente, son más estables o corrigen errores de otras versiones. Mucha gente se actualiza el núcleo para poder usar nuevos manejadores que necesitan o librarse de ``bugs'' de la versión que usaban. Kernel de Linux
Configuración del kernel Configuración e instalación de un nuevo kernel 1.- Bajar la versión a instalar. El kernel se puede bajar de un gran número de servidores en Internet. http://www.kernel.org/ NOTA: Si el kernel a instalar es de las ultimas series de producción, hay que tener en cuenta que algunas distribuciones (si son antiguas) pueden no estar preparadas para hacer uso de estas series. Si la distribución no viene preparada para soportar los últimos kernels, habrá que actualizar una serie de paquetes / programas antes de instalar el nuevo kernel (más información en la documentación que acompaña al kernel) o actualizar a una distribución o versión de la distribución que los soporte. 2.- Entrar como root: su root Kernel de Linux
Configuración del kernel Configuración e instalación de un nuevo kernel (II) 3.- Copiar el archivo bajado al directorio /usr/src/ cp linux-xx.xx.xx.tar.bz2 /usr/src/ 4.- Descomprimirlo y desempaquetarlo: tar -xvzpf linux-xx.yy.zz.tar.gz NOTA IMPORTANTE: El archivo linux-xx.yy.zz.tar se desempaquetará en el directorio /usr/src/linux. Si ya existe un directorio llamado linux en el sistema, hay que renombrarlo, p.ej: mv linux linux-old. En algunas distribuciones, linux es un enlace simbólico a linux-xx.yy.zz, hay que borrar este enlace simbólico. Es importante que no exista ningún directorio / enlace simbólico llamado linux, antes de desempaquetar la nueva versión. 5.- Entrar en /usr/src/linux: cd /usr/src/linux make mrproper / * borra los ficheros anteriores de otra compilación */ Kernel de Linux
Configuración del kernel Configuración e instalación de un nuevo kernel (III) 6.- Configurar el kernel. Se puede hacer de tres maneras diferentes: • make config (modo texto). • make menuconfig (modo texto con menús) – make xconfig (X-windows version). Kernel de Linux
Configuración del kernel Configuración e instalación de un nuevo kernel (IV) 7.- Configurar las opciones deseadas para el nuevo kernel. Una vez terminada la configuración, grabar los cambios y salir del programa de configuración. 8.- Compilar el nuevo núcleo: make dep /* Crea las dependencias */ make clean /* Limpia las fuentes del kernel */ make bzImage /* compila el kernel */ 9.- Si en el proceso de configuración, elegimos alguna opción como módulo, tendremos que compilar / instalar dichos módulos: make modules /* compila los módulos */ make modules_install/* instala los módulos */ NOTA: No hay que olvidarse de ejecutar como root el comando depmod -a la primera vez que arranquemos con el nuevo kernel, para computar las dependencias entre módulos. Kernel de Linux
Configuración del kernel Configuración e instalación de un nuevo kernel (V) 10.- Ya tenemos el kernel y los módulos compilados, ahora tenemos que instalarlo. Copiamos la nueva imagen del kernel a nuestro directorio /boot. (Desde /usr/src/linux): cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.18 11.- Añadimos a nuestro gestor de arranque esta nueva imagen para que arranque desde ella. Para el gestor de arranque GRUB, nos limitaríamos a introducir en el fichero /boot/grub/grub.conf las siguientes líneas: Title linux-2.4.3 root(hd0,1) kernel /vmlinuz-2.4.18 ro root=/dev/hda Kernel de Linux
Configuración del kernel Parches (patches) para el Kernel • Un parche para el kernel no es más que un fichero, que solamente contiene información sobre las líneas de código que han cambiado desde la versión precedente del núcleo. De esta manera, solamente hay que bajar un fichero con los cambios, en vez del núcleo al completo. • Algo a tener muy en cuenta si vamos a actualizar el núcleo por medio de parches en vez de bajar el núcleo al completo, es que hay que ir actualizando de versión a versión. Para que se entienda un poco mejor, aqui teneis un ejemplo: Si tenemos el núcleo 2.2.0 y vamos a actualizarlo al 2.2.1, nos podemos bajar el fichero patch-2.2.1.gz [70Kb] en vez, del núcleo 2.2.1 al completo [12.5Mb]. Pero si tenemos el núcleo 2.2.0 y vamos a actualizar al 2.2.4, NO vale con bajar el fichero patch-2.2.4.gz nada más, tendríamos que bajarnos el 2.2.1, 2.2.2, 2.2.3 y 2.2.4. Esto es así porque los ficheros patch solamente contienen los cambios de versión a versión. Kernel de Linux
Configuración del kernel Parches (patches) para el Kernel (II) Una vez bajado el fichero patch hay que aplicarlo al núcleo que tenemos y compilar de nuevo. El procedimiento para actualizar el núcleo por medio de ficheros patch es el siguiente: 1.- Copiar el fichero patch-XX.YY.ZZ.gz al directorio /usr/src : cp patch-XX.YY.ZZ.gz /usr/src/ 2.- Cambiar a este subdirectorio y descomprimir el fichero: gunzip patch-XX.YY.ZZ.gz 3.- Aplicar el parche: patch -s -p0 < patch-XX.YY.ZZ 4.- La opcion -s hará que solo se impriman mensajes de error. Si no recibes ningún mensaje de error queda entrar en /usr/src/linux: cd /usr/src/linux 5.- Y ejecutar make clean, make xconfig, make dep, make bzImage, el resto igual que cuando obtenemos un nuevo kernel. Kernel de Linux
Configuración del kernel Linux Kernel Modules • Originalmente Linux era monolítico, es decir, todas las funcionalidades estaban incluidas en el código del núcleo y era necesario recompilarlo para soportar un nuevo dispositivo, etc. Sin embargo, esta idea no encaja con la enorme diversidad de componentes hardware que existen. Linux, pretende obtener todo el partido de la máquina en la que se está ejecutando. Debido a todo esto, el diseño fue migrando paulatinamente a un modelo basado en módulos. Se procura así que el núcleo sea lo más ligero posible y cuando sea necesario añadir una nueva funcionalidad como soportar una nueva tarjeta de sonido, sólo haya que compilar el módulo y añadirlo al núcleo Kernel de Linux
Configuración del kernel Linux Kernel Modules (II) Podemos entonces decir que un módulo es una pieza de código objeto que está especialmente preparado para integrarse dinámicamente con el resto del kernel. • Las implicaciones de esta definición son enormes, pues programar un módulo es programar una porción del kernel; ya no estamos haciendo aplicaciones en espacio de usuario, estamos creando parte del kernel en si mismo, implementando llamadas al sistema y manejando el hardware a bajo nivel. Kernel de Linux