Quien dijo “No sé como compilar un kernel a la DEBIAN” desde el Terminal de GNU/Linux. Bueno aquí lo tienes!


FELIZ NOVIEMBRE: 2014 (PUBLICACIÓN 163)

Saludos: Integrantes de la Gran Comunidad de Usuarios del Software Libre (No necesariamente gratis) y Usuarios del Linux Post Install – Script Bicentenario (CMSL / U-LPI-SB), Compañeros, Colegas y Autodidactas del Siglo XXI. Y ahora también a los Ingenieros en Telecomunicaciones, Sistemas e Informática, Licenciados y Técnicos de áreas afines.

Saludo de Bienvenida

En esta Centésima Sexagésima Tercera (163°) publicación del año vamos a desmitificar otro de esos paradigmas sobre GNU/Linux que muchos de los Usuarios de Sistemas Operativos Privativos y uno que otro Linuxero Novato tienen todavía metido entre ceja y ceja. El mito de “No sé como compilar un kernel a la DEBIAN” desde el Terminal de GNU/Linux, en este caso, les proporcionare un pequeño procedimiento que les pueda servir de guía para mostrar los pasos, temas y contenidos didácticos y educativos necesarios para realizar una sencilla y práctica exposición a niños, niñas y adolescentes de primaria, principalmente, de una forma tal que sea entretenida y muy rica en información útil. Porque Quien dijo “No sé como compilar un kernel a la DEBIAN” desde el Terminal de GNU/Linux. Bueno aquí lo tienes!, es decir, le mostraremos a los escépticos e incrédulos que no es cierto, que solo es desconocimiento o falta de experiencia técnica. Estos son pequeños “Tips” que nos facilitan realizar esas contribuciones sociales y educativas reservadas por lo general para personas expertas en Tecnología, Informática, Software Libre o nuestro Sistema Operativo Nacional basado en DEBIAN “Canaima GNU/Linux”.

Bueno aquí les va la información:

Que es el kernel/núcleo?

El kernel ó núcleo de Linux se puede definir como el corazón de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos.

Las funciones más importantes del mismo, aunque no las únicas, son:

  • Administración de la memoria para todos los programas y procesos en ejecución.
  • Administración del tiempo de procesador que los programas y procesos en ejecución utilizan.
  • Es el encargado de que podamos acceder a los periféricos/elementos de nuestro ordenador de una manera cómoda.

Hasta que empezó el desarrollo de la serie 2.6 del núcleo, existieron dos tipos de versiones del núcleo:

  • Versión de producción: La versión de producción, era la versión estable hasta el momento. Esta versión era el resultado final de las versiones de desarrollo o experimentales.Cuando el equipo de desarrollo del núcleo experimental, decidía que tenia un núcleo estable y con la suficiente calidad, se lanzaba una nueva versión de producción ó estable. Esta versión era la que se debía utilizar para un uso normal del sistema, ya que eran las versiones consideradas más estables y libres de fallos en el momento de su lanzamiento.
  • Versión de desarrollo: Esta versión era experimental y era la que utilizaban los desarrolladores para programar, comprobar y verificar nuevas características, correcciones, etc. Estos núcleos solían ser inestables y no se debían usar sin saber lo que se hacia.

Como interpretar los números de las versiones de las series por debajo de la 2.6:

  • Las versiones del núcleo se numeraban con 3 números, de la siguiente forma: AA.BB.CCAA: Indicaba la serie/versión principal del núcleo. Solo han existido la 1 y 2. Este número cambiaba cuando la manera de funcionamiento del kernel había sufrido un cambio muy importante.
    BB: Indicaba si la versión era de desarrollo ó de producción. Un número impar, significaba que era de desarrollo, uno par, que era de producción.
    CC: Indicaba nuevas revisiones dentro de una versión, en las que lo único que se había modificado eran fallos de programación.
  • Unos ejemplos nos ayudaran a entenderlo mejor:ejemplo 1: versión del núcleo 2.4.0: Núcleo de la serie 2 (AA=2), versión de producción 4 (BB=4 par), primera versión de la serie 2.4 (CC=0)
    ejemplo 2: versión del núcleo 2.4.1: Núcleo de la serie 2, versión 4, en el que se han corregido errores de programación presentes en la version 2.4.0 (CC=1)
    ejemplo 3: versión del núcleo 2.5.0: versión 0 del núcleo de desarrollo 2.5.

Con la serie 2.6 del núcleo, el sistema de numeración así como el modelo de desarrollo han cambiado. Las versiones han pasado a enumerarse con 4 dígitos y no existen versiones de producción y desarrollo.

  • Las versiones del núcleo se numeran hoy en día con 4 dígitos, de la siguiente forma: AA.BB.CC.DD.AA: Indica la serie/versión principal del núcleo.
    BB: Indica la revisión principal del núcleo. Números pares e impares no tienen ningún significado hoy en día.
    CC: Indica nuevas revisiones menores del núcleo. Cambia cuando hay nuevas características y nuevos drivers son soportados.
    DD: Este dígito cambia o se agrega cuando se corrigen fallos de programación o fallos de seguridad dentro de una revisión.

Hoy en día se suele usar el núcleo distribuido con la distribución que el usuario utiliza. Son las distribuciones las encargadas de distribuir núcleos estables a sus usuarios y estos núcleos se basan en el núcleo (“vanilla“) distribuido por Linus Torvalds y el equipo de programadores del núcleo.

Dónde conseguir el núcleo

El núcleo denominado “vanilla” (sin alteraciones y suministrado por Linus Torvalds) se puede bajar de un gran número de servidores en internet pero el sitio oficial es http://www.kernel.org/. En este enlace tienes la lista internacional oficial de servidores espejos, de donde es posible bajarse cualquier versión del núcleo (última y antiguas).

Cada distribución distribuye sus núcleos por los canales de actualización habituales para cada una de ellas.

Actualmente (06/12/14) la versión disponible es la:

Selección_001

Configuración e instalación de un nuevo núcleo

Este es uno de los temas que asustan a los nuevos usuarios de Linux. Lo primero, que debemos saber es que no hay razón para asustarse, la configuración e instalación de un nuevo núcleo en nuestro sistema es mas fácil de lo suena. Lo segundo, es que podemos tener un sistema estable, actualizado y que funcione sin problemas durante meses sin tener que compilar un solo núcleo, siempre y cuando utilicemos los núcleos distribuidos de nuestra propia distribución, aunque no sean los mas nuevos.

Es muy recomendable el utilizar los núcleos distribuidos por la distribución que tenemos instalada. Estos núcleos tienen muy buena calidad y son muy completos y con esto nos evitamos el trabajo de configurar, compilar y mantener nuevas versiones del núcleo. Pero si eres de los que les gusta experimentar y aprender nuevas cosas, adelante, nadie te impide bajar el último núcleo y experimentar con el, esto era mucho más común hace unos años y una tarea casi imprescindible en muchos casos.

Para nuestro ejemplo utilizaremos la ultima versión estable del Kernel, la Versión 3.17.4. A grandes rasgos los beneficiados en Linux 3.17 son los sospechosos habituales, comenzando por el soporte de nuevo hardware con ARM a la cabeza, terminando terminando con el soporte de nuevo hardware gráfico. Porque donde parecen estar puestos todos lo ojos es en los controladores libres de Nvidia y AMD principalmente.

Por ejemplo, el controlador para AMD Radeon cubre finalmente la serie R9 290, pero no por defecto o de manera completa y eficiente, según se advierte en diversos foros. En cuanto a Nvidia, desde que la compañía colabora con el desarrollo de Nouveau estamos viendo más movimiento que nunca y Linux 3.17 es buena muestra de ello: el soporte para GPUs Kepler con SoCs ARM Tegra K1 introducido en la anterior versión del núcleo sigue puliéndose y se extiende a la familia gráfica de Nvidia: Fermi, Kepler y Maxwell.

Se va más despacio en el tema gráfico de lo que nos gustaría, pero se va. Por mencionar otra curiosidad, Linux 3.17 incluye soporte para el mando de Xbox One, pero sin vibración todavía.

Para mayor información sobre los cambios y novedades del nuevo Kernel puedes visitar la siguiente URL: Kernel Newbies.

Para los interesados en el tema existen dos documentos muy buenos que podéis utilizar para aprender a como compilar un núcleo, FAQ/Kernel compilation y el Kernel Rebuild Guide, sin embargo aquí les dejo mi sencillo y directo método de compilación e instalación a la DEBIAN.

Compilación e Instalación a la DEBIAN

Dejar de compilar un kernel por la vertiente clásica para hacerlo a la manera DEBIAN (debian way) proporciona muchas ventajas: Es decir, a empaquetar un Kernel. Se empaqueta, se crea un paquete con extensión .deb. Cualquier buen Administrador de Sistemas sabe las principales ventajas de que se genere un paquete. Entre las principales están:

  • Facilidad: Cuando tengamos que eliminar el kernel (quizás porque ya hayamos compilado una nueva versión, por ejemplo), lo único que debemos hacer es utilizar la herramienta dpkg de la siguiente manera: dpkg -r TU_KERNEL. Donde TU_KERNEL es el nombre que tiene el kernel empaquetado. Para eliminar el kernel también puedes utilizar herramientas como apt-get, aptitude, o mejor aún Synaptic para los usuarios novatos que están comenzando con Linux.
  • Portabilidad: Tener un paquete con nuestro kernel facilita guardarlo en un Pendrive, CD, DVD, o mejor aún: si tenemos un servidor web es factible distribuirlo. El principal objetivo de esto es tener la posibilidad de instalar ese mismo kernel en varias máquinas. DEBIAN está implementando esta característica desde hace mucho años, ofrece kernels pre-compilados para tu computador en sus repositorios de paquetes, de manera que si eres un usuario final, te da pereza compilar el kernel o no estés en la necesidad de hacerlo tengas la posibilidad de elegir el paquete (kernel) entre la gran variedad que hay e instalarlo con algún gestor de paquetes como aptitude, apt, dpkg.

PASO 1: Verificar versión actual en uso

Abra un Terminal de root y teclee la siguiente linea de comando: Uname -r, tal como se muestra a continuación. En su pantalla saldrá el numero de Kernel instalado en su sistema. Este paso es meramente informativo y para precaución.

jalbert : bash – Konsole_003

PASO 2: Verificar paquetería de soporte de compilación requerida

En el terminal ya abierto, proceda a ejecutar las siguientes lineas de comandos (con aptitude o apt-get) para instalar los respectivos paquetes indicados:

aptitude install kernel-package
aptitude install build-essential
aptitude install libncurses5-dev
aptitude install fakeroot

Dependiendo de factores como la Distribución, la versión o estado de actualización de su Sistema operativo podría necesitar instalar también estos paquetes:

aptitude install gcc dpkg-dev initramfstools bc

PASO 3: Descargar el Kernel actualizado y copiarlo en la ruta apropiada

Opción 1: Vía pantalla gráfica con un clic en la segunda linea (stable: 3.17.4 2014-11-21) donde dice [tar.xz] . Para nuestro ejemplo una vez descargado el archivo debe copiarse en la ruta “/usr/src” de tu equipo.

Selección_001

Opción 2: Vía Terminal de root sobre la ruta “/usr/src”, teclee y ejecute la linea de comando: wget -c https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.17.4.tar.xz, tal como se muestra a continuación:

jalbert : bash – Konsole_006

PASO 4: Descomprimir y desempaquetar el Kernel descargado

Descomprimir: unxz linux-3.17.4.tar.xz

jalbert : bash – Konsole_008

Desempaquetar: tar xvf linux-3.17.4.tar

jalbert : bash – Konsole_009

PASO 5: Crear Carpeta de Compilación con Enlace simbólico y posicionarse en ella para iniciar el proceso

Crear carpeta con enlace simbolico: ln -s linux-3.17.4 linux

jalbert : bash – Konsole_011

Posicionarse en la Carpeta de Compilación: cd /usr/src/linux

jalbert : bash – Konsole_010

PASO 6: Preparar ambiente de compilación en el Sistema Operativo

Eliminar (Limpiar) los archivos de configuración y los fuentes del kernel anterior: make clean && make mrproper

Nota: Este paso ayuda a eliminar (limpiar) todos los archivos que se haya generado de una compilación anterior.

PASO 7: Respaldar la configuración del Kernel actual

Respaldar: cp /boot/config-`uname -r`* .config

jalbert : bash – Konsole_013

PASO 8: Iniciar la Configuración del Kernel actual

Iniciar: make menuconfig

Nota: Una vez que tengamos los fuentes descomprimidos dentro del directorio de los fuentes (Ej./usr/src/linux/), podemos personalizar el Kernel, de 3 formas diferentes:

  • make config: Para esta forma hay que tener algo de experiencia debido a que se hacen muchas preguntas de hardware, si se tiene poca experiencia es mejor usar una de las otras formas.
  • make menuconfig: Es mas amigable ya que posee un sencillo menú interactivo.
  • make xconfig: Es requisito tener el servidor X instalado y en funcionamiento ya que toda la configuración se hace gráficamente haciendo uso del sistema de ventanas. NOTA: Se necesita tener instaladas las librerías QT, en ubuntu apt-get install libqt3-dev

      jalbert : bash – Konsole_014

jalbert : make – Konsole_015

jalbert : make – Konsole_016

jalbert : make – Konsole_017

jalbert : make – Konsole_018

jalbert : make – Konsole_019

jalbert : bash – Konsole_020

Como se puede ver en las imágenes anteriores que muestran los pasos a seguir, una vez que realice la configuración de su elección, dentro del montón de diferentes opciones disponibles para su núcleo, salve la configuración y salga del menú. De hecho, hay demasiados opciones dentro del menú para el alcance de este tutorial. Para seleccionar las opciones del Kernel de su preferencias, la mejor manera es por ensayo y error, junto a una detallada y exhaustiva investigación en Google. Esta es la mejor manera de aprender. Si usted está simplemente tratando de actualizar el kernel a la versión más reciente, usted no tiene que cambiar nada y puede simplemente seleccionar “Guardar configuración”, teniendo muy en cuenta si debe esta seleccionada o no la primera opción relativa a si el kernel será para 64 bits o no.

PASO 9: Iniciar la Compilación y Generación de los paquetes .deb del Kernel actual

Iniciar compilación: make-kpkg clean

  jalbert : bash – Konsole_021

jalbert : bash – Konsole_023

Iniciar generación de paquetes .deb: fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers

jalbert : bash – Konsole_022

jalbert : fakeroot – Konsole_024

Los que hayan compilado un kernel de Linux saben que el comando fakeroot make-kpkg equivale a: make dep, make clean, make bzImage y make modules

La opción –initrd crea una imagen initrd en el paquete que se guardará en /boot cuando instalemos el kernel (recordar que solo estamos compilando y empaquetando, no instalando).

La opción –append-to-version=-custom personalizara el nombre de nuestros paquetes con lo que coloquemos despeus del signo igual, ejemplo: -custom.

El comando anterior creará dos paquetes con extensión .deb en el directorio superior. Un paquete será el kernel y el otro los kernel-headers.

La opción de kernel_headers es opcional, yo la utilizo debido a que muchos programas y módulos (ver la sección Gestión de módulos) necesitan tener los headers del kernel que se está usando para poder ser instalados, ejemplo: el driver de nvidia, VMware, ndiswrapper, madwifi, otros.

Nota: El tiempo de compilación es proporcional a la configuración que hayas hecho y a tu poder de computo. Si incluiste muchos módulos se demorará más. Hay que tener paciencia, es muy frecuente que se tarde bastante.

PASO 10: Instalación de los paquetes .deb del Kernel actual

Salir del Directorio de Compilación: cd /usr/src

Instalar paquetes generados: dpkg -i *.deb

Nota: Al finalizar la instalación de los paquetes debs, el GRUB se actualizara automáticamente. Luego de esto usted puede copiar y utilizar dichos paquetes posteriormente en otras instalaciones o en otras distros (basadas en DEBIAN), teniendo en cuenta que si lo dejo estándar o con pocas configuraciones avanzadas este puede servir en casi cualquier Equipo, si le hizo muchas personalizaciones basada en el equipo generador puede ser que solo funcione en él.

Para mayor información leer este otra publicación:

Configurar y compilar el kernel Linux (varios métodos).

Compilar un Kernel en Debian, Ubuntu y derivados.

8.6. Compilar un nuevo núcleo.

Personalización y compilación del Kernel de Linux a la Debian Way

Para mayor información ver el siguiente vídeo:

Si alguno conoce otro enlace, procedimiento o paquete útil, practico, necesario o funcional adecuado, coméntelo para hacer esta publicación más completa!

Recuerden que si quieren conocer o experimentar con el LPI-SB6 pueden hacer clic en el siguiente enlace:

Todo sobre el LPI-SB6

Postdata: Soy un Ingeniero en Informática (Especialista en Proyectos de Migración de Software Libre a Nivel de Usuarios) con un Excelente Empleo pero si me ofrecen 15.000,00 Bs. Básicos + Primas + Bonos + Beneficios socio – económicos, puedo considerar ofertas! Para cualquier información llamar al: 0416.610.13.03

##########################################

Aquí les dejo esta encuesta para medir el apoyo logrado:

##########################################

Mensaje 100% Positivo del Blog para esta entrada:

LEY DE INFOGOBIERNO EN VENEZUELA

LEY DE INFOGOBIERNO

TÍTULO III – DE LOS TRIBUTOS

Capítulo II – De las tasas y contribuciones especiales

De las tasas por certificación y homologación de los equipos o aplicaciones con soporte criptográfico

Artículo 65. La acreditación correspondiente contendrá, además de los extremos requeridos por la Ley Orgánica de Procedimientos Administrativos y los previstos establecidos en el Registro Nacional de Contratistas los siguientes:

1. El tipo de acreditación que se trate.
2. La determinación de las características y de los servicios que presta.
3. El tiempo durante la cual se otorga no podrá ser superior a dos años.
4. La remisión expresa a la norma instruccional que contenga las funciones y obligaciones de las unidades de servicios de verificación y certificación.

Excepción del uso de programas informáticos libres

Artículo 66. La Comisión Nacional de las Tecnologías de Información, excepcionalmente podrá autorizar, hasta por tres años, la adquisición y el uso de software que no cumpla con las condiciones de estándares abiertos y software libre, cuando no exista un programa desarrollado que lo sustituya o se encuentre en riesgo la seguridad y defensa de la Nación.

La Comisión Nacional de las Tecnologías de Información, al autorizar el uso del software privativo, establecerá las condiciones y términos para el desarrollo de una versión equivalente en software libre y estándares abiertos.
__________________________________________________________________

Atrévete, usa Linux, sobre todo Canaima GNU / Linux, el Sistema Operativo Libre oficial de la República Bolivariana de Venezuela.

La Lucha es Global y somos Ciudadanos Globales, todos a luchar por un Mundo Mejor!

Anuncios

7 comentarios sobre “Quien dijo “No sé como compilar un kernel a la DEBIAN” desde el Terminal de GNU/Linux. Bueno aquí lo tienes!

  1. Gracias por compartir el tutorial, este método se me hizo mas entendible el procedimiento y me ha funcionado y llevo dos compilaciones realizadas con éxito.
    y los paquetes deb generados los guardo para cuando requiera probar otro distro basados en debian.

    Me gusta

  2. muy bueno tu tutorial amigo. estaba seguiendolo al pie de la letra para mi debian ya con hoy dia el kernel 4.11.4. y logre quitar cosas que no quiero y que si. soy mas de opensuse pero igualmente me gustan ambas distros cada una tiene su encanto. paticularmente el salto de kernel en opensuse es mas generico y simple con añadir el repo y darle a un comando para actualizar y ya esta listo.

    Me gusta

Gracias por tus comentarios...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s