7. Forma de compilación
01.11.2013 00:00
Una vez terminada la modificación de los archivos, se procede a compilar el kernel, regresando al directorio principal de la versión:
cd ../../.. |
NOTA: Si se ha compilado ya una versión anterior y aún permanecen los archivos, será mejor aplicar el siguiente comando para eliminar todo lo anterior:
make mrproper && make clean |
make mrproper Deja las fuentes del kernel limpias e impolutas. Borran hasta los ficheros ocultos, incluyendo .config y .depend. Este comando sirve para asegurarse de que todo está realmente limpio, cuando se desee rehacer una compilación de raíz.
make clean Limpia las fuentes del kernel eliminando todos los archivos *.o encontrados. Este comando se usa en caso de error para limpiar los archivos intermedios y volver a comenzar o cuando se comenzará a recompilar un kernel para asegurarse de que no queden restos indeseados de la última compilación. El archivo .config no se toca, ni .depend tampoco, pero como sí desaparecen el Makefile y otros archivos deberán volver a correr make dep tras cargar o retocar la configuración.
Primero hay que copiar las configuraciones de compilación del Kernel que se está ejecutando, para que se compilen en el Kernel modificado :
make oldconfig |
make oldconfig Usa el mismo archivo de configuración que la última vez, pero sin abrir menús, si no hay ninguno anterior inicia la configuración en modo pregunta-respuesta en la terminal.
NOTA: Es posible que éste comando solicite configuraciones para el nuevo kernel, pero se pueden elegir las predefinidas manteniendo pulsada la tecla “Enter” durante 30 segundos aproximados.
Y ahora se ejecutan los siguientes comandos para comenzar la compilación:
make dep && make bzImage && make && make install && make modules && make modules_install |
make dep Crea las dependencias; esto quiere decir que crea un archivo de configuración oculto llamado .depend que contiene las indicaciones para las herramientas de compilación. Allí se especifican, por ejemplo, dónde están las cabeceras de las librerías del sistema, dónde está el ensamblador y qué flags usarán las diferentes herramientas (especificaciones para cada arquitectura, etc).
make bzImage Crea la imagen comprimida del kernel, o sea; el kernel mismo. El archivo generado se guarda en /usr/src/linux/arch/i386/boot y se llama bzImage
make modules Compila los módulos, que son en realidad ficheros objeto (fichero.o).
make modules_install Se copian los módulos a a /lib/modules/versión_del_kernel
TIEMPO DE COMPILACIÓN:
El proceso de compilación en una PC puede demorar entre 30 minutos y 1 hora, o en una Máquina virtual entre 3 y 5 horas, dependiendo de las características de hardware del equipo y los programas que además se estén ejecutando. Lo he intentado en Portátil de Procesador Core i5 con 8 GB de RAM terminando la compilación en 30 minutos, y en Máquina virtual en 3 horas.
En algunos comandos, es posible que el proceso tarde algunos minutos, es decir que en la pantalla se quede pasmada o no avancen las líneas. Es normal, por favor espera mientras continúa el proceso.
ERRORES
Los errores podrán notarse en esta parte, es posible que algunos drivers no sean reconocidos, es posible que los archivos no hayan sido modificador en forma correcta, también puede ser que el código fuente de tu llamada al sistema esté incorrecto. Por favor haz una captura de pantalla y redacta en un comentario el problema que presentas. Para una mejor atención, escríbenos mediante el formulario de contacto.
Al finalizar el proceso de compilación, puede terminar con una pantalla semejante a ésta:
Para continuar, hay que entrar a la carpeta boot del sistema actual y crear la imagen de los módulos de los dispositivos:
cd /boot mkinitrd -f initrd-3.11.8.img 3.11.8 |
mkinitrd Crea una imagen que usa el kernel para cargar los módulos de los dispositivos que son necesarios para acceder al root filesystem. Mkinitrd carga los módulos del sistema de ficheros, los IDE modules y todas las entradas relacionadas con los scsi hostadapter del /etc/modprobe.conf y otros módulos.
La forma de uso es mkinitrd imagen.img version.del.kernel.
Después, es importante confirmar que las configuraciones del nuevo kernel se han cargado al GRUB:
gedit /boot/grub/grub.conf & |
Ahora hay que actualizar las dependencias y la base de datos de los módulos. Para esto se usa:
depmod -ae |
depmod escanea los módulos en los subdirectorios de /lib/modules para buscar el kernel en el que usted está trabajando y actualiza la información sobre dependencia.
Puede manejar la carga automática de múltiples módulos cuando algunos dependen de otros. Las dependencias se conservan en el archivo modules.dep en el subdirectorio /lib/modules para el kernel correcto, según lo determinado por el comando uname -r. Este archivo, junto a varios archivos map, es generado por el comando depmod. La -a(porall [“todo” en inglés]) ahora es opcional.
Y para terminar, es necesario reiniciar el equipo:
shutdown -r now |
¿Cómo comprobar que se ha compilado?
Al iniciar CentOS, se debe elegir el kernel recién creado, cuyo título debió ser “CentOS (3.11.8)”, donde la edición del kernel es 3.11.8, que puede ser comprobado con el comando:
su uname -r |
su Se utiliza para acceder a la terminal como Super Usuario, comúnmente usado para acceder como Administrador del Sistema.
uname Muestra información sobre el sistema y el kernel
-r Muestra la edición del kernel.
O dirigirse al “Menú Sistema > Acerca de esta Computadora”
Con ambos métodos, se puede apreciar el resultado “3.11.8”.
Contenido
TEXTO
- ¿Qué es una llamada al sistema?
- ¿Cómo funciona una llamada al sistema?
- Kernel implementado y Primeros pasos
- Forma de descompresión
- Código fuente de la llamada al sistema
- Archivos modificados
- Forma de compilación
- Invocación de la llamada al sistema
- Anexos
- Referencias
DESCARGAS
- Document o PDF
- Presentació n don diapositivas