Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porBlanca Alcaraz Camacho Modificado hace 8 años
1
Kernel
2
Agenda ● Introducción. ● Kernel del sistema GNU/Linux. ● Personalizar o actualizar el kernel. ● Proceso de configuración. ● Parchear el kernel. ● Módulos del kernel. ● Futuro del kernel. ● Taller del kernel.
3
Introducción ● “El kernel del sistema GNU/Linux (al que habitualmente se le denomina Linux) es el corazón del sistema: Se encarga de arrancar el sistema y, una vez éste es ya utilizable por las aplicaciones y los usuarios, gestiona los recursos de la máquina en forma de gestión de la memoria, sistema de archivos, entrada/salida, procesos e intercomunicación de procesos”. ● Una de las características de Linux es que es Software Libre, por lo cual, se nos ofrece el código fuente del propio sistema operativo (del kernel), de manera que es una herramienta perfecta la educación en temas de sistemas operativos.
4
Kernel del sistema GNU/Linux ● El núcleo o kernel es la parte básica de cualquier sistema operativo, y en él descansa el código de los servicios fundamentales para controlar el sistema entero.
5
Funciones y Diseño ● Las principales funciones del kernel son las siguientes: – Administración del hardware. – Distribución de los recursos del sistema. – Brinda servicios básicos a todas las partes del sistema. ● Su diseño esta basado de acuerdo al paradigma de Kernel Monolítico.
6
Esquema del Kernel
7
Principales subsistemas del kernel de GNU/Linux ● Gestión de procesos: qué tareas se van a ejecutar y en qué orden y prioridad. Un aspecto importante es la planificación de CPU, cómo se optimiza el tiempo de la CPU para ejecutar las tareas con el mayor rendimiento o interactividad posible con los usuarios. ● Intercomunicación de procesos y sincronización: cómo se comunican tareas entre sí, con qué diferentes mecanismos y cómo pueden sincronizarse grupos de tareas.
8
Principales subsistemas del kernel de GNU/Linux ● Gestión entrada/salida (E/S): control de periféricos y gestión de recursos asociados. ● Gestión de memoria: optimización del uso de la memoria, sistema de paginación y memoria virtual. ● Gestión de archivos: cómo el sistema controla y organiza los archivos presentes en el sistema y el acceso a los mismos. ● Gestión de red: administración de los protocolos de red y los stacks respectivos.
9
Diferencias con kernels comerciales ● En los sistemas propietarios, el kernel está perfectamente “oculto” bajo las capas del software del sistema operativo, y el usuario final no tiene una perspectiva clara de qué es el kernel. ● El usuario no tiene ninguna posibilidad de cambiarlo u optimizarlo directamente, si no es a través del uso de exotéricos editores de “registros” internos, o programas especializados de terceros (normalmente de alto costo). ● El kernel suele ser único y es el que el fabricante proporciona.
10
Diferencias con kernels comerciales ● El fabricante se se reserva el derecho de introducir las modificaciones que quiera y cuando quiera, así como tratar los errores que aparezcan en plazos no estipulados, mediante actualizaciones que nos ofrecen como “parches” de errores. ● Disponer de las actualizaciones de los errores a su debido tiempo, es la única posibilidad de garantizar la seguridad del sistema. ● Muchas organizaciones, grandes empresas, gobiernos, instituciones científicas y militares no pueden depender de los caprichos de un fabricante para solucionar los problemas de sus aplicaciones críticas.
11
Evolución del kernel de Linux Versión 0,01 1,00 1,20 2,00 2,20 2,40 2,60 Fecha 09-1991 03-1994 03-1995 07-1996 01-1999 01-2001 09-2003 SLOC (miles) 7,5 158 277 649 1.536 2.888 4.200
12
Algunos mantenedores del kernel Versión 2.0 2.2 2.4 2.6 Nombre David Weinehall Alan Cox Marcelo Tosatti Andrew Morton
13
Convención de números de las versiones ● Estable. – Nivel de Producción. – Release. ● Solución bugs. ● Incorporan nuevos drivers. ● Desarrollo. – Nivel Experimental. – Release. ● Experimentos. ● Grandes hacks.
14
Algunas características del kernel 2.6 ● Carga dinámica de módulos. ● Soporte SMP. ● Interrumpible(Preemptive). ● Interesante manejo de hebras. ● Modelo de dispositivos OO & sysfs. ● Ignora características de diseño de sistemas UNIX tradicionales.
15
Actualizar o personalizar el kernel ● Normalmente, construimos nuestros sistemas GNU/Linux a partir de la instalación en nuestros equipos de alguna de las distribuciones de GNU/Linux, ya sean comerciales como Red Hat, Mandriva, Suse o “sin fines de lucro” como Debian. ● Estas distribuciones aportan, en el momento de la instalación, una serie de kernels binarios ya preconfigurados y compilados, y normalmente tenemos que elegir qué kernel del conjunto de los disponibles se adapta mejor a nuestro hardware.
16
Actualización del kernel de la distribución ● Cuando la comunidad Linux crea una nueva versión del kernel, cada distribuidor la une a su distribución y hace las pruebas pertinentes para asegurar la calidad del núcleo. ● Posteriormente al periodo de prueba, se identifican posibles errores, los corrige y produce la actualización del kernel pertinente a la que ofrecía en la instalación. ● Los usuarios pueden bajar la distribución del sitio web o bien actualizarla mediante algún sistema automático como APT en Debian. ● Normalmente, se verifica qué versión tiene el sistema, se baja el kernel nuevo y se hacen los cambios necesarios para que la siguiente vez arranque con el nuevo kernel, y se mantenga la versión antigua por si hay problemas.
17
Ventajas ● Este tipo de actualización nos simplifica mucho el proceso actualización del kernel. ● Oculta muchos aspectos al usuario, transformándolo en un proceso trivial para él.
18
Desventajas ● El kernel no está actualizado en la última versión disponible. ● El kernel estándar no dispone de soporte de los dispositivos que tenemos, porque no han sido habilitados. ● Los controladores que nos ofrece un fabricante necesitan una nueva versión del kernel o modificaciones. ● A la inversa, el kernel es demasiado moderno, tenemos hardware antiguo que ya no tiene soporte en el kernel moderno. ● El kernel, tal como está, no ofrece las máximas prestaciones de nuestros dispositivos. ● Nos gusta investigar o probar los nuevos avances del kernel o bien queremos tocar o modificar el kernel.
19
Personalizar el kernel ● En este caso, iremos a las fuentes del kernel y adaptaremos “a mano” el hardware o las características deseadas. ● Pasaremos por un proceso de configuración y compilación de las fuentes del kernel para, finalmente, crear un kernel binario que instalaremos en el sistema, y tenerlo, así, disponible en el siguiente arranque del sistema.
20
Ventajas ● Mayor fiabilidad de nuestro sistema. ● Mayor control de las características instaladas en el kernel. ● Mayor flexibilidad a la hora de soportar algún nuevo dispositivo. ● Investigar y conocer el código completo del kernel.
21
Desventajas ● Presenta un costo de administración alto; ya que debemos disponer de conocimientos amplios de los dispositivos y de las características que estamos escogiendo. ● Las consecuencias que puedan tener las opciones elegidas pueden tener alto impacto para el sistema y el hardware, si no son las apropiadas.
22
Proceso de configuración y compilación ● La personalización del kernel es un proceso costoso y necesita amplios conocimientos de lo que se está haciendo, y además, es una de las tareas críticas, de la cual depende la estabilidad del sistema, por la propia naturaleza del kernel, puesto que es el elemento central del sistema. ● Cualquier error de procedimiento puede comportar la inestabilidad o la pérdida del sistema. ● Sin ánimo de exagerar, casi nunca aparecen problemas si se siguen los pasos adecuadamente, se tiene conciencia de lo que se está haciendo y se toman algunas precauciones.
23
¿Como obtener el kernel? ● A través del Repositorio. – Principal.(Oficial) ● http://www.kernel.org/pub http://www.kernel.org ● ftp://ftp.kernel.org/pub ftp://ftp.kernel.org/pub ● rsync://rsync.kernel.org/pub – Local.(Oficial país) ● http://www.cl.kernel.org/pub http://www.cl.kernel.org/pub – Si queremos el última versión siempre tendremos que obtenerlo de los repositorios. ● A través de la distribuciones.
24
¿Donde dejar las fuentes? ● Repositorio. – /usr/src/linux ● Formatos. – Archivos fuentes en formato bzip2. – Archivos fuentes en formato gzip. – Archivos Patchs.
25
Desempaquetar y descomprimir el kernel ● BZIP2. ● linux-x.y.z.tar.bz2 ● $ tar jxvf linux-x.y.tar.bz2 ● GZIP. ● linux-x.y.z.tar.gz ● $ tar zxvf linux-x.y.tar.gz
26
Árbol del Kernel ● arch/ – Fuentes de cada arquitectura. ● crypto / – API criptografía. ● Documentation / – Documentación del código fuente del kernel. ● drivers/ – Drivers de dispositivos. ● fs/ – VFS & sistemas de archivos.
27
Árbol del Kernel ● include/ – Headers del kernel. ● init/ – Inicialización del kernel. ● ipc/ – Código de comunicación de los procesos. ● kernel/ – Kernel y subsistemas. ● lib/ – Rutinas.
28
Árbol del kernel ● mm/ – Administración de memoria. ● net/ – Subsistema de red. ● scripts/ – Scripts para construcción del kernel. ● security/ – Modulo de seguridad. ● sound/ – Subsistema de sonido. ● user/ – Código user-space.
29
Construcción del kernel ● Kernel 2.6 – Wizard job. ● Almacenamiento de configuraciones. – Archivo.config ●.config – Opciones poseen prefijo CONFIG_ – Opciones. ● Booleanas. ● Triestado.
30
Construcción del kernel ● Opciones boleanas. – Acepta: y (yes) o n (no) – Ejemplo: CONFIG_PREEMPT=y ● Opciones triestado. – Acepta: y (yes), n (no) o m (modulo) – Ejemplo: CONFIG_BLK_DEV_LOOP=m
31
Construcción del kernel ● Utilidad comando de texto. $ make config ● Utilidad gráfica c/s n-curses. $ make menuconfig ● Utilidad gráfica c/s X11(xorg). $ make xconfig ● Utilidad gráfica c/s GTK+. $ make gconfig
32
Construcción del kernel ● Utilidad defconfig – Iniciados. $ make defconfig ● Utilidad oldconfig – Avanzados. – Validar la configuración. $ make oldconfig
33
Construcción del kernel ● Correr MAKE. – Una vez configuradas y validadas las opciones. $ make – make, llama por atrás a: $make dep, generar las posibles dependencias entre el código. $make bzImage, generar el tipo de imagen de kernel que se quiere. $make modules, construye los módulos del núcleo. ● Salida MAKE. – Capturar en archivo. $ make > algun_archivo_de_texto.txt – Desechar salida. $ make > /dev/null
34
Construcción del kernel ● MAKE y Múltiples tareas. $ make –jn – Ejemplo de máquina con dual core. $ make –j 4 – Aprovechar sistemas SMP. – Rapidez en la construcción.
35
Instalar los módulos $ make modules_install ● Instala y compila los módulos. ● Ubicación /lib ● Crea archivo System.map – Contiene tabla de símbolos del kernel. – Mapea símbolos del kernel a direcciones de memoria. – Utilizado durante depuración.
36
Instalar el kernel ● Manual. – Bajo el supuesto de una arquitectura i386. ● Buscar imagen en arch/i386/boot/bzImage ● Copiar imagen en directorio /boot ● Renombrar a vmlinuz-version ● Cargar nueva entrada en gestor de arranque. – LILO – /etc/lilo.conf – lilo -v – GRUB ● /boot/grub/menu.lst ● Atomático – $ make install
37
Parchar el kernel ● Un archivo de parche (patch file) respecto al kernel de Linux es un archivo de texto ASCII que contiene las diferencias entre el código fuente original y el nuevo código, con información adicional de nombres de archivo y líneas de código. ● El programa patch (ver man patch) sirve para aplicarlo al árbol del código fuente del kernel (normalmente en /usr/src). ● Para corregir el problema (o añadir la nueva prestación), se suele distribuir un parche en lugar de un nuevo kernel entero.
38
Parchar el kernel ● El parche se suele distribuir en un archivo comprimido tipo bz2 (bzip2, aunque también puede encontrarse en gzip con extensión.gz), como, por ejemplo, podría ser: – patchxxxx-2.6.21-pversion.bz2 ● xxxx: algún mensaje sobre el tipo o finalidad del parche. ● 2.6.21: la versión del kernel al cual se le va a aplicar el parche. ● pversion: hace referencia a la versión del parche. – Lo importante es que estamos hablando de aplicar parches a las fuentes del kernel.
39
Aplicar el parche en el kernel ● Copiar el parche en /usr/src/linux ● Ir al directorio de las fuentes del kernel (/usr/src/linux) ● Descomprimir el parche a través del siguiente comando: – bunzip2 patch-xxxxx-2.6.21-version.bz2 ● Leer el README que trae el parche. ● Aplicar el parche a través del siguiente comando: – patch -p1 < patch-xxxxx-2.6.21-version ● Recompilar el kernel y volverlo a construir.
40
Módulos del kernel ● El kernel es capaz de cargar dinámicamente porciones de código (módulos) bajo demanda, para complementar su funcionalidad (se dispone de esta posibilidad desde la versión 1.2 del kernel). ● Los módulos pueden añadir soporte para un sistema de archivos o para dispositivos hardware específicos. ● Cuando la funcionalidad proporcionada por el módulo no es necesaria, el módulo puede ser descargado, liberando memoria.
41
Módulos del kernel ● Normalmente, bajo demanda, el kernel identifica una característica no presente en el kernel en ese momento, contacta con un thread del kernel denominado kmod (en las versiones kernel 2.0.x el daemon era llamado kelneld), éste ejecuta un comando modprobe para intentar cargar el módulo asociado a partir, o de una cadena con el nombre de módulo o bien un identificador genérico; esta información se consulta en el archivo /etc/modules.conf en forma de alias entre el nombre y el identificador.
42
Módulos del kernel ● A continuación se busca en /lib/modules/version- kernel/modules.dep para saber si hay dependencias con otros módulos. ● Finalmente, con el comando insmod se carga el módulo desde /lib/modules/version/ (el directorio estándar para los módulos), la version-kernel es la versión del kernel actual, se utiliza el comando uname -r para determinarla.
43
Utilidades para módulos ● lsmod: podemos ver los módulos cargados en el kernel (la información se obtiene del pseudoarchivo /proc/modules). Se listan los nombres, las dependencias con otros (en [ ]), el tamaño del módulo en bytes, y el contador de uso del módulo; esto permite descargarlo si la cuenta es cero. ● modprobe: intenta la carga de un módulo y de sus dependencias. ● insmod: carga un módulo determinado. ● depmod: analiza dependencias entre módulos y crea archivo de dependencias. ● rmmod: saca un módulo del kernel. ● Otros comandos pueden ser utilizados para depuración o análisis de los módulos, como modinfo: lista algunas informaciones asociadas al módulo, o ksyms, permite examinar los símbolos exportados por los módulos (también en /proc/ksyms).
44
Taller del kernel ● Desarrollar la actividad de construir un nuevo núcleo, utilizando las formas vistas en este capitulo.
45
Preguntas y Respuestas
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.