================================================ || GUIA DEL KERNEL EN CASTELLANO || ================================================ Por Lorenzo Hernandez Garcia-Hierro http://www.nsrg-security.com Versión: 0.2 Actualizaciones: - Correciones Ortográficas y Tipográficas. ( Gracias a Pedro Reina Ver apartado 6.1 ) - Añadido apartado 6.1 "Agradecimientos" INTRODUCCIÓN ____________ En esta guía voy a explicar paso a paso cómo compilar un kernel personalizado y optimizado para nuestra plataforma, además de explicar qué es el kernel hacking, instrucciones para habilitar esta práctica, resolución de problemas, apreciaciones del sistema de archivos cramfs, uso de las herramientas initrd y preparación de un kernel modularizado y dinamico usando initrd y sistemas de archivos con journaling. El propósito de esta guía es completar y rellenar aquellos espacios y carencias que poseen las guías del kernel más usadas por los hispanohablantes, como la referencia de Debian entre otras. A medida que vaya decidiendo iré incluyendo información nueva y la actualizaré cada poco tiempo para mantener un documento en condiciones. A la vez trato temas completamente desconocidos y nuevos, la API de criptografía embebida en el kernel entre otras. Este documento lo he confeccionado sin tener otras fuentes delante, por lo tanto lo aquí contenido es original y no ha sido extraido de ningun sitio. Este documento está avalado por la Licencia de Documentación Libre de la GNU (GFDL): http://www.gnu.org/licenses/fdl.txt Por lo tanto la copia y distribución de este documento está permitida bajo la condición de incluir una nota refiriendo a este documento y un enlace al sitio oficial, además de una referncia al autor del mismo. TABLA DE CONTENIDOS ___________________ {Introducción--------------------------------> Introducción {Preánbulo-----------------------------------> Preámbulo 1.0 ----------------------------------------> Métodos & Formas de hacerlo (FÁCIL & "ESPARTACO") 1.1 ----------------------------------------> Obteniendo las fuentes del kernel y el software necesario 1.2 ----------------------------------------> Descomprimiendo las fuentes 1.3 ----------------------------------------> Primeros ajustes (Preparación) 1.4 ----------------------------------------> Configurando el kernel 1.5 ----------------------------------------> Empezando a compilarlo 1.6 ----------------------------------------> Instalando el kernel 1.6.2 --------------------------------------> Configuración del arranque (LILO & INITRD) 2.0 ----------------------------------------> Método #2 "Espartaco" Método tradicional :) 3.0 ----------------------------------------> Los módulos del kernel 4.0 ----------------------------------------> Kernel hacking y opciones avanzadas -------------------------------------------> Debugging del kernel -------------------------------------------> Integración de la API criptográfica 5.0 ----------------------------------------> Problemas comunes y soluciones 5.1 ----------------------------------------> Explicación sobre el CRAMFS: alternativas en Debian 6.0 ----------------------------------------> Referencias , enlaces y Agradecimientos -------------------------------------------> Agradecimientos 7.0 ----------------------------------------> Sobre el autor 8.0 ----------------------------------------> TODO ====================================================== ||P. COMPILAR / RECOMPILAR UN KERNEL PERSONALIZADO || ====================================================== Vamos a explicar cómo hacerlo en la distribucion Debian. Necesitaremos root durante todo el proceso, así que usadlo desde el principio, nada de su o sudo. Primero vamos a ver si tenemos lo necesario: bash:~# whereis mkinitrd bash:~# whereis gcc bash:~# whereis mkcramfs bash:~# whereis make-kpkg bash:~# whereis fakeroot bash:~# whereis modprobe bash:~# whereis ncurses Qué es cada cosa: mkinitrd: Crea las imagenes de disco ram inicial (initial ram disk image = initrd) desde un directorio con módulos del kernel [/lib/modules/[Version del Kernel] gcc: es el compilador ansi c mkcramfs: crea una imagen initrd compatible con cramfs, es necesario en Debian, más tarde hablaremos sobre cramfs. make-kpkg: El make del kernel en Debian, maneja todas las opciones, simple y muy potente. Hablaremos de las opciones disponibles. fakeroot: Ejecutará un comando con unas opciones pasadas a fakeroot, es simplemente un wrapper de exec. modprobe: Prueba los módulos en busca de errores. paquete: modutils ncurses: Ya que no vamos a usar entorno grafico en el proceso (:) necesitaremos las librerías ncurses5 de desarrollo, que sulen estar en: ncurses: /usr/include/ncurses.h /usr/share/man/man3/ncurses.3ncurses.gz ncurses es una version avanzada de dialog y xdialog pero en modo consola (como dialog a secas). paquete: libncurses5-dev ~~~~~~~ ¿Lo tenéis todo? pues mejor }:) , no necesitáis descargar los paquetes de esos binarios ====================================== 1. QUÉ NECESITAMOS ====================================== Necesitaremos las fuentes del kernel; hay dos maneras: la pildora roja y la azul :) La roja va ser una tranquila compilación y con la azul te vas a cagar en el santo padre que parió a modprobe / kmod / make-kpkg / CRAMFS / etc (perdóname Torvalds) *-------MÉTODO DE DEBIAN----PILDORA ROJA---------* ====================================== 1.1 OBTENIENDO LAS FUENTES Y EL SOFTWARE NECESARIO ====================================== bash:~# apt-get update bash:~# apt-get install kernel-source-[version] [version]= 2.4.18 / 2.2.20 / 2.4.17 / 2.4.16 / 2.4.10 / si es linex, es el "flavour" (sabor) linex [muy bueno] [mierda] [nostamal] [regular] [no lo he probado] Así que bienaventuradas/os seáis: bash:~# apt-get install debhelper modutils kernel-package libncurses5-dev fakeroot bash:~# apt-get install kernel-source-2.4.18 os lo descargara en /usr/src/ y hacéis : ====================================== 1.2 DESCOMPRIMIENDO LAS FUENTES ====================================== bash:~# tar --bzip2 -xf kernel-source-[versión].tar.bz2 como el tema va a durar un cojonal y en mi caso no tengo ventanitas, solo un modo texto y un terminal, lo pasamos a background: ]^Z (CRT+Z) os saldrá stopped: bash:~# [numero en jobs]+ Stopped tar --bzip2 -xf kernel-source-[versión].tar.bz2 bash:~# jobs [1]+ Stopped tar --bzip2 -xf kernel-source-[versión].tar.bz2 lo pasamos a background (por detrás mejor xD): bash:~# bg 1 :-) Ahí está. Mientras podemos hacer cualquier cosa, si es lentorro el ordenata te tendrás que esperar. Por cierto, haciendo esto haces el proceso anterior automático (esto es pa que veas que antes hay que leer las cosas :), antes de "comandear" tar --bzip2 -xf kernel-source-[versión].tar.bz2 & bash:~# ls /usr/src ( si es la primera vez que compilais solo tendreis estos :) kernel-source-[versión] kernel-source-[versión].tar.bz2 ====================================== 1.3 PRIMEROS AJUSTES ====================================== bash:~# echo Ahora tenemos que hacer un enlace simbolico a la carpeta && ln -s kernel-source-[versión] linux ¡Ya lo tenemos! bash:~# cd linux bash:~# pwd /usr/src/linux Debemos copiar la configuracion de tu antiguo kernel, que está en /boot: bash:~# cp /boot/config-[version antigua del kernel] ejemplo: bash:~# cp /boot/config-2.2.20-idepci .config Esto solo se puede hacer en series compatibles: 2.2.x con 2.4.x pero no con 2.6.x (os arriesgais) ====================================== 1.4 CONFIGURANDO EL KERNEL: ====================================== bash:~# make menuconfig .....información de compilación..... ..blablahblah.... Parsing configuration file..... ........... y os sale la interfaz de texto con ncurses ahora viene lo interesante: Las opciones estarán puestas ya , ¿te acuerdas de que copiamos el config-[version] como .config? Pero la transicion de la 2.2.20 a la 2.4.18 tendrá cambios importantes, veamos: Networking -> si estais migrando desde 2.2.20 habilitad los nuevos netfilter [*] iptables [*] ppp filtering [*] (si usais modem para conectaros, ponedlo, que hay mucho lammer suelto buscando ptrace :) opciones ethernet: 10/100 [*] 10/100/1000 [M] (no las he visto en ninguna red local casera :) ipv6 [M] <- ¡es muy experimental! Kernel Hacking -> Habilitad las opciones de debugging y de control y aviso de la stack. (muy recomendado) File Systems -> Ahora tienes más para usar :) ext3 [*] debugging para ext3 [*] Crompressed RAM File System (cramfs) [*] <- si no lo haceis os tragareis un VFS: unable to mount root fs at xx:xx ReiserFS [M] habilitad las opciones de estadísticas /proc filesystem [*] <- te vendrá ya de antes MUY IMPORTANTE: tanto ext3 y extended second filesystem han de estar activadas junto con cramfs y initrd en nucleo [*]. (si no, os tragáis el mensaje de antes) la opcion Native Language... -> Habilitad los charsets de europa del oeste y sur usad el nfs-utf-8 (utf-8) usad latin-1 y latin-9 (sin euro y con euro respectivamente) Block Devices, etc.: poned lo que queráis pero IDE/ATA han de estar habilitados. Lo demás esta en vuestras manos pero al copiar la configuración antigua estará todo correcto. No se aprende leyendo un tuto, hay que cagarla varias veces, así que si te atreves toca las opciones y experimenta; si no, vive en la sombra :) (expresión de los colegas de infohacking, infohacking.com) PCMCIA: !!!!!!! Si no queréis soporte para pcmcia, por ejemplo para un sobremesa, quitad / desmarcad el CardBus support de [*]/[M] a [] . Y HACED ESTO EN /usr/src/linux: bash:~# rm -rf */pcmcia !!!!!!! ====================================== 1.5 EMPEZANDO A COMPILARLO ====================================== Se acabaron las gilipolleces, ahora la cosa se pone un poquito más difícil pero la píldora roja es mejor que la azul.... bash:~# make-kpkg clean Limpiará los directorios de instalaciones anteriores y no hagáis caso a los listillos que dicen que esto es una mierda falsa, si no la hacéis os jodéis con lo que pase después. Y ahora a compilar: bash:~# fakeroot make-kpkg --append_to_version -[procesador: 386/486/586/686/etc] --initrd \ --revision=rev.01 kernel_image \ Mirad, habré leído algo así como 20 tutos del kernel y todos fallan en una cosa (menos el de debianitas); todos copian los comandos de la referencia de debian: http://www.debian.org/doc/manuals/reference/ch-kernel.es.html Y eso no puede ser así, se da un ejemplo, un comando y una base para el comando: bash:~# fakeroot make-kpkg --append_to_version -[PROCESADOR] [OPCIONES INIT] \ --revision=[REVISIÓN] kernel_image \ donde: [PROCESADOR]=586 / 486 / 386 / 686 / etc , deberíais haber compilado el kernel con vuestra estructura especificandola en Processor types. [OPCIONES INIT]= pueden ser --initrd, leerá el /etc/mkinitrd/mkinitrd.conf y os meterá cramfs, si no lo tenéis habilitado en el kernel no arrancará.hablaremos más sobre esto. [REVISIÓN]= debería ser asi: 2.4.18-[lo que quieras]: ejemplo: 2.24.18-LinuxPowa Y lo hacemos: bash:~# fakeroot make-kpkg --append_to_version -[PROCESADOR] [OPCIONES INIT] \ --revision=[REVISIÓN] kernel_image \ .........compilando , veter a tomar una birra por ahí, yo sin alcohol que soy menor :)................ ...........termínate el café o la birra...................... Cuando termine habrá una sorpresa esperando en ../ :) ====================================== 1.6 INSTALANDO EL KERNEL ====================================== bash:~# cd .. bash:~# ls kernel-source-[version] kernel-source-[version].tar.bz2 linux y..... kernel-image-[VERSION]-[ARQUITECTURA DEL PROCESADOR]_[REVISION]_i386.deb ¿Y ahora qué? bash:~# dpkg -i kernel-*.deb Empezará y... te podrá pedir opciones o advertencias: Si te pide abortar, depende de lo que sea dirás Y o N (sí o no): advertencia de los modulos: aborta bash:~# rm -rf /lib/modules/[VERSION DEL KERNEL COMPILANDO]-[586/386/486/686 , (PROCESADOR)] Advertencia del initrd, ¡cuidado! aborta y mira lo que pasa, quita si quieres la opcion --initrd al compilar o sigue con el proceso dando N a abort. Lo instalará como si fuera un paquete cualquiera y tendrás lo siguiente: /initrd.img: la imagen initrd, necesaria /vmlinuz.old : tu kernel antiguo /boot/System.map-[VERSION]-[ARCH DE PROCESADOR]: el archivo de mapeado /boot/vmlinuz-[VERSION]-[ARCH DE PROCESADOR]: El kernel como imagen linkeada y con los archivos necesarios en /usr/src/linux ====================================== 1.6.2 LILO -> CONFIGURA EL ARRANQUE ====================================== Esto es crítico, si cometes un error, solo con un disco de emergencia booteable con un kernel válido podrás arrancar. El propósito de esta parte solo es proveer información acerca de cómo configurar mínimamente lilo para usar el nuevo kernel que hemos compilado y enpaquetado, no te voy a contar cómo configurar lilo, solo cómo empezar a usar tu kernel nuevo. La configuración se encuentra en /etc/lilo.conf (si usas grub, que es mejor, no sigas estos pasos y leete el man de grub). La configuración que nos interesa suele ser esta: image=/vmlinuz label=Linux <- puede ser Linuz o St / st linuz / y si las cambiado tú... ¡pues no sé! root=/dev/hda[id particion ej. root=/dev/hda5] read-only Esto arrancaría la imagen nueva pero sin el initrd, y la fastidiamos dejándolo así. ¿Cómo configurarlo? Movemos esa configuración así: image=/vmlinuz.old label=LinuxOLD read-only optional y ponemos la nueva: image=/vmlinuz label=Linux initrd=/initrd.img root=[PARTICION] read-only [PARTICION]: /dev/hda + el numero de particion , ejemplo: hda5 si es scsi /dev/sda , etc . Muy bien: bash:~# lilo Added Linux * Added LinuxOLD Added [si teneis más, el resto] debemos estar seguros de que no la hemos fastidiado en algo, atentos a los errores de lilo (al ejecutarlo) podéis ver cómo marcha todo así: bash:~# lilo -q ====================================== 2.0 MÉTODO ESPARTACO :) PILDORA AZUL ====================================== El proceso es totalmente analogo al de Debian salvo en: · No se usa make-kpkg , solo make · El uso de fakeroot es opcional y no es necesario · No necesitas cramfs · Controlas todo el proceso. Aquí una guía script (micro-guia) de este método: ____ Nos vamos al directorio de fuentes del kernel: bash:~# cd /usr/src Descargamos la versión deseada: bash:~# wget http://www.kernel.org/pub/linux/kernel/[SERIES]/LINUX-[SERIES].[REVISION].TAR.GZ Siendo [SERIES] una cifra comprendida entre 1.0 y 2.6 y saltando de la 1.3 a la 2.0. Y [REVISION] una cifra de revisión válida : ej. 22 -> series=2.4 ; series.revision=2.4.22 Lo extraemos, puedes usar el método que explico en el apartado 1.2 pasando el proceso a segundo plano. bash:~# tar xfvz linux-[SERIES].[REVISION].tar.gz Eliminamos enlaces simbólicos anteriores. bash:~# rm -rf linux Creamos nuestro enlace simbólico. bash:~# ln -s linux-[SERIES].[REVISION] linux !!!!!!!PCMCIA!!!!!!!! Si vamos a instalar PCMCIA descomprimimos los archivos especificos. Esto es aplicable a kernels sin soporte nativo. !!!!!!!!!!!!!!!!!!!!! bash:~# tar xfvz pcmcia-cs-[SERIES].[REVISION].tar.gz Enlazamos nuestro pcmcia bash:~# ln -s pcmcia-cs-[SERIES].[REVISION] pcmcia _______________ Entramos al directorio de las fuentes del kernel bash:~# cd linux !!!IMPORTANTE!!! Si no usamos pcmcia lo borramos (o siqueremos usar los pcmcia-cs) Si no quieres pcmcia, deshabilítalo antes en la configuración o no te dejará seguir. bash:~# rm -rf */pcmcia _________________________- MRPROPER POWA bash:~# make menuconfig ______________________________ Leer el apartado 1.4 ______________________________ Comprobamos dependencias y generamos los .dep ______________________________ ------------------------------ bash:~# make dep ______________________________ Empezamos con el proceso de compilación... ______________________________ bash:~# make bzImage && make modules && modules_install ______________________________ copiamos la imagen nueva del kernel.... y el mapeado.... ______________________________ bash:~# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-[SERIES].[REVISION].[ARCH DE PROCESADOR] bash:~# cp System.map /boot/System.map-[SERIES].[REVISION].[ARCH DE PROCESADOR] ___:____ Sin PCMCIA, hacer ahora; con PCMCIA, después de instalar pcmcia-cs _________ bash:~# mkinitrd -o /boot/initrd-[SERIES].[REVISION].[ARCH DE PROCESADOR] /lib/modules/[SERIES].[REVISION].[ARCH DE PROCESADOR] ______________________________ PCMCIA...! ______________________________ bash:~# cd ../pcmcia bash:~# make config bash:~# make all bash:~# make install ================================ MODULOS ================================ SI COMPILASTE ALGO NECESARIO COMO MODULO AUN PUEDES SOLUCIONARLO. VER APARTADO 3.0 . ------------------------------------ LILO -> ARRANQUE VE AL APARTADO 1.6.2 ________________________________-> REINICIAMOS bash:~# shutdown -r now ====================================== 3.0 LOS MODULOS DEL KERNEL ====================================== Como has podido ver, estoy intentado tratar todos los temas que te puedan dar lugar a dudas, desde el proceso de arranque hasta la configuración de pcmcia. Pero, ¿cómo trabajar con modulos? Primero necesitas el Loadable Kernel Modules support , F-U-N-D-A-M-E-N-T-A-L . Necesitas soporte para modulos SO (por defecto). ¿Cómo se configura un modulo? Necesitaremos modprobe; modprobe cargará el módulo y nos mostrará los resultados. Opciones útiles (por el autor): -d ( debug ) bash:~# modprobe [modulo] un ejemplo útil: bash:~# modprobe ipv6 si nos retorna una shell limpia: bash:~# El módulo está correcto. Y ahora, ¿cómo lo cargo? bash:~# echo ipv6 >> /etc/modules Esto usa un pipe append, es decir, no crea un archivo nuevo (no uses solo un > o borraras tu /etc/modules) sino que añade el contenido sacado de input (stdin) y lo añade al /etc/modules. Podemos reniciar tranquilos, tenemos ipv6 :) . ====================================== 4.0 KERNEL HACKING Y OPCIONES AVANZADAS ====================================== A pesar de que, con suerte, parezca que tengo mucha experiencia trabajando con el kernel , no es del todo así, por eso en esta sección iré añadiendo lo que sé progresivamente y tratando de ser lo más correcto posible. También pido a los g00r00s que si ven algun error antes de meterme una patada en el culo me lo digan y lo pondré bien. A los lammers les pido que no se hagan pasar por g00r00s porque se os ve el pelo rápido y lo mismo me lo tomo mal, entonces rezadle a vuestra madre para recibir un par de ostias y nada más. Habilitando el debuggeado del kernel: En el paso de configuración debemos acceder a la seccion Kernel Hacking, Kernel hacking -> ----2.4.x---- [*] Kernel debugging <*> Debug high memory support <- Recomendada <*> Debug memory allocations <- Recomendada <*> Memory mapped I/O debugging <*> Magic SysRq key <*> Spinlock debugging ----2.4.x---- ----2.4.22--- <*> Check for stack overflows <- Recomendada <*> Compile kernels with frame pinters !!!!NO LA HE PROBADO!!!!! Así podremos trastear con el kernel por todos los lados. 2.4x quiere decir que son opciones disponibles en esas versiones Dentro de la última version estable al escribir esta guía, la 2.4.22, han aparecido nuevas funciones y posibilidades, sobre todo en lo relacionado con la criptografía. ---------------------------------------- 4.1 CRIPTOGRAFIA EN NUCLEO (CRYPTO API) ---------------------------------------- Cryptographic options -> ----2.4.22 -> 2.6.x---- [*] Cryptographic API <*> HMAC support <*> NULL algorithms <*> MD4 digest algorithm <*> MD5 digest algorithm <*> SHA1 digest algorithm <*> SHA256 digest algorithm <*> SHA384 and SHA512 digest algorithm <*> DES and Triple DES EDE cipher algorithms <*> Blowfish cipher algorithm <*> Twofish cipher algorithm <*> Serpent cipher algorithm <*> AES cipher algorithms <*> Deflate compression algorithm <*> Testing module ----2.4.22 -> 2.6.x---- La API criptografica ha parecido a partir de las series 2.4.x del kernel, y ahora con las series 2.6.x está mucho más desarrollada. He tenido la oportunidad de poder compilar un 2.6 en un 586 y los resultados fueron óptimos a excepción de los errores iniciales, dado que está en testing . Cuando pueda hacer benchmark pondré aqui los resultados. La ventaja de tener esta API es la velocidad con la que se pueden realizar cálculos criptográficos al estar embebida en el nucleo, además de no tener la necesidad de implementar grandes librerías externas. Por el momento no he podido aprender más sobre esta API y la uso para acelerar algunos servicios que requieren por ejemplo MD5 y generar SHA1 para un certificado SSL. ====================================== 5.0 PROBLEMAS Y SOLUCIONES ====================================== 1.-Kernel Panic-. Es el equivalente a un error fatal que impide inicializar el sistema de manera correcta. Puede ser causado por varias causas: · Incorrecta configuración del kernel · Carga insuficiente de módulos · Incompatibilidad de hardware o sistema de archivos. 2.-Charset not found-. Necesitas instalar con apt-get los codepages que den problemas o ver las ISO de los charset. 3.-Sale una s al iniciar el nuevo kernel con lilo y se reinicia-. Se te ha olvidado hacer initrd y especificarlo en lilo: mkinitrd -o /boot/initrd-[VERSION DEL KERNEL]-[ARCH] /lib/modules/[VERSION DEL KERNEL]-[ARCH] Editar lilo, ir a la imagen del nuevo kernel: añadir initrd=/boot/initrd-[version del kernel]-[arch] 4.- Kernel Panic: VFS Unable to mount root filesystem/fs at [dd:dd] Es uno de los errores más comunes, sobre todo en Debian. Significa que falta un módulo o una opción necesaria dentro del kernel. En Debian el error más común será el: ----------- 5.1 CRAMFS ----------- Este sistema de archivos de unix en principio no es compatible con Linux pero Debian incluye un parche de compatibilidad para el kernel. El problema se encuentra en que mucha gente olvida hacer las configuraciones necesarias del kernel y el gestor de arranque. Esta es la configuración necesaria: File Systems -> <*> Compressed RAM File System LILO -> - Dentro de la configuración del kernel problemático: root=[ROOT] [ROOT]: IDE/ATA:[/dev/hda{PARTICION}] SCSI:[/dev/sda{PARTICION}] bash:~# lilo Y reinicia. ¡Bon apetit! ====================================== 6.0 REFERENCIAS Y LINKS ÚTILES & AGRADECIMIENTOS ====================================== Mi Weblog: http://x68x65x6cx6c.weblogs.us/ Debianitas: http://www.debianitas.net Barrapunto: http://www.barrapunto.com NSRG-Security Research : http://www.nsrg-security.com Sitio oficial debian: http://wwww.debian.org Sitio oficial del Kernel: http://www.kernel.org ====================================== 6.1 AGRADECIMIENTOS ====================================== - Gracias a Pedro Reina por las correciones ortográficas y tipográficas ( 23/11/2003 ) ====================================== 7.0 SOBRE EL AUTOR ====================================== Nombre: Lorenzo Hernandez Garcia-Hierro Alias: trulux Blog: http://x68x65x6cx6c.weblogs.us/ Edad: 14 años Uso Linux desde hace 2 años y medio, compilé mi primer kernel hace 1 año por la necesidad de tener un sistema actualizado y seguro (eran tiempos del ptrace) . Soy miembro del grupo NSRG-Security Research junto con Daniel Barttlet de GNU (ver http://savannah.gnu.org) . Me he especializado en el campo de la seguridad informática y mis progresos más acentuados los he realizado en la seguridad dentro de los entornos web relacionados con Perl, PHP y otros lenguajes de scripting de servidor. Fundé el NSRG-Security Research paa reunir a un conjunto de personas apasionadas por el mundo unix y la seguridad a nivel de aplicación. ====================================== 8.0 TODO ====================================== · Añadir una FAQ · Ampliar la sección del método "Espartaco" · Usar DocBook en la siguiente versión. · Ampliar el área de refrencias. · Ampliar la sección "Kernel Hacking y Opciones Avanzadas"