La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Instalación y Configuración del Kernel Realizado por Kepa Bengoetxea.

Presentaciones similares


Presentación del tema: "Instalación y Configuración del Kernel Realizado por Kepa Bengoetxea."— Transcripción de la presentación:

1 Instalación y Configuración del Kernel Realizado por Kepa Bengoetxea

2 Referencias Compilar Ubuntu: https://help.ubuntu.com/community/Kernel/Compile Construir un nuevo kernel: http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html Leer kernel-COMO: http://www.ubuntu-es.org/node/431 http://www.ubuntulinux.org/wiki/KernelHowto

3 Instalar Kernel/Núcleo A)Instalar desde un Kernel Precompilado B)Instalar desde las Fuentes del Kernel configurando (personalizando) y compilando.

4 Núcleos Precompilados.Modo gráfico Por defecto, Ubuntu GNU/Linux viene con un núcleo estándar compilado para i386 ó genérico para los x86/x86_64.Para ver si tenemos instalado el adecuado o si podemos actualizar a uno nuevo, podemos seguir los siguientes pasos: menú Sistema de GNOME, abrimos Administración e iniciamos el Gestor de Paquetes Synaptic. Una vez dentro de Synaptic, si disponemos de conexión a Internet, pulsamos en Recargar para obtener los últimos paquetes.

5 Núcleos Precompilados.Modo gráfico Panel izquierdo, escogemos la sección Sistema Base. OJO!!: para evitar problemas con núcleos no oficiales, marcamos Sistema base, no Sistema base(universe)‏ Bajamos hasta la zona dónde tenemos paquetes que se llaman: linux- image-X.X.X-nombre_de_nuestro_procesador y marcamos la versión más actual. Por ejemplo, en este momento, para mi ordenador sería: linux-image-2.6.24-23-generic

6 Núcleos Precompilados.Modo gráfico Si tenemos algún hardware que requiera módulos del núcleo especiales (véase tarjetas Nvidia), debemos marcar también los linux- restricted-modules correspondientes al núcleo seleccionado desde panel izquierdo seleccionando en la sección: Sistema Base (restricted)‏ ó Varios Basados en Texto (restricted)‏ Aplicamos los cambios. Al reiniciar la próxima vez, se cargará el núcleo seleccionado.

7 Núcleos Precompilados.Modo Texto #La versión actual es: uname -r ->2.6.24-22-generic #instalar uno de los kernel precompilados sudo aptitude search linux-image sudo aptitude install linux-image-2.6.24-23-generic... p->i linux-image-2.6.24-23-generic (x86-x86_64)...

8 Núcleos Precompilados #Si tenemos algún hardware que requiera módulos del núcleo especiales (véase tarjetas Nvidia) del tipo restringido sudo aptitude search linux-restricted-modules sudo aptitude install linux-restricted-modules-2.6.24-23-generic i linux-restricted-modules-2.6.24-23-generic - Non-free Linux 2.6.20 modules on x86/x86_64

9 Fuentes del Kernel Cuando SI compilar kernel Cuando quieras probar las características experimentales deshabilitadas por defecto. Si estás resolviendo un bug del kernel Si tienes hardware, que no tiene activado su soporte por defecto en el kernel o viene en otra versión del kernel superior. Optimizar tu kernel Nota : No necesitas compilar el kernel para compilar un driver especial. Sólo necesitas instalar el paquete linux-headers.

10 Fuentes del Kernel Antes de empezar a Compilar Tener permisos de administrador. A la hora de configurar nuestro nuevo kernel debemos seleccionar que componentes HW queremos que soporte, por lo que recogeremos la información del HW de nuestro PC: Processor, Drive type and Controller (SCSI, IDE), Ethernet devices, Graphics and Sound Cards, USB HUB...

11 Fuentes del Kernel Antes de empezar a Compilar Conozca tu hw con: lspci lsusb lshw cat /proc/cpuinfo cat /proc/net/dev

12 Fuentes del Kernel Antes de empezar a Compilar A la hora de bajar el kernel de linux tengo 2 opciones:  Bajar las fuentes del kernel modificadas por mi distribución, e instalarlas utilizando las herramientas propias de mi distribución: Ubuntu-Debian (apt, make-kpkg, dpkg) ó Fedora- Redhat(yum, rpm, rpmbuild)...  Bajar las fuentes del kernel oficial www.kernel.org liderado por el grupo de Linus Torvaldswww.kernel.org

13 Fuentes del Kernel Antes de empezar a Compilar ¿Cuál de ellas es la mejor opción?  Si las modificaciones que vas a realizar en la configuración son pocas lo más seguro es instalar la versión de la distribución, ya que estas incluyen estabilidad y parches de características que no vienen en en núcleo oficial. Por ejm: Parches de Seguridad (Selinux),...  Normalmente pasa bastante tiempo desde que sale el kernel de la distribución frente al kernel oficial, es por ello, que si nos urge probar alguna característica del kernel oficial de linux la tendremos que bajar, NO pudiendo usar el de la distribución.

14 Fuentes del Kernel Método Universal. Download Bajar la última versión:  http://www.kernel.org/ o http://www.kernel.org/mirrors/  The latest stable version of the Linux kernel is: 2.6.29.1 Mi Ubuntu esta actualizado a: uname -r ->2.6.24-23-generic Bajamos.tar.gz o tar.bz (pulsando en F)‏ The latest stable version of the Linux kernel is: 2.6.29.12009- 04-02 00:39 UTC F V VI C Changelog

15 Fuentes del Kernel M. Universal.Descomprimir $ sudo cp linux-XYZ.tar.bz2 /usr/src/ && cd /usr/src && tar -jxvf linux-XYZ.tar.bz2 Los contenidos del fichero se expandirán en /usr/src/linux-XYZ. Vaya ahora a ese directorio y lea el fichero README. Encontrará una sección “INSTALLING the kernel”'. Siga las instrucciones que allí se digan.

16 Compilación Pasos: 1.-Posiciónate: cd /usr/src/linux-X.Y.Z 2.-Ejecuta make mrproper (Si ya habíamos compilado anteriormente un núcleo con estas fuentes, elimina todos los binarios.o que puedan quedar,...)‏

17 Compilación 3.-Elige las características del núcleo. Utilizando diferentes aplicaciones:  $sudo make config :(modo texto)Un programa shell-script de configuración que le preguntará bastantes cosas.  $sudo make menuconfig: (modo texto con menus)‏  $sudo make xconfig: (basado en X-windows en la versión 2.4 pero en la versión 2.6 se basa en las librerías QT de desarrollo “qt-devel”)‏  $sudo make gconfig <-- New in 2.6.x, based on GTK and not TCL-TK

18 Compilación Se procede de la siguiente manera: make xconfig  Cargar la configuración del fichero de configuración obtenido en el proceso de instalación que esta en “/boot/config- version”  Selecciona los controladores de los dispositivos detectados con lspci y añade las características del kernel que desees.  Existen 3 posibilidades de selección: 'y' incluirá en la parte monolítica del kernel. 'm' que lo hará como módulo. 'n' que no será seleccionado. Ejm:cargar el módulo PPP sólo cuando vayamos a usar el módem.

19 Opciones de Configuración Code madurity level options: 'y/n' /*poder usar drivers inestables*/ Loadable module support:  Enable loadable module support:'y'  Set version information on all module symbols :'n' (Guardar los modulos, al cambiar de kernel, utilizar 'y' si tenemos modulos externos al núcleo)‏  Automatic kernel module loading (KMOD):'y' Procesor type and features:  High Memory support:off(x)->Menos 960MB  Math emulation:'n'  MTRR(Memory Type Range Register) support:'n'(PCI/AGP)‏

20 Opciones de Configuración Soporte para los Sistemas de ficheros (Filesystems):  Second extended (ojo no como módulo,unica_ y);  msdos (acceder desde Linux a sus particiones de MS-DOS o quiere montar disquetes de ese sistema.)‏  umsdos (Sirve para quienes quieran instalar Linux en la partición DOS, pero nada más)‏  /proc (interfaz por medio de ficheros con la tabla de procesos del núcleo, usada por programas como `ps'. Pruebe a teclear `cat /proc/meminfo' o `cat /proc/devices'. Muchas utilidades de Linux lo necesitan.

21 Opciones de Configuración Soporte para los Sistemas de ficheros (Filesystems):  ISO9660 - Si tiene un CD-ROM.  NTFS (Soporta Sistema de Ficheros de NT,XP,2000)‏  quota support - Selecciónelo si quiere administrar el espacio que consumen en disco los usuarios del sistema  mandatory lock support- Selecciónelo si utiliza como servidor de Bases de Datos o Ficheros.  Vfat: Soporta fat y fat32

22 Opciones de Configuración Soporte para los Sistemas de ficheros (Filesystems):  NFS :Si su máquina está en red y quiere acceder a sistemas de ficheros remotos con NFS.  SMB filesystem support: nos permitirá montar volúmenes compartidos por clientes de red NetBios.  UFS Soporte para el Unix FileSystem, empleado por *nixes BSD, como SunOS, FreeBSD, NetBSD, NeXTstep)‏  Sys V and Coherent filesystem support permitirá montar particiones de otros *nixes System V, como SCO Unix, Xenix y Coherent.

23 Opciones de Configuración ¡Pero no sé qué sistemas de ficheros necesito! cat /etc/fstab o mount /dev/hda3 on / type ext3 (rw)‏ none on /proc type proc (rw)‏ usbdevfs on /proc/bus/usb type usbdevfs (rw)‏ /dev/hda5 on /boot type ext3 (rw)‏ none on /dev/pts type devpts (rw,gid=5,mode=620)‏ /dev/hda8 on /home type ext3 (rw)‏ none on /dev/shm type tmpfs (rw)‏

24 Opciones de Configuración /dev/hda11 on /tmp type ext3 (rw)‏ /dev/hda6 on /usr type ext3 (rw)‏ /dev/hda9 on /usr/local type ext3 (rw)‏ /dev/hda7 on /var type ext3 (rw)‏ /dev/hda2 on /dos type vfat (rw)‏ /dev/cdrom on /mnt/cdrom type iso9660 (ro,nosuid,nodev,user=kepa)‏ /dev/fd0 on /mnt/floppy type msdos (rw)‏ Para saber qué sistemas de ficheros usa en el núcleo actual puede teclear 'cat /proc/filesystems'

25 Opciones de Configuración Manejadores de tipo carácter (Character devices)‏ Tarjeta de sonido (Sound card)‏ Kernel hacking: n (para versiones de producción)‏...

26 Compilación Núcleo 4.-El GRAN MOMENTO: COMPILAMOS !!!  Compilación comprimida del nucleo: make  Crea el fichero bzImage en la carpeta /usr/src/ linux- XYZ /arch/i386/boot/ que es la imagen comprimida del núcleo.  También crea el fichero system.map en la carpeta /usr/src/ linux-XYZ /System.map

27 Compilación Núcleo ¿Que es System.map? Un símbolo representa un bloque de programa: un nombre de función o un nombre de variable El kernel no usa nombres simbólicos como BytesRead() para llamar a una función sino que usa direcciones de funciones del tipo c0343f20 Existe un fichero llamado system.map donde se guarda la tabla de símbolos con los nombres de los símbolos y su dirección.Ejm: c03441a0 B dmi_broken c03441a4 B is_sony_vaio_laptop...

28 Compilación Núcleo ¿Que es System.map? Hay 2 ficheros son usados como la tabla de símbolos del kernel: /proc/kallsyms y System.map /proc/kallsyms es un fichero del tipo proc que se crea al arrancar el kernel con el contenido del system.map. Cuando compilas el nuevo kernel se genera un nuevo system.map.

29 Compilación e Instalación de Módulos 5.-Compilar los módulos seleccionados e instalará los módulos compilados como root: $sudo make modules_install make modules //Compilar los módulos copia módulos a "/lib/modules/`uname -r`custom") NOTA: ejecutar depmod -a en el primer arranque de dicho núcleo, para registrar las dependencias entre módulos.

30 Instalación Núcleo 6.-Instala la entrada del nuevo kernel #copia el núcleo compilado en /boot cp /usr/src/linux-XYZ/arch/i386/boot/bzImage /boot/vmlinuz-X.Y.Z #Tabla de símbolos:http://www.dirac.org/linux/system.map/ cp /usr/src/linux-XYZ/system.map /boot/system.map-X.Y.Z #Salva el fichero de configuración en /boot cp /usr/src/linux-XYZ/.config /boot/config-X.Y.Z

31 Instalación Núcleo 6.-Instala la entrada del nuevo kernel #si hemos elegido los drivers IDE y ext3 por ejemplo como módulos cuando el kernel intenta cargar el sistema de ficheros root no puede ya que para cargarlos necesita de los drivers que están en el sistema de ficheros root (/lib/modules...). Para solventar este problema se crea un fichero con dichos drivers, que se cargan junto al kernel en memoria. Este fichero se crea con el siguiente comando: mkinitrd initrd.img-2.6.24 2.6.24 En ubuntu se usa: mkinitramfs -o /boot/initrd.img-2.6.24 2.6.24

32 Instalación Núcleo #Modificar el cargador GRUB con la nueva entrada.  El archivo de configuración:/boot/grub/menu.lst default=1 timeout=10 title Ubuntu 8.04.2, kernel 2.6.24-23-generic root (hd0,5)‏ kernel /boot/vmlinuz-2.6.24-23-generic root=UUID=dda38e2b-9a90-4085-88ea- 6cbb368f7e9f ro quiet splash initrd /boot/initrd.img-2.6.24-23-generic quiet savedefault

33 Instalación Núcleo 7.-Al arrancar depmod -a y comprobar que todo a arrancado correctamente examinando dmesg

34 Parchear el kernel Un parche para el núcleo es un fichero que sólamente contiene información, sobre las líneas de código que han cambiado desde la versión precedente del núcleo. Ventajas:  Ejm1:Un núcleo 2.2.0 y vamos a actualizarlo al 2.2.1. Tendrías que bajarte el fichero patch-2.2.1.gz [70Kb] en vez, del núcleo 2.2.1 al completo [12.5Mb]. Desventajas:  Ejm2:Un núcleo 2.2.0 y vamos a actualizar al 2.2.4.Tendrías que bajarte el 2.2.1, 2.2.2, 2.2.3 y 2.2.4. Los patch sólamente contienen los cambios de versión a versión.

35 Parchear el kernel Antes de empezar: guardar una copia del núcleo. Bajar y copiar el parche: patch-2.4.22 (donde esta el linux- 2.4.21.tar.gz)‏ Descomprimir: bunzip2 patch-2.4.22.bz2 Ejecuta:patch -s -p0 < patch-2.4.22 Para ver qué partes no se han modificado correctamente, busque los ficheros.rej en el directorio de las fuentes. find. -name '*.rej' -print

36 Parchear el kernel Kernel 2.6:  make xconfig  make  make modules_install  make install

37 Usando el kernel de la distribución Usando Ubuntu: http://www.ubuntu-es.org/node/431 https://help.ubuntu.com/community/Kernel/Compile Usando Debian: http://www.debian.org/releases/stable/i386/ch08s06.html.es Usando Fedora: http://fedora.redhat.com/docs/release-notes/fc4/#sn-kernel-flavors http://oak.cats.ohiou.edu/~hobbsk/kernel-compilation-tutorial-en/steps.html

38 Ubuntu 8.04 Hardy Ubuntu 8.04 Hardy :el lanzamiento incluye el kernel genérico 2.6.24-16.30 basado en 2.6.24.3 de vanilla. Ubuntu incluye parches adicionales para mejoras, arreglar errores, o añadir nuevas características. Es por esta razón que el kernel de ubuntu no es totalmente equivalente al llamado vanilla kernel o kernel vainilla que está en sitio web www.kernel.org.

39 Obtener las fuentes del Kernel En los repositorios de Ubuntu os vais a encontrar con paquetes llamados kernel-source y con paquetes llamados linux-source. Ambos son las fuentes del kernel. ¿Cuál es la diferencia?, pues que los kernel-source vienen de Debian, y los linux-source vienen de Ubuntu. Por lo tanto para obtener las fuentes del kernel que tenemos instalado y corriendo en nuestro sistema, sólo tendremos que hacer: $ sudo apt-get install linux-source Con esto se descargará el archivo linux-source-nº_de_version.tar.bz2 en /usr/src

40 Obtener las fuentes del Kernel Nos movemos a ese directorio:$ cd /usr/src Si existe un enlace llamado linux a un kernel antiguo, lo borramos: $ sudo rm linux Ahora vamos a descomprimir el archivo de las fuentes: $ sudo tar jxvf linux-source-2.6.24.tar.bz2 Creamos un enlace simbólico (llamado linux) a ese directorio: $ sudo ln -s linux-source-2.6.24 linux

41 Instala Herramientas Necesarias para compilar Instala los siguientes paquetes: sudo apt-get install build-essential kernel-package kernel-package: A utility for building Linux kernel related Debian packages. build-essential: informational list of build-essential packages

42 Configurar el kernel Hay varias formas de configurar el kernel. La mayoría de la gente utiliza una de estas dos: make menuconfig o make xconfig. La diferencia es que con make menuconfig no hace falta tener las Xwindow corriendo, y con make xconfig sí. Nota: para utilizar make menuconfig necesitaremos el paquete libncurses5-dev (con todas sus dependencias) y para utilizar make xconfig necesitaremos los paquetes libqt3-headers y libqt3-mt-dev (con todas sus dependencias).

43 Configurar el kernel Así que según lo que queramos utilizar, tendremos que hacer: $ sudo apt-get install libncurses5-dev o bien: $ sudo apt-get install libqt3-headers libqt3-mt-dev

44 Configurar el kernel Para configurar el kernel, ¿puedo partir de una configuración conocida?. Si. Podemos partir de dos puntos de referencia: A)Las fuentes del kernel traen también diferentes configuraciones predefinidas para las diferentes arquitecturas en: /usr/src/linux/debian/Config B)Una vez instalado Ubuntu,viene por defecto /boot/config-2.6.XX-XX- generic, que es un archivo de texto con la configuración actual del kernel

45 Configurar el kernel Por ejemplo, para partir de esa base y comenzar la configuración del nuevo kernel desde la actual, lo que tenemos que hacer es copiar dicho archivo al directorio /usr/src/linux, pero llamándolo.config, es decir: sudo cp /boot/config-2.6.XX-XX-generic /usr/src/linux/.config

46 Configurar el kernel Ejecute el comando “make oldconfig” que intenta configurar mi kernel nuevo usando los parámetros de mi configuración vieja es decir del fichero.config.old o.config de mi versión de kernel anterior. Genera preguntas sobre las nuevas caracteristicas (drivers) que se han añadido desde el fichero.config viejo que estamos usando.

47 Configurar el kernel “make oldconfig” sólo se usa si los cambios de la fuente del núcleo son pequeños (De kernel 2.6.2 a kernel 2.6.5).Nota: oldconfig no trabaja con ficheros de configuración cuyo major es DISTINTO. No trabaja por ejemplo con: 2.4.x.config respecto un kernel 2.6.x $sudo make oldconfig

48 Configurar el kernel Ahora ya podemos hacer un sudo make menuconfig o un sudo make xconfig y modificar las opciones que queramos del kernel, es decir, configurarlo a nuestro gusto. Con mucho cuidado, eso sí, porque este es el paso crítico. Aquí es donde lo podemos arruinar todo si, por ejemplo, no incluimos algún módulo necesario para nuestro sistema. sudo make xconfig

49 Configurar el kernel

50 Construir el paquete Para construir el paquete con el que instalaremos el nuevo kernel vamos a usar la orden make-kpkg. Esta orden lo que hace básicamente es sustituir a las clásicas make y make modules. Admite numerosas opciones y modificadores (ya sabeis: man make-kpkg), pero para lo que nos ocupa ahora sólo necesitaremos hacer lo siguiente: #limpiamos las posibles compilaciones previas $ sudo make-kpkg clean

51 Construir el paquete $ sudo make-kpkg --append-to-version=.XXXX --initrd kernel_image #modificar XXXX, que representa una secuencia alfanumérica que tendréis que decidir vosotros, y que se añadirá al número de versión del kernel para diferenciar el kernel que estáis compilando de cualquier otro. No utilizar el guión de subrayado bajo (_) ni expresiones como "-386", "-606", "-K7", "-sparc", etc., porque expresiones similares son las usadas por los kernel precompilados de Debian y podrían inducir a error.

52 Construir el paquete La opción –initrd crea una imagen initrd en el directorio /boot. Realmente no es imprescindible utilizarla siempre que a la hora de configurar el kernel hayamos incluido de forma estática (y no como módulos) los controladores para al menos nuestro bus, disco y sistema de archivos de nuestro directorio raiz. Pero (y esto es sólo una experiencia personal) siempre que he intentado compilar un kernel sin esa opción, me he encontrado con un sistema que no arrancaba, así que yo la uso siempre.

53 Construir el paquete La opción –initrd ¿Qué problema tiene?, pues que para que funcione correctamente, hay que aplicar a las fuentes del kernel el parche cramfs. Tranquilos, porque todos los kernel de Debian (y por supuesto también los de Ubuntu) tienen ese parche ya aplicado. Pero es algo que tendréis que tener en cuenta si habeis obtenido las fuentes del kernel en algún otro sitio (por ejemplo en www.kernel.org).

54 Instalar el nuevo kernel Si todo lo anterior ha ido bien, se crea el archivo de nombre /usr/src/kernel-image-2.6.20.1.XXXX_10.00.Custom_i386.deb, este archivo contiene nuestro kernel compilado: $ sudo dpkg -i kernel-image- 2.6.20.1.XXXX_10.00.Custom_i386.deb #Esta orden es equivalente a las clásicas make modules_install y make install, además de colocar en su sitio la imagen initrd generada y actualizar el grub.

55 Instalar el nuevo kernel Ahora, y por seguridad, borramos el enlace que habíamos creado: $ sudo rm linux Y ya está. Sólo nos queda arrancar con nuestro nuevo kernel Ejecutar depmod -a Genera en /lib/mudules/`uname -r`/modules.dep con las dependencias entre los módulos seleccionados, para poder usar modprobe.


Descargar ppt "Instalación y Configuración del Kernel Realizado por Kepa Bengoetxea."

Presentaciones similares


Anuncios Google