SlideShare una empresa de Scribd logo
Desarrollo de entornos Linux Embebidos Formación in  Company  Linux kernel and driver development training Juan Sánchez - jsancheznav@gmail.com
Datos  Portatil password sage3000+ Máquina virtual 192.168.59.128, root/12345678 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 Requerimientos Aplicaciones dependientes de la versión del núcleo Configuración y  Juan Sánchez - jsancheznav@gmail.com
Migración a un nuevo núcleo Configuración, compiliación y arranque del núcleo 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 Configuración, compiliación y arranque del núcleo 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 Configuración, compiliación y arranque del núcleo 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 Configuración, compiliación y arranque del núcleo Fichero conf /usr/src/linux/.config Recreación fichero    make oldconfig Tipos de opciones: y  = Yes = * = Sí = Compilado en el núcleo n  = No = ' ' = No = No incluido en el núcleo m  = Module = M = Módulo = Como módulo Juan Sánchez - jsancheznav@gmail.com
Selección de opciones Configuración, compiliación y arranque del núcleo Edición fichero .config mediante vi + make Modo interactivo    make config Modo menu     make menuconfig Modo Xwin    make xconfig Modo recreacion     make oldconfig Juan Sánchez - jsancheznav@gmail.com
Selección de opciones Configuración, compiliación y arranque del núcleo Juan Sánchez - jsancheznav@gmail.com
¿Qúe controlador usa un disp? Configuración, compiliación y arranque del núcleo Necesario determinar que controlador usa un dispositivo Conociendo el dispositivo basename `readlink /proc/sys/class/<tipo>/<disp>/device/driver/module` Juan Sánchez - jsancheznav@gmail.com
¿Qúe controlador usa un disp? Configuración, compiliación y arranque del núcleo Desonociendo el dispositiv Escanear el hardware (lspci, lsdev, …) Con el id en los dispositivos, buscar la definición Buscar el módulo según la definición Juan Sánchez - jsancheznav@gmail.com
¿Qúe controlador usa un disp? Configuración, compiliación y arranque del núcleo 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 Configuración, compiliación y arranque del núcleo Edición fichero .config mediante vi + make Modo interactivo    make config Modo menu     make menuconfig Modo Xwin    make xconfig Modo recrecion defecto     make defconfig Modo recreacion     make oldconfig Juan Sánchez - jsancheznav@gmail.com
Creación del nuevo núcleo Configuración, compiliación y arranque del núcleo 2 posibilidades: paso a paso o bien make Opciones de mejora compilación: Si multiprocesador    make -j2*<Nº CPUs> Si solo controladores especificos    make M=drivers/… Crosscompilling dep   make ARCH=x86_64 defconfig Crosscompilling    make ARCH=arm CROSS_COMPILE=<tool_chain> Utilizar precache    make CC=&quot;ccache gcc&quot; Juan Sánchez - jsancheznav@gmail.com
Instalación nuevo núcleo Configuración, compiliación y arranque del núcleo make no ha dado ningún error Modos posibles: Manual Automático    installkernel (mkinitrd) Juan Sánchez - jsancheznav@gmail.com
Instalación manual Configuración, compiliación y arranque del núcleo Instalación de los módulos creados  cd /usr/src/linux && make modules_install   Copia del nuevo nuevo al directorio arranque export kversion=`make kernelversion` cp arch/i386/boot/bzImage /boot/vmlinuz-$kversion cp System.map /boot/System.map-$kersion Juan Sánchez - jsancheznav@gmail.com
Instalación manual Configuración, compiliación y arranque del núcleo Modificación del bootload GRUB    /boot/grub/menu.list Copiar entrada existente Apuntar nueva entrada a nuevo núcleo LILO    /etc/lilo.conf Copiar entrada existente Apuntar nueva entrada a nuevo núcleo Ejecutar /sbin/lilo Juan Sánchez - jsancheznav@gmail.com
Instalación manual Configuración, compiliación y arranque del núcleo Reiniciar sistema Testear todo el sistema Definir nuevo núcleo como núcleo por defecto  default <posición nuevo núcleo> Juan Sánchez - jsancheznav@gmail.com
Proceso de arranque del sistema Configuración, compiliación y arranque del núcleo 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) Configuración, compiliación y arranque del núcleo Sistema raiz temporal montado en tiempo de montado Contiene controladores y ejecutables (insmod, …)  que permiten montar sistema raiz real En sistemas embebidos es el sistema real Utiliza dispositivo /dev/loop Juan Sánchez - jsancheznav@gmail.com
Initial RAM disk (initrd) Configuración, compiliación y arranque del núcleo Fichero montado como dispositivo de bloque /boot/initrd Versiones nuevas = cpio + gzip Versiones anteriores = gzip + ext2 Juan Sánchez - jsancheznav@gmail.com
Creación initrd Configuración, compiliación y arranque del núcleo Juan Sánchez - jsancheznav@gmail.com Automática :mkinitrd sh    Personalizable!!! Manual Creación fichero Formateo fichero Montado fichero y rellenado
#!/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 Configuración, compiliación y arranque del núcleo 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
Bibliografia The Linux Kernel Module Programming Guide ( http :/* www.tldp.org /LDP/ lkmpg /2.6/ html / index.html ) Linux Kernel Development Second Edition (Robert Love) Understanding The Linux Kernel 3 Rd  - (Daniel P.Bovet) Linux Kernel Architecture (Wolfgang Maurer) Linux Device Drivers (Jonathan Corbet, Alessandro Rubini) Juan Sánchez - jsancheznav@gmail.com

Más contenido relacionado

PDF
Memorias
PDF
Ajustes posteriores a la instalación de cent os 6
DOCX
Da igual lo que intente instalar
PDF
Manejo de información raster_en_post_gis-2.0-
DOCX
Arquitectura de Computadores - Laboratorios 1,2 y 3 - UNAD
DOCX
Azucenabarzola
PDF
Guia practica de debian gnu linux 2.2
PDF
Memorias
Ajustes posteriores a la instalación de cent os 6
Da igual lo que intente instalar
Manejo de información raster_en_post_gis-2.0-
Arquitectura de Computadores - Laboratorios 1,2 y 3 - UNAD
Azucenabarzola
Guia practica de debian gnu linux 2.2

La actualidad más candente (16)

DOCX
Transcripcion (jackeline chillogalli
DOCX
Como instalar unix erazo gloria
DOCX
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
DOCX
Recuperacion de datos despues de formatear en linux
DOCX
Transcripcion yamy
ODT
Tuto y claves de fedora
PPTX
Equipo9
 
DOCX
Como instalar Unix(Johanna)
PPTX
Codigos de terminal linux
PDF
Comandos linux y windows
PDF
OpenSolaris
PDF
Comandos en tabla
PDF
Comandos consola windows
PDF
37 reunir información del sistema
DOCX
Mary cervantes
DOCX
Miranda castillo UNIX
Transcripcion (jackeline chillogalli
Como instalar unix erazo gloria
MÁS DE 400 COMANDOS PARA GNU/LINUX QUE DEBERÍAS CONOCER
Recuperacion de datos despues de formatear en linux
Transcripcion yamy
Tuto y claves de fedora
Equipo9
 
Como instalar Unix(Johanna)
Codigos de terminal linux
Comandos linux y windows
OpenSolaris
Comandos en tabla
Comandos consola windows
37 reunir información del sistema
Mary cervantes
Miranda castillo UNIX
Publicidad

Destacado (11)

PDF
PPTX
Presentación computación 1_compiladores_e_interpretes
PDF
Gnome - un vistazo a su arquitectura
PDF
Introducción a compiladores
ODP
Comprendiendo gnome
ODP
Cómo colaborar en GNOME
PDF
Como volverse un Hacker feliz de GNOME
PDF
Kernel
PDF
Nucleo o kernel de Linux
PDF
PDF
Compiladores teoria e implementacion
Presentación computación 1_compiladores_e_interpretes
Gnome - un vistazo a su arquitectura
Introducción a compiladores
Comprendiendo gnome
Cómo colaborar en GNOME
Como volverse un Hacker feliz de GNOME
Kernel
Nucleo o kernel de Linux
Compiladores teoria e implementacion
Publicidad

Similar a Compilación del Kernel (20)

ODP
Virtualización con Xen
PDF
Cómo compilar el kernel
 
PDF
Configuracion basica de centos 6.3 linux v1
ODP
Compilacion del Kernel a la Debian
ODP
Virtualizacion Con Xen En Open Solaris
PDF
Servidor PXE de Instalaciones GNU/Linux
PPTX
Ubuntu server aw
PDF
Bd practica 1.10
DOCX
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
PPTX
Debian
PPT
Xen - Taller practico
PPTX
PPT
Instalación Knoppix
ODP
Arquitectura del sistema y niveles de ejecución
PDF
PDF
Cómo crear una distribución Linux
PDF
Clase6 (consola linux)
PPT
Pendrive Linux
PPT
Pendrive Linux
Virtualización con Xen
Cómo compilar el kernel
 
Configuracion basica de centos 6.3 linux v1
Compilacion del Kernel a la Debian
Virtualizacion Con Xen En Open Solaris
Servidor PXE de Instalaciones GNU/Linux
Ubuntu server aw
Bd practica 1.10
Guía instalación koha por paquetes en ubuntu 16.04 lts actualizada
Debian
Xen - Taller practico
Instalación Knoppix
Arquitectura del sistema y niveles de ejecución
Cómo crear una distribución Linux
Clase6 (consola linux)
Pendrive Linux
Pendrive Linux

Más de Juan Sánchez (6)

PPTX
SUSE DHCPv6
PDF
Guia plsql breve
PDF
Linux Routing
PPT
Oracle Tuning Opq
PPT
File System Management
PPT
Bounding en Linux
SUSE DHCPv6
Guia plsql breve
Linux Routing
Oracle Tuning Opq
File System Management
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. Datos Portatil password sage3000+ Máquina virtual 192.168.59.128, root/12345678 Juan Sánchez - jsancheznav@gmail.com
  • 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. La acción es el fruto propio del conocimiento. (Thomas Fuller) 4 Conf, compilación y arranque del núcleo Requerimientos Aplicaciones dependientes de la versión del núcleo Configuración y Juan Sánchez - jsancheznav@gmail.com
  • 5. Migración a un nuevo núcleo Configuración, compiliación y arranque del núcleo 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
  • 6. Herramientas necesarias Configuración, compiliación y arranque del núcleo Juan Sánchez - jsancheznav@gmail.com make --version Herramienta que busca en árbol src del núcleo llamando a compilador y enlazador &quot;Buscador&quot; 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
  • 7. Aplicaciones dependientes Configuración, compiliación y arranque del núcleo 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
  • 8. Selección de opciones Configuración, compiliación y arranque del núcleo Fichero conf /usr/src/linux/.config Recreación fichero  make oldconfig Tipos de opciones: y = Yes = * = Sí = Compilado en el núcleo n = No = ' ' = No = No incluido en el núcleo m = Module = M = Módulo = Como módulo Juan Sánchez - jsancheznav@gmail.com
  • 9. Selección de opciones Configuración, compiliación y arranque del núcleo Edición fichero .config mediante vi + make Modo interactivo  make config Modo menu  make menuconfig Modo Xwin  make xconfig Modo recreacion  make oldconfig Juan Sánchez - jsancheznav@gmail.com
  • 10. Selección de opciones Configuración, compiliación y arranque del núcleo Juan Sánchez - jsancheznav@gmail.com
  • 11. ¿Qúe controlador usa un disp? Configuración, compiliación y arranque del núcleo Necesario determinar que controlador usa un dispositivo Conociendo el dispositivo basename `readlink /proc/sys/class/<tipo>/<disp>/device/driver/module` Juan Sánchez - jsancheznav@gmail.com
  • 12. ¿Qúe controlador usa un disp? Configuración, compiliación y arranque del núcleo Desonociendo el dispositiv Escanear el hardware (lspci, lsdev, …) Con el id en los dispositivos, buscar la definición Buscar el módulo según la definición Juan Sánchez - jsancheznav@gmail.com
  • 13. ¿Qúe controlador usa un disp? Configuración, compiliación y arranque del núcleo Juan Sánchez - jsancheznav@gmail.com
  • 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. Selección de opciones Configuración, compiliación y arranque del núcleo Edición fichero .config mediante vi + make Modo interactivo  make config Modo menu  make menuconfig Modo Xwin  make xconfig Modo recrecion defecto  make defconfig Modo recreacion  make oldconfig Juan Sánchez - jsancheznav@gmail.com
  • 16. Creación del nuevo núcleo Configuración, compiliación y arranque del núcleo 2 posibilidades: paso a paso o bien make Opciones de mejora compilación: Si multiprocesador  make -j2*<Nº CPUs> Si solo controladores especificos  make M=drivers/… Crosscompilling dep  make ARCH=x86_64 defconfig Crosscompilling  make ARCH=arm CROSS_COMPILE=<tool_chain> Utilizar precache  make CC=&quot;ccache gcc&quot; Juan Sánchez - jsancheznav@gmail.com
  • 17. Instalación nuevo núcleo Configuración, compiliación y arranque del núcleo make no ha dado ningún error Modos posibles: Manual Automático  installkernel (mkinitrd) Juan Sánchez - jsancheznav@gmail.com
  • 18. Instalación manual Configuración, compiliación y arranque del núcleo Instalación de los módulos creados cd /usr/src/linux && make modules_install Copia del nuevo nuevo al directorio arranque export kversion=`make kernelversion` cp arch/i386/boot/bzImage /boot/vmlinuz-$kversion cp System.map /boot/System.map-$kersion Juan Sánchez - jsancheznav@gmail.com
  • 19. Instalación manual Configuración, compiliación y arranque del núcleo Modificación del bootload GRUB  /boot/grub/menu.list Copiar entrada existente Apuntar nueva entrada a nuevo núcleo LILO  /etc/lilo.conf Copiar entrada existente Apuntar nueva entrada a nuevo núcleo Ejecutar /sbin/lilo Juan Sánchez - jsancheznav@gmail.com
  • 20. Instalación manual Configuración, compiliación y arranque del núcleo Reiniciar sistema Testear todo el sistema Definir nuevo núcleo como núcleo por defecto default <posición nuevo núcleo> Juan Sánchez - jsancheznav@gmail.com
  • 21. Proceso de arranque del sistema Configuración, compiliación y arranque del núcleo 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
  • 22. Initial RAM disk (initrd) Configuración, compiliación y arranque del núcleo Sistema raiz temporal montado en tiempo de montado Contiene controladores y ejecutables (insmod, …) que permiten montar sistema raiz real En sistemas embebidos es el sistema real Utiliza dispositivo /dev/loop Juan Sánchez - jsancheznav@gmail.com
  • 23. Initial RAM disk (initrd) Configuración, compiliación y arranque del núcleo Fichero montado como dispositivo de bloque /boot/initrd Versiones nuevas = cpio + gzip Versiones anteriores = gzip + ext2 Juan Sánchez - jsancheznav@gmail.com
  • 24. Creación initrd Configuración, compiliación y arranque del núcleo Juan Sánchez - jsancheznav@gmail.com Automática :mkinitrd sh  Personalizable!!! Manual Creación fichero Formateo fichero Montado fichero y rellenado
  • 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. Migración a un nuevo núcleo Configuración, compiliación y arranque del núcleo 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
  • 28. Bibliografia The Linux Kernel Module Programming Guide ( http :/* www.tldp.org /LDP/ lkmpg /2.6/ html / index.html ) Linux Kernel Development Second Edition (Robert Love) Understanding The Linux Kernel 3 Rd - (Daniel P.Bovet) Linux Kernel Architecture (Wolfgang Maurer) Linux Device Drivers (Jonathan Corbet, Alessandro Rubini) Juan Sánchez - jsancheznav@gmail.com