Encuesta¿Que aplicaciones predeterminadas crees que deba llevar ALDOS 1.2?
Otras encuestas | 136 votos | 2 comentarios
TemasAlcance Libre (109/0)
Alcance Libre Desktop (243/0)
Anuncios (274/0)
Arte (8/0)
Comunidad (108/0)
Consejos y trucos (168/0)
Editoriales (30/0)
Entretenimiento (116/0)
Humor (62/0)
Internet (285/0)
Juegos (64/0)
Manuales y documentos (116/0)
Música (18/0)
Negocios y empresas (424/0)
Noticias Generales (976/0)
Nuestro idioma (8/0)
Opiniones (137/0)
Programación y desarrollo (109/0)
Programas y Aplicaciones (469/0)
Seguridad (184/0)
Sustento Físico (Hardware) (125/0)
Tiras cómicas (20/0)
Ubunteando (37/0)
Están en línea... Registrados: 14caos1982 ![]() darth_tradd emiliogm GOGO ![]() ilidan ![]() iron_brando jnobsa joelbarrios ![]() JoelG Jordi Villegas josuepaz80 manowar ![]() udtecnovirtual ugustavo2003 ![]() Invitados: 1349 Últimos registrados:udtecnovirtual cemolina Ruiz-Tapiador miguelcarmona YO Total registrados: 2170
Foro de soporte
Participan...Noticiasjoelbarrios (2853) bartoloco (149) Koalasoft (141) capotes (90) Flaquita (64) gomezbjesus (63) bakara (59) ValeriaBueno (52) RamOS (51) The One (47) domingov (43) rlameda (32) varisti (24) adrianpazr (21) core_dumped (19) Comentarios joelbarrios (343) Koalasoft (228) RamOS (181) gomezbjesus (94) Oscar Hernández (62) The One (61) juanroberto (51) rdario (46) Cause (42) rlameda (40) manowar (38) julioe (37) Micaelo (34) bakara (34) benfrid (32) |
Cómo compilar el núcleo (kernel) de GNU/Linux en CentOS.Autor: Joel Barrios DueñasCorreo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.Una de las grandes ventajas de que el núcleo (kernel) GNU/Linux sea equipamiento lógico libre (Software Libre) es el poder descargar el código fuente del núcleo, configurar éste para compilar específicamente con opciones adecuadas a necesidades particulares o con controladores específicos para un sustento físico (hardware) en particular, compilarlo y obtener como resultado mejoras en el desempeño. La gran variedad de distribuciones de GNU/Linux instalan un núcleo (kernel) que fue configurado y compilado con opciones genéricas y que permiten utilizar éste en una gran variedad de dispositivos y computadoras. Esto facilita la vida a los desarrolladores y empaquetadores que trabajan para cada distribución pues de esta forma con cuatro o cinco versiones del paquete de núcleo abarcan la mayoría de los sustentos físicos en el mercado. Ésto elimina la necesidad de los usuarios por compilar el núcleo. Por mencionar un ejemplo, el paquete del núcleo de CentOS 5 y Red Hat Enteprise Linux 5 que se distribuye para arquitecturas i686 incluye opciones y optimizaciones genéricas que permiten utilizar un mismo paquete RPM del núcleo para una amplia variedad de sistemas. Éste incluye el soporte para ser utilizado con microprocesadores como Pentium Pro, Pentium II, Pentium III, Pentium 4, Pentium M, Celeron, Athlon, Duron, Cyrix i686, etc. Evidentemente este soporte genérico impide poder explotar todo el potencial e instrucciones de un modelo de microprocesador en particular. Un ejemplo del porque conviene recompilar el núcleo.Si, por ejemplo, se dispone una computadora portátil (Laptop) Compaq Armada M300 con microprocesador Pentium III (Coppermine) de 500 MHz, con 320 MB RAM, circuitos integrados Intel PIIX4, tarjeta de audio ESS Technology ES1978, tarjeta de red Ethernet Pro 100 y otros ciertos dispositivos en particular, el núcleo genérico incluido en la instalación funcionará bien, pero se tendrá un desempeño inferior. Configurar y compilar el núcleo específicamente para las características de este modelo de computadora portátil, excluyendo de la configuración funciones que jamás se utilizarán en este sistema, mejorará su desempeño significativamente. En sistemas caseros y computadoras portátiles con cierta antigüedad, pueden excluirse funciones como el soporte para más de 4 GB de RAM, soporte genérico para arquitectura ix86, soporte para otros modelos de computadoras portátiles, soporte para más de un microprocesador, soporte para IPv6 y otras opciones que solo serían útiles en otro tipo de sistemas como servidores. Puede agregarse soporte para más periféricos, como por ejemplo más dispositivos USB, y compilar algunos controladores (cómo el soporte para LVM) dentro del núcleo en lugar de hacerlo como módulos a fin de mejorar el desempeño durante el arranque del sistema. En un servidor se puede mejorar mucho el desempeño configurando y compilando exclusivamente las opciones y módulos específicos para la configuración de sustento físico (hardware) y funciones requeridas para los servicios a brindar. Procedimientos.Determinar el sustento físico y controladores.Este procedimiento es complicado e implica contar con un cierta experiencia y conocimientos generales acerca del sustento físico (hardware). Módulos utilizados por el sistema.Utilizando el mandato lsmod es posible determinar que controladores se están utilizando en el sistema. Esta lista de controladores debe tomarse muy en cuenta a fin de evitar excluir alguno de éstos. Utilice el mandato de la siguiente forma:
Lo anterior puede devolver una salida similar a la siguiente, que dependerá del sustento físico del sistema:
Tipo de microprocesador.La información del microprocesador se puede consultar leyendo el contenido del fichero virtual /proc/cpuinfo utilizando el mandato less del siguiente modo:
Lo anterior puede devolver una salida similar a la siguiente, que dependerá del tipo de microprocesador del que se disponga:
Dispositivos PCI.El mandato lspci permite determinar los dispositivos PCI (Peripheral Component Interconnect o Interconexión de Componentes Periféricos) presentes en el sistema.
Lo anterior puede devolver una salida similar a la siguiente, que dependerá de los dispositivos PCI de los que que se disponga:
Dispositivos USB.De manera similar al mandato lspci, el mandato lsusb permite determinar los dispositivos USB (Universal Serial Bus o Transporte Universal en Serie) presentes en el sistema. Conecte a las ranuras USB del sistema los dispositivos USB más frecuentemente utilizados y utilice el mandato lsusb.
Lo anterior puede devolver una salida similar a la siguiente, que dependerá del tipo de dispositivos USB de los que se disponga:
Instalación el equipamiento lógico necesario.Para CentOS, a fin de disponer de los paquetes RPM de fuentes, se debe configurar primero los depósitos yum de los paquetes RPM fuentes (.src.rpm) como el nuevo fichero /etc/yum.repos.d/CentOS-Sources.repo, con el siguiente contenido:
Al terminar se continúa con la instalación de los paquetes RPM binarios de el compilador gcc, cabeceras de desarrollo para el lenguaje de programación C, paquete de desarrollo de ncurses, para construir la herramienta de configuración del núcleo, y el paquete para creación de paquetería RPM:
Si se va a utilizar la herramienta de configuración gráficos, hay que instalar además los paquetes qt-devel y gcc-c++ del siguiente modo:
Obtener el código fuente del núcleo.A partir de los depósitos de la distribución utilizada.Utilizar el paquete fuente de la distribución de GNU/Linux utilizada garantiza que se utilizará la misma versión oficial de núcleo para producción del distribuidor, la cual seguramente incluye parches específicos para funcionar con la instalación de esa distribución de GNU/Linux. Esto garantiza que se mantendrá la compatibilidad de los API (Application Programming Interface o Interfaz de Programación de Aplicaciones) requeridos por aplicaciones de terceros. Primero se instala el paquete yum-utils de la siguiente forma:
El paquete yum-utils incluye la herramienta yumdownloader, misma que se utilizará para descargar el paquete fuente del paquete RPM del kernel, del siguiente modo:
Suponiendo que se tiene instalado el paquete del núcleo denominado kernel-2.6.18-92.1.6.el5, lo anterior descargara desde los depósitos de equipamiento lógico en Internet el paquete kernel-2.6.18-92.1.6.el5.src.rpm dentro del directorio de trabajo actual. Se procede a instalar el paquete fuente kernel-2.6.18-92.1.6.el5.src.rpm de la siguiente forma:
Esto instalará los fuentes y parches para el núcleo en el directorio /usr/src/redhat/SOURCES/ y el fichero de especificación para construir el paquete binario RPM como /usr/src/redhat/SPECS/kernel-2.6.spec. Para poder utilizar el código fuente, hay que descomprimir y aplicar los parches incluidos por el distribuidor. Esto se consigue utilizando el mandato rpmbuild con las opciones -bp y --target=[arquitectura], donde [arquitectura]representa la arquitectura genérica del microprocesador. En el caso de CentOS 5, están disponibles las configuraciones genéricas para i586, i686, x86_64, ia64, ppc, ppc64, s390 y s390x, y las variantes i686-PAE, para equipos , i686-xen, ia64-xen y x86_64-xen, para utilizar las funciones de Xen que permiten utilizar paravirtualización. Las opciones -bp inician parcialmente el la construcción del paquete (build) pero solo hasta la sección %prep (preparativos) del fichero de especificación, lo que significa que se descomprimirá el fuente del núcleo y se aplicarán los parches. Se debe acceder al directorio /usr/src/redhat/SPECS/.
Posteriormente se procede a descomprimir fuentes y aplicar parches. La opción --target=i686 se utilizará en ejemplo a continuación para que se instale un fichero previamente configurado con opciones genéricas para la arquitectura i686.
Considerando en el ejemplo que se instaló el paquete fuente RPM kernel-2.6.18-92.1.6.el5.src.rpm, solo resta es acceder al directorio /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/ para configurar las opciones que se utilizarán.
Dentro del paquete RPM se incluyen varios ficheros con configuraciones genéricas de acuerdo a la arquitectura, los cuales se instalan dentro del directorio /usr/src/redhat/SOURCES/. Uno de estos ficheros se selecciona y copia automáticamente dentro del directorio /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/ cuando se define la arquitectura con la opción --target del mandato rpmbuild.
Descargar desde kernel.orgLa principal ventaja de descargar el núcleo desde kernel.org es que se contará con la más reciente versión, mejoras y más dispositivos soportados. El inconveniente es que puede perderse la estandarización con la distribución utilizada o bien la compatibilidad con algunas aplicaciones de terceros que dependen directa o indirectamente de una versión en particular del núcleo, o un API incluido en alguna versión en particular del núcleo. Se accede hacia http://www.kernel.org/ y se descarga, desde la parte inferior de la portada del sitio, la versión más reciente del núcleo.
Lo anterior descargará el paquete linux-2.6.25.10.tar.bz2. Se procede a descomprimir linux-2.6.25.10.tar.bz2 utilizando lo siguiente:
Lo anterior descomprimirá el contenido en un directorio denominado linux-2.6.25.10. Solo resta es acceder hacia este directorio para configurar las opciones que se utilizarán.
Configuración del núcleo.Se puede utilizar el mandato make con la opción config de la siguiente forma:
El inconveniente de ésto es que se tendrá que responder una a una cada una de las opciones del núcleo. Solo se recomienda para usuario muy experimentados. Se puede utilizar el mandato make con la opción menuconfig de la siguiente forma:
Lo anterior compilará y ejecutará una interfaz hecha en ncurses que permitirá examinar el árbol de opciones y habilitar y deshabilitar de una forma más amistosa, pues cada opción incluye una ayuda que explica para que sirve y si es seguro incluirla, compilarla como módulo o excluirla. ![]() En general, se puede empezar excluyendo las optimizaciones genéricas y funciones que nunca se utilizarán en el sistema como el multiprocesamiento simétrico y soporte para más de 4 GB de RAM. ![]() Y luego seleccionado el tipo exacto de microprocesador y excluir las funciones genéricas. ![]() Pueden habilitarse o excluirse funciones y módulos, de acuerdo a las necesidades y el sustento físico determinado previamente con los mandatos lsmod, lspci y lsusb, en el resto de las opciones del árbol de configuración de menuconfig. En general se puede compilar dentro del núcleo lo siguiente:
En general se debe evitar incluir dentro del kernel y solo compilar como módulo lo siguiente:
La regla general es mantener el núcleo lo más pequeño posible y evitar incluir dentro de éste demasiados controladores. Si se compila un controlador dentro del núcleo y el dispositivo es retirado del sistema o éste sufre algún tipo de daño que afecte su funcionamiento, el núcleo puede sufrir conflictos con el resto de los controladores, o bien sufrir un fallo. Es preferible compilar como módulos los controladores de todo aquello que se pueda remover del sistema, incluyendo los dispositivos que utilicen ranuras PCI. Al terminar de configurar lo anterior, simplemente se sale de menuconfig para guardar los cambios. ![]() Compilación del núcleo.La compilación se inicia utilizando el mandato make.
Instalación del núcleo.Después de varios minutos, dependiendo de la capacidad del sistema, se procede a instalar primero los módulos:
Al concluir el procedimiento, se instala el núcleo.
Lo anterior instalará el núcleo en el directorio /boot, creará el fichero system.map correspondiente, creará la imagen del disco RAM correspondiente y añadirá una entrada en el fichero /boot/grub/grub.conf, respetando los núcleos previamente instalados al colocarse como opción de arranque secundaria. Simplemente reinicie y pruebe el nuevo núcleo. Si todo parece funcionar correctamente, puede editar el fichero /boot/grub/grub.conf y colocar el nuevo núcleo como predeterminado.
NOTA: Es muy importante siempre conservar una copia del núcleo que viene con la distribución utilizada en caso de presentarse problemas. Creando paquete RPM.Se puede crear un paquete RPM a partir de los binarios recién compilados. Acceda de nuevo hacia el directorio del núcleo recién compilado y utilice el mandato make con la opción binrpm-pkg de la siguiente forma:
Si desea crear un paquete RPM compilando todo de nuevo, puede utilizar el mandato make con la opción rpm-pkg de la siguiente forma:
La instalación del paquete resultante se realiza utilizando el mandato rpm con las opciones -ivh (instalar, descriptivo y mostrar barra de progreso), a fin de que se mantengan instalados los paquetes del núcleo existentes en el sistema y estos coexistan, permitiendo elegir con cual iniciar el sistema desde el arranque con Grub.
Lo anterior instalará el paquete RPM del núcleo recién creado, sin afectar a otras versiones de paquetes del núcleo que estén previamente instaladas. Al terminar, solo será necesario eligir desde Grub el núcelo con el cual se iniciará el sistema.
Última Edición lunes 14 de julio de 2008 @ 09:31 CDT|8,241 Hits |
Comentarios Recientes