Hacks para sistemas operativos Unix-like/El kernel

De Wikilibros, la colección de libros de texto de contenido libre.

El kernel[editar]

Receta : ¿Qué es el kernel?[editar]

El kernel es el núcleo de nuestro sistema operativo. Todos los sistemas operativos tienen un kernel. En BSD es común verlo como mach_kernel, en linux vmlinuz, en Mac OS X mach_kernel, etc.

Este núcleo es la pieza mas importante del sistema operativo, es la que interactua con el hardware de nuestro ordenador. Cuando se realiza un proceso, una operación, un click o una simple pulsación de nuestro teclado, es el kernel quien traduce los unos y ceros en algo que el Sistema Operativo comprende.

Receta : El kernel y los Daemons[editar]

¿Qué son los daemons? Suena Extraño hablar de "demonios" en los Sistemas Operativos, pero es la Traducción literal que se le puede dar a los Procesos que se ejecutan de manera no "Vista" u Oculta por el Usuario dentro del sistema, pero que están ejecutando y que pueden ser Contralados por el Usuario/Administrador. En Sistemas como Windows NT son llamados "Servicios" estos son los equivalentes de Windows para los demonios de UNIX, tienen el mismo Proposito pero algunos de estos son primitivos, y solo sirven para Ejecutar Ciertas Funciones Nativas del Sistema, como Servidores de Seguridad, Audio etc... Su contraparte en Sistemas del tipo DOS es algo complicado explicar, puesto que son Monousuario y Monoproceso, es decir que solo admiten un Usuario y que solo "ejecutan" un solo programa dentro de la Memoria, (Olvidando el Kernel, Config.sys, Autoexec.bat y sin olvidar el Command.com), en estos casos se manejaban los TSR (Terminate and Stay Resident) [Termina y Sigue Residente] que era la forma más primitiva de Multitarea en DOS. En Sistema como el Mac OS estos son llamados Extenciones de Sistema que servían para el mismo proposito que los demonios. Hay que diferenciar entre una Aplicación activa y entre un Demonio ó Entre un Servidor Software) y un Demonio, la Aplicación activa ó programa simplemente es una APlicación que se carga en la memoria y que tiene fines Especificos como un Procesador de Palabaras, un Reproductor, un Navegador. El demonio se ejecuta en la Memoria Perón sin "Interface" y las únicas Opciones que posee son la de Iniciar, Reiniciar el demonio o detenerlo (Esto solamente dentro de la Sesion), un Servidor una Aplicación en Segundo Plano (como el demonio) pero que cuenta con un Interface y es Configurable y que trabaja directamente con el Kernel del sistema con el Ejecutandose. Un Ejemplo un Servidor FTP, es la Aplicación que proporciona dicho Servicio, que contiene las Características ya mencionadas. Lo demonios son programables, ya sea Iniciarlos o deternerlos de manera manual, editando algún archivo, haciendo algún Script ó programándolos mediante herramientas como "cron" para Realizar determinadas Tareas. Los demonios se distinguen Siempre por tener una "d" al Final de un archivo, además de que están presentes en areás Sensibles del Sistema o que se pueden modificar con "/etc" por citar un Ejemplo. Dependiendo del Sistema que se tenga, será su Ubicación: Para Iniciarlos siempre se Escribe "start" y sigue la misma regla para detenerlos o Reiniciarlos: Ejemplo "/xxxxxx/xxxxx/xxxx.d start"

En los SO UNIX-like los demonios se arrancan cuando el Sistema Oeprativo Inicia y son parte del Script de Arranque sin Importar cual sea. En UNIX los demonios como a cualquier Aplicación se les asigna un PID (Process ID) [Indentificación de Procesos] es un número que Identifica el Programa hasta que termina y se pueden ver mediante el uso del Comando "top" o también "ps -aux".

Receta : Configuración e instalación del kernel[editar]

Receta : Recompilar el kernel en freebsd[editar]

Antes que nada, si quieres consultar en línea el manual de freebsd, se encuentra en la página:

http://www.freebsd.org/doc/es_ES.ISO8859-1/books/handbook/kernelconfig-building.html

de ahí saqué la información y ahí vienen varias formas de compilar el kernel dependiendo de tus necesidades.


1. Primero te creas una copia de la configuración del kernel que te instala freebsd

             # cd /usr/src/sys/i386/conf
             # cp GENERIC NEWKERNEL

2. Si lo único que vas a hacer es agregar opciones a tu kernel. Al final del archivo agregas las nuevas líneas usando un editor como VI.

3. Ejecuta config(8) para generar el código fuente del kernel.

             # /usr/sbin/config NEWKERNEL

Cambia de ruta, hacia el directorio de compilación.

             # cd ../../compile/NEWKERNEL

Compila el kernel.

            # make depend
            # make

Instálalo.

            # make install

Al reiniciar la máquina arrancará con su nuevo kernel.

Si quieres consultarlo en el manual de freebsd se encuentra en la página:

http://www.freebsd.org/doc/es_ES.ISO8859-1/books/handbook/kernelconfig-building.html

Receta : Recompilar el kernel en Linux[editar]

Para compilar un kernel en linux básicamente necesitamos 3 cosas. Los paquetes de librerías del GCC, el paquete libncurses5-dev y el kernel en fuente, que podemos obtener de Linux Kernels.

Lo descargamos en /usr/src y lo descomprimimos:

  # cd /usr/src
  # tar xvfj linux-version.tar.bz2

Nos introducimos en el directorio de las fuentes y ejecutamos el menú de configuración del kernel en el que añadiremos o quitaremos modulos según las características de nuestro kernel:

  # cd linux-version
  # make menuconfig

Cuando acabemos, compilaremos el kernel de la siguiente forma.

Si es 2.4.x o anterior, primero pondremos:

  # make dep

En el resto de los núcleos pasaremos por alto este comando e iremos al meollo de la cuestión:

  # make bzImage && make modules && make modules_install

Tras lo cual, en arquitectura PC encontraremos el bianrio del nuevo kernel en /usr/src/linux-verion/arch/i386/boot/bzImage. Copiamos la imagen a /boot para tenerla bien localizada:

  # cp arch/i386/boot/bzImage /boot

Y la añadimos al gestor de arranque. Este paso es diferente según el gestor que tengamos. Es mas recomendable siempre añadir el kernel nuevo al gestor que sustituir el kernel viejo por el nuevo. De otro modo, si nos hubiesemos equivocado, Linux no arrancari correctamente y tendríamos un problemilla.

Receta : Usar jobs de forma eficaz[editar]

Receta : Arrancar, parar y matar procesos[editar]