SlideShare une entreprise Scribd logo
1  sur  28
Desarrollo de entornos Linux Embebidos Formación in  Company  Linux kernel and driver development training Juan Sánchez - jsancheznav@gmail.com
[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Semana 2 de 4 / Sesión 3 de 8  Agenda Juan Sánchez -  [email_address] Módulos del kernel de linux Bloqueo: proceso, progr, parado e interrupción  Introducción al kernel de linux (1h) Detalles del arranque del núcleo Dispositivos de caracter. Kernel driver frameworks Conf, compilación y arranque del núcleo de linux Gestión memoria y acceso al hardware ✓ Controladores. Dispositivos, modelos y depuración Dispositivos DMA Estudio de un tipo específico de controlador (3h) 10 Mapa desarrollo de núcleo 2.6 7 6 5 4 3 2 1 9 8
La acción es el fruto propio del conocimiento. (Thomas Fuller) 4   Conf, compilación y arranque del núcleo ,[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Migración a un nuevo núcleo ,[object Object],Definir nuevo núcleo  como núcleo por defecto y puesta en producción Selección de las opciones a compilar en el núcleo y compilación Descargar código del kernel desde http://www.kernel.org Descarga del fuente e  instalarlo Verificación versionado y  dependencias Configuración y construcción Reinicio sist y testeo  completo Puesta en  marcha Juan Sánchez - jsancheznav@gmail.com Configurar sistema para reinicio con el nuevo núcleo y testeo completo de servidor Verificar que el nuevo código es compatible con nuestras utilidades actuales
Herramientas necesarias ,[object Object],Juan Sánchez - jsancheznav@gmail.com make --version Herramienta que busca en árbol src del núcleo llamando a compilador y enlazador "Buscador" paquete binutils ld -v Enlaza ficheros objetos generados por compilador con las librerías creando fichero ejecutable binario Enlazador gcc --version Traductor de .c a lenguaje máquina, analizando parse (lexico, sintaxis, semántica) Compilador Programa/Paquete Descripción Tipo
Aplicaciones dependientes ,[object Object],Juan Sánchez - jsancheznav@gmail.com ps --version Conjunto de utilidades básicas gestión de procesos (ps, top, …) process tools (procps) tune2fs reiserfsck -V Conjunto de herramientas de gestión de los filesystem (ext*=e2fsprogs, reiserfs=reiserfsprogs) filesystem tools depmod --version Conjunto de utilidades de gestión del módulos del kernel (depmod, insmod, rmmod, modprobe, modinfo, …) module-init-tools fdformat --version Conjunto de utilidades básicas de linux (dmesg, fdformat, fsck, halt, kill, mkfs, reboot, swapon, whereis, …) util-linux Versión Descripción Utilidad
Selección de opciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Selección de opciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Selección de opciones ,[object Object],Juan Sánchez - jsancheznav@gmail.com
¿Qúe controlador usa un disp? ,[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
¿Qúe controlador usa un disp? ,[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
¿Qúe controlador usa un disp? ,[object Object],Juan Sánchez - jsancheznav@gmail.com
Compilación  Instalación de los módulos compilados previamente en /lib/modules/ Creación de la imagen iniciable del núcleo bzImage = Imagen Grande comprimida con gzip Borrado ficheros de salida de compilaciones precedentes (core files, system map files, …) Your own footer make clean make dep make bzImage make modules make  modules_ install Configuración, compiliación y arranque del núcleo Compilación de los módulos (contralores, fs, …) Revisión dependencias Creación .depend en cada directorio
Selección de opciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Creación del nuevo núcleo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Instalación nuevo núcleo ,[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Instalación manual ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Instalación manual ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Instalación manual ,[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Proceso de arranque del sistema ,[object Object],Descompresión bzImage o zImage y llamada rutina head.S y carga de los contraladores Definir nuevo núcleo  como núcleo por defecto y puesta en producción LILO, GRUB cargan núcleo seleccionado en memoria Carga de initrd Master Boot Record 512b=446 bootloader+64 partition+2magic number Busqueda  sector  arranque Inicio del sistema Cargador del  núcleo Expansión del núcleo  en memoria Puesta en  marcha Juan Sánchez - jsancheznav@gmail.com BIOS /Boot Monitor
Initial RAM disk (initrd) ,[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Initial RAM disk (initrd) ,[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com
Creación initrd ,[object Object],Juan Sánchez - jsancheznav@gmail.com ,[object Object],[object Object],[object Object],[object Object],[object Object]
#!/bin/bash RDSIZE=4000 BLKSIZE=1024 dd if=/dev/zero of=/tmp/ramdisk.img bs=$BLKSIZE count=$RDSIZE /sbin/mke2fs -F -m 0 -b $BLKSIZE /tmp/ramdisk.img $RDSIZE mount /tmp/ramdisk.img /mnt/initrd -t ext2 -o loop=/dev/loop0 cd /mnt/initrd mkdir bin sys dev proc # Grab busybox and create the symbolic links pushd /mnt/initrd/bin cp /usr/local/src/busybox-1.1.1/busybox . ln -s busybox ash ln -s busybox mount ln -s busybox echo ln -s busybox ls ln -s busybox cat ln -s busybox ps ln -s busybox dmesg ln -s busybox sysctl popd Configuración, compiliación y arranque del núcleo Creación de initrd Juan Sánchez - jsancheznav@gmail.com
cp -a /dev/console /mnt/initrd/dev cp -a /dev/ramdisk /mnt/initrd/dev cp -a /dev/ram0 /mnt/initrd/dev cp -a /dev/null /mnt/initrd/dev cp -a /dev/tty1 /mnt/initrd/dev cp -a /dev/tty2 /mnt/initrd/dev pushd /mnt/initrd ln -s bin sbin popd cat >> /mnt/initrd/linuxrc << EOF #!/bin/ash echo echo &quot;Simple initrd is active&quot; echo mount -t proc /proc /proc mount -t sysfs none /sys /bin/ash --login EOF chmod +x /mnt/initrd/linuxrc umount /mnt/initrd gzip -9 /tmp/ramdisk.img cp /tmp/ramdisk.img.gz /boot/ramdisk.img.gz Configuración, compiliación y arranque del núcleo Creación de initrd Juan Sánchez - jsancheznav@gmail.com
Migración a un nuevo núcleo ,[object Object],Crear un nuevo núcleo e instalarlo. Aplicar parche final patch -p1 < ../parche_final Verificar Makefile Aplicar cada uno de los parches patch -p1 < ../parche_1 Verificar Makefile Aplicar parches precedentes Descarga parches y descompresión Aplicar parche final Guardar  configuracion anterior Crear nuevo núcleo Juan Sánchez - jsancheznav@gmail.com Obtener configuración anterior pero con el nuevo código Conectarse a kernel.org y descargar los parches. Verificar Makefile
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Juan Sánchez - jsancheznav@gmail.com

Contenu connexe

Tendances

Transcripcion (jackeline chillogalli
Transcripcion (jackeline chillogalliTranscripcion (jackeline chillogalli
Transcripcion (jackeline chillogallijackeline_chillogalli
 
Como instalar unix erazo gloria
Como instalar unix erazo gloriaComo instalar unix erazo gloria
Como instalar unix erazo gloriaErazoGloria16
 
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCERMÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCERnelson rodriguez huallpa
 
Recuperacion de datos despues de formatear en linux
Recuperacion de datos despues de formatear en linuxRecuperacion de datos despues de formatear en linux
Recuperacion de datos despues de formatear en linuxoverdrai
 
Equipo9
Equipo9Equipo9
Equipo9CUI
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)JohannaCamila
 
Comandos en tabla
Comandos en tablaComandos en tabla
Comandos en tablayoes1053
 
Comandos consola windows
Comandos consola windowsComandos consola windows
Comandos consola windowsJAV_999
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIXmiranda696
 

Tendances (16)

Transcripcion (jackeline chillogalli
Transcripcion (jackeline chillogalliTranscripcion (jackeline chillogalli
Transcripcion (jackeline chillogalli
 
Como instalar unix erazo gloria
Como instalar unix erazo gloriaComo instalar unix erazo gloria
Como instalar unix erazo gloria
 
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCERMÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
 
Recuperacion de datos despues de formatear en linux
Recuperacion de datos despues de formatear en linuxRecuperacion de datos despues de formatear en linux
Recuperacion de datos despues de formatear en linux
 
Transcripcion yamy
Transcripcion yamyTranscripcion yamy
Transcripcion yamy
 
Tuto y claves de fedora
Tuto y claves de fedoraTuto y claves de fedora
Tuto y claves de fedora
 
Equipo9
Equipo9Equipo9
Equipo9
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)
 
Codigos de terminal linux
Codigos de terminal linuxCodigos de terminal linux
Codigos de terminal linux
 
Comandos linux y windows
Comandos linux y windowsComandos linux y windows
Comandos linux y windows
 
OpenSolaris
OpenSolarisOpenSolaris
OpenSolaris
 
Comandos en tabla
Comandos en tablaComandos en tabla
Comandos en tabla
 
Comandos consola windows
Comandos consola windowsComandos consola windows
Comandos consola windows
 
37 reunir información del sistema
37  reunir información del sistema37  reunir información del sistema
37 reunir información del sistema
 
Mary cervantes
Mary cervantesMary cervantes
Mary cervantes
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIX
 

En vedette

Presentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesPresentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesMichael Vreys
 
Gnome - un vistazo a su arquitectura
Gnome - un vistazo a su arquitecturaGnome - un vistazo a su arquitectura
Gnome - un vistazo a su arquitecturaMauro Parra-Miranda
 
Introducción a compiladores
Introducción a compiladoresIntroducción a compiladores
Introducción a compiladorespilar menacho
 
Comprendiendo gnome
Comprendiendo gnomeComprendiendo gnome
Comprendiendo gnomeJuanjo Marin
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOMEJuanjo Marin
 
Como volverse un Hacker feliz de GNOME
Como volverse un Hacker feliz de GNOMEComo volverse un Hacker feliz de GNOME
Como volverse un Hacker feliz de GNOMEJuan Percy Rojas Cruz
 
Nucleo o kernel de Linux
Nucleo o kernel de LinuxNucleo o kernel de Linux
Nucleo o kernel de LinuxJhon TRUJILLO
 

En vedette (11)

Rep 34
Rep 34Rep 34
Rep 34
 
Presentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesPresentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretes
 
Gnome - un vistazo a su arquitectura
Gnome - un vistazo a su arquitecturaGnome - un vistazo a su arquitectura
Gnome - un vistazo a su arquitectura
 
Introducción a compiladores
Introducción a compiladoresIntroducción a compiladores
Introducción a compiladores
 
Comprendiendo gnome
Comprendiendo gnomeComprendiendo gnome
Comprendiendo gnome
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOME
 
Como volverse un Hacker feliz de GNOME
Como volverse un Hacker feliz de GNOMEComo volverse un Hacker feliz de GNOME
Como volverse un Hacker feliz de GNOME
 
Kernel
KernelKernel
Kernel
 
Nucleo o kernel de Linux
Nucleo o kernel de LinuxNucleo o kernel de Linux
Nucleo o kernel de Linux
 
Gnome
GnomeGnome
Gnome
 
Compiladores teoria e implementacion
Compiladores teoria e implementacionCompiladores teoria e implementacion
Compiladores teoria e implementacion
 

Similaire à Compilación del Kernel

Similaire à Compilación del Kernel (20)

Virtualización con Xen
Virtualización con XenVirtualización con Xen
Virtualización con Xen
 
Cómo compilar el kernel
Cómo compilar el kernelCómo compilar el kernel
Cómo compilar el kernel
 
Configuracion basica de centos 6.3 linux v1
Configuracion basica de centos 6.3 linux v1Configuracion basica de centos 6.3 linux v1
Configuracion basica de centos 6.3 linux v1
 
Compilacion del Kernel a la Debian
Compilacion del Kernel a la DebianCompilacion del Kernel a la Debian
Compilacion del Kernel a la Debian
 
Virtualizacion Con Xen En Open Solaris
Virtualizacion Con Xen En Open SolarisVirtualizacion Con Xen En Open Solaris
Virtualizacion Con Xen En Open Solaris
 
Servidor PXE de Instalaciones GNU/Linux
Servidor PXE de Instalaciones GNU/LinuxServidor PXE de Instalaciones GNU/Linux
Servidor PXE de Instalaciones GNU/Linux
 
Ubuntu server aw
Ubuntu server awUbuntu server aw
Ubuntu server aw
 
AIX Guide
AIX GuideAIX Guide
AIX Guide
 
AIX Administration Knowledge Share
AIX Administration Knowledge ShareAIX Administration Knowledge Share
AIX Administration Knowledge Share
 
Bd practica 1.10
Bd practica 1.10Bd practica 1.10
Bd practica 1.10
 
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizadaGuía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
 
Debian
DebianDebian
Debian
 
Xen - Taller practico
Xen - Taller practicoXen - Taller practico
Xen - Taller practico
 
Debian
DebianDebian
Debian
 
Instalación Knoppix
Instalación KnoppixInstalación Knoppix
Instalación Knoppix
 
Arquitectura del sistema y niveles de ejecución
Arquitectura del sistema y niveles de ejecuciónArquitectura del sistema y niveles de ejecución
Arquitectura del sistema y niveles de ejecución
 
Manual(1)
Manual(1)Manual(1)
Manual(1)
 
Cómo crear una distribución Linux
Cómo crear una distribución LinuxCómo crear una distribución Linux
Cómo crear una distribución Linux
 
Clase6 (consola linux)
Clase6 (consola linux)Clase6 (consola linux)
Clase6 (consola linux)
 
Pendrive Linux
Pendrive LinuxPendrive Linux
Pendrive Linux
 

Plus de Juan Sánchez

Plus de Juan Sánchez (6)

SUSE DHCPv6
SUSE DHCPv6 SUSE DHCPv6
SUSE DHCPv6
 
Guia plsql breve
Guia plsql breveGuia plsql breve
Guia plsql breve
 
Linux Routing
Linux RoutingLinux Routing
Linux Routing
 
Oracle Tuning Opq
Oracle Tuning OpqOracle Tuning Opq
Oracle Tuning Opq
 
File System Management
File System ManagementFile System Management
File System Management
 
Bounding en Linux
Bounding en LinuxBounding en Linux
Bounding en Linux
 

Compilación del Kernel

  • 1. Desarrollo de entornos Linux Embebidos Formación in Company Linux kernel and driver development training Juan Sánchez - jsancheznav@gmail.com
  • 2.
  • 3. Semana 2 de 4 / Sesión 3 de 8 Agenda Juan Sánchez - [email_address] Módulos del kernel de linux Bloqueo: proceso, progr, parado e interrupción Introducción al kernel de linux (1h) Detalles del arranque del núcleo Dispositivos de caracter. Kernel driver frameworks Conf, compilación y arranque del núcleo de linux Gestión memoria y acceso al hardware ✓ Controladores. Dispositivos, modelos y depuración Dispositivos DMA Estudio de un tipo específico de controlador (3h) 10 Mapa desarrollo de núcleo 2.6 7 6 5 4 3 2 1 9 8
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. Compilación Instalación de los módulos compilados previamente en /lib/modules/ Creación de la imagen iniciable del núcleo bzImage = Imagen Grande comprimida con gzip Borrado ficheros de salida de compilaciones precedentes (core files, system map files, …) Your own footer make clean make dep make bzImage make modules make modules_ install Configuración, compiliación y arranque del núcleo Compilación de los módulos (contralores, fs, …) Revisión dependencias Creación .depend en cada directorio
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. #!/bin/bash RDSIZE=4000 BLKSIZE=1024 dd if=/dev/zero of=/tmp/ramdisk.img bs=$BLKSIZE count=$RDSIZE /sbin/mke2fs -F -m 0 -b $BLKSIZE /tmp/ramdisk.img $RDSIZE mount /tmp/ramdisk.img /mnt/initrd -t ext2 -o loop=/dev/loop0 cd /mnt/initrd mkdir bin sys dev proc # Grab busybox and create the symbolic links pushd /mnt/initrd/bin cp /usr/local/src/busybox-1.1.1/busybox . ln -s busybox ash ln -s busybox mount ln -s busybox echo ln -s busybox ls ln -s busybox cat ln -s busybox ps ln -s busybox dmesg ln -s busybox sysctl popd Configuración, compiliación y arranque del núcleo Creación de initrd Juan Sánchez - jsancheznav@gmail.com
  • 26. cp -a /dev/console /mnt/initrd/dev cp -a /dev/ramdisk /mnt/initrd/dev cp -a /dev/ram0 /mnt/initrd/dev cp -a /dev/null /mnt/initrd/dev cp -a /dev/tty1 /mnt/initrd/dev cp -a /dev/tty2 /mnt/initrd/dev pushd /mnt/initrd ln -s bin sbin popd cat >> /mnt/initrd/linuxrc << EOF #!/bin/ash echo echo &quot;Simple initrd is active&quot; echo mount -t proc /proc /proc mount -t sysfs none /sys /bin/ash --login EOF chmod +x /mnt/initrd/linuxrc umount /mnt/initrd gzip -9 /tmp/ramdisk.img cp /tmp/ramdisk.img.gz /boot/ramdisk.img.gz Configuración, compiliación y arranque del núcleo Creación de initrd Juan Sánchez - jsancheznav@gmail.com
  • 27.
  • 28.