Módulo IV (Nivelador) Introducción En este módulo se estudiará Linux entrando a un nivel más avanzado, donde se verán ciertos aspectos

del sistema operativo, que nivelan al asistente para permitirle comprender más fácilmente los módulos siguientes. Servicios del sistema operativo Linux, como todos los Unix, es un sistema multi tarea, esto le permite mantener corriendo varios procesos simultáneamente. Los servicios del sistema operativo son generalmente demonios o procesos que están corriendo "en background" (sin interactuar directamente con un usuario o terminal). Estos demonios brindan diferentes servicios. Todos estos servicios se pueden activar y desactivar sin tener que apagar o reiniciar el equipo. Esto es una característica esencial en equipos que debe estar encendidos las 24 horas del día, los 365 días del año. Linux nos da diferentes formas de activar y desactivar estos servicios. La forma que esta en todos los Linux (y también en la mayoría de los UNIX) es via shell scripts de rc. Scripts de "rc" Los scripts de "rc", son shell scripts que permiten al administrador activar y desactivar servicios que brinda el sistema operativo. Cada uno de estos scripts representa un servicio específico. Jerarquía de directorios ("rc") En RedHat Linux encontraremos la siguiente jerarquía de directorios. Esta jerarquía es muy parecida a todas las distribuciones de Linux, pero existen algunas diferencias. /etc/rc.d/ /init.d /rc0.d /rc1.d /rc2.d /rc3.d /rc4.d /rc5.d /rc6.d Como se puede observar la mayoría de los directorios contienen un número, este número representa el "run-level" o nivel de corrida. Como se ha visto en el módulo I de este curso, cada run-level define los servicios que se levantarán en esa sesión. Los scripts que hay dentro de cada uno de estos directorios definen estos servicios. El directorio /etc/rc.d/init.d es el que contiene todos los scripts de "rc". En este directorio generalmente se encontrarán nombres de archivos que hagan referencia al servicio que activan/desactivan. Por ejemplo "network" (script para activar el servicio de red).Por otro lado, en cada directorio "rc<número>.d" se encontrarán nombres de archivos con una connotación especial. En la mayoría de los casos los servicios dependen de que este corriendo alguno otro, para que trabajen normalmente. Por ejemplo el servicio de "web-server" no puede funcionar si el servicio de red no esta corriendo. Para resolver esta problemática, se estipulo una forma de lograr que los scripts se ejecuten en un orden específico. Esto se logra con los nombres de los archivos. Por ejemplo, el script S01network se ejecutará antes que el S34httpd (alfabéticamente, el nombre de archivo S01network es anterior al S34httpd). Uso Todos los scripts de "rc" reciben como parámetro un argumento "start" o "stop" dependiendo si se

todos los Lunes se ejecuta el programa que saca estadísticas de correos enviados) Directorios de crontab El usuario "root" tiene la posibilidad de utilizar ciertos directorios para ejecutar tareas de cron. 0-3) o comas para momentos exactos (ejemplo: a los 0. y dichas tareas se ejecutaran con los privilegios del usuario que las definió.d/httpd start (activa el servicio de httpd) •/etc/rc. Cada usuario puede definir sus propias tareas.d/httpd stop (desactiva el servicio de httpd) Existen algunos scripts que se les puede pasar como argumento (además de "start" y "stop"). que reinicia el servicio. (y de paso. Ejemplo: •/etc/rc. Comando: crontab Uso: crontab [opciones] [usuario] Descripción: Permite ver o editar las tareas del crontab Opciones: "-l": lista el contenido de la tabla de tareas "-e": edita el contenido de la tabla de tareas "-u": Requiere la especificación de un usuario y permite modificar las tareas del usuario referencia (siempre y en cuanto se tengan permisos) Cuando se ejecute "crontab -e" podremos modificar la tabla de tareas. "restart". Formato de la tabla de tareas (crontab) Minutos (0-59) Hora (0-23) Día del Mes (1-31) Mes (1-12) Día de la semana (0-7) Comando Se pueden utilizar asteriscos (*) para especificar "todos" (ejemplo: todos los días de la semana). para editarla se invocará al comando que existe en la variable $EDITOR o al editor "vi"..d/init. verificación del equipo o estadísticas de uso.sh. todas las horas. ahorrarnos un comando). "0. Comando crontab Las tareas que se activarán en el crontab se realizan a través de un comando llamado "crontab".30") Ejemplos: 0 * * * * /usr/local/bin/updatedb.sh (a las doce de la noche. 10 y 30 minutos.sh (cuando el reloj maque minutos en 0. todos los meses y todos los días de la semana) 0 0 * * 1 /usr/local/bin/mail-stat.d/init. Esto es especialmente util cuando hacemos un simple cambio en un archivo de configuración y solamente queremos hacerlos efectivos. . guiones para especificar rangos (ejemplo: de Domingo a Miércoles. Administración de crontbs El servicio de crontab permite definir tareas para que sean ejecutadas en un momento especifico en el tiempo (por ejemplo a las 14:00 hrs. Este servicio es muy útil para realizar tareas de mantenimiento como copias de respaldo (backups). todos los días del mes.desea activar o desactivar el servicio. todos los Martes). ejecutar el shell script /usr/local/bin/updatedb.10.

•/etc/cron. No es una funcion interna del crontab.. •Etcétera. en el crontab de root estan las definiciones para ejecutar las tareas contenidas en estos directorios. . semanalmente y por mes. grep es de gran utilidad para encontrar ocurrencias de variables en programas o palabras en documentos.daily En este directorio se pueden ubicar shell scripts que serán ejecutados diariamente ("daily": del inglés "todos los días"). Algunos ejemplos podrían ser: •Revisar el archivo /var/log/maillog (archivo de monitoreo del servicio de correo electrónico) para armar una estadística de cuantos correos se envían o reciben diariamente. Los shell scripts que se copien a este directorio deberán tener permisos de ejecución. se puede atrapar la salida estándar de un comando y manipularla con mucha flexibilidad. ya que generalmente se necesita cambiar la información que devuelven los comandos estándares a algo más comprensible para el usuario final. Los shell scripts que se copien a este directorio deberán tener permisos de ejecución. •Manipular la salida del comando "ps" (listado de procesos) para hacer un reporte de carga diaria del sistema. Los shell scripts que se copien a este directorio deberán tener permisos de ejecución.weekly En este directorio se pueden ubicar shell scripts que serán ejecutados una vez por semana ("weekly": del inglés "todos las semanas"). A decir verdad. •/etc/cron. Los shell scripts que se copien a este directorio deberán tener permisos de ejecución. •/etc/cron. modo inverso al default).además de trabajar con el comando "crontab -e". sino una simple definición. •/etc/cron.monthly En este directorio se pueden ubicar shell scripts que serán ejecutados una vez por mes ("monthly": del inglés "todos los meses")..] Descripción: El comando grep examina los archivos nombrados o la entrada estándar y muestra en pantalla cada línea que contenga un caso de <patrón>. Esto se utiliza mucho cuando se administra un equipo. Con los filtros. Grep Comando: "grep" Uso: grep <patrón> [archivos. Filtros Los filtros son muy utilizados en Linux y sirven para acotar o cambiar texto plano. •Monitorear constantemente el archivo /var/log/secure para avisar al administrador cuando se produce algún ataque externo. también sirve para seleccionar partes de la salida de un programa: Opciones: "-i": trata mayúsculas y minúsculas como caracteres iguales "-l": muestra en pantalla el nombre del archivo donde se encontró el patrón (en vez de la línea que contiene este patrón) "-v": muestra en pantalla todas las líneas (excepto las que contengan el patrón buscado.hourly En este directorio se pueden ubicar shell scripts que serán ejecutados a cada hora ("hourly": del inglés "todos las horas").

c Kernel Introducción El kernel o núcleo es el corazón del sistema operativo. y varios fuentes.Ejemplos: # grep "From:" $MAIL (muestra en pantalla todos los remitentes de los correos que haya en nuestra casilla) # grep "From:" $MAIL | grep -v pedro (muestra en pantalla los remitentes de todos los correos que tengamos en nuestra casilla. entre ellas están. excepto los que los envió pedro) # who | grep "root" (Comprueba si el usuario "root" está logueado en el sistema) # ps aux | grep "root" | grep -v grep (muestra en pantalla el listado de procesos del usuario root. entre ellos se destacan "awk" y "sed". Existen más filtros en Linux. los núcleos que vienen pre-compilados en las distribuciones más grandes. etc. un programa medianamente grande.h (headers) "-L": directorio donde buscará las bibliotecas para linkeditar "-l": nombre de la biblioteca a utilizar (sin las primeras 3 letras "lib") Ejemplo: # gcc -I /usr/local/include -L /usr/local/lib -lmath *. pero dada la complejidad de los mismos. más bien es el sistema operativo en sí mismo. procesos. El make conoce en qué orden de secuencia debe compilar todos estos fuentes y dónde debe instalarlos para que el usuario utilice el programa recién compilado. Todo lo que no sea el kernel se lo llama aplicación. sin mostrar la ejecución de nuestro comando grep (util si somos root y no queremos falsos resultados). se integra de una biblioteca de funciones propias. en el caso de Linux. pero la mayoría de las veces es porque se necesita una versión más modera del núcleo (con problemas solucionados) o se instala un nuevo hardware que no esta contemplado en el núcleo de la distribución. Compilación La compilación es el proceso que se le aplica a los archivos de texto que escribió un programador (con una sintaxis específica llamada "lenguaje de programación") para que los mismos se conviertan en archivos "binarios" (formato que entiende la computadora). manejo de memoria. se adaptan a la mayoría de las instalaciones. todo el hardware en general. Opciones: "-I": directorio que utilizará para buscar los archivos . Existe una versión de grep diseñada para redes: es el ngrep. . paquetes de red.c). etc. Generalmente.. El núcleo se encarga de manejar una infinidad de cosas. pero existen casos donde se hace necesario compilar e instalar un núcleo nuevo. no se verán en este curso. Comando: "make" Uso: make [opciones] [seccion-Makefile] Descripción: Este comando se utiliza para compilar. el 95% de las aplicaciones son GNU. Las razones pueden ser variadas. linkeditar e instalar un programa que requiera de la compilación de varios fuentes (archivos . Comando: "gcc" Uso: gcc [opciones] <archivo. Generalmente.c> Descripción: Este comando compila y linkedita los programas. periféricos.

conf correspondiente al kernel ACTUAL para # saber cuál es la partición root que se está utilizando # # en caso de haber creado el RAMDISK inicial # eliminar el comentario de la siguiente línea #initrd=/boot/initrd-2.4.0.4.0 # ojo.0 ver la aclaración al final del documento.map RAMDISK inicial (NO es requerido usualmente en Red Hat Linux) mkinitrd /boot/initrd-2. OPCIONAL: crear un nuevo rescue disk (RECOMENDADO!!!) . Poner la tarball (linux-2.Compilando el Kernel En caso de querer compilar sobre Red Hat 7.0/System.tar. en la línea anterior es vmlinuz (con z al final) cp /usr/src/linux-2.4.0System.0.4.tar.gz) en el directorio /tmp cd /usr/src rm linux tar xzvf /tmp/linux-2.4.conf image=/boot/vmlinuz-2.4.map-2.0 ln -s linux-2.img 2.0linux cd /usr/src/linux make mrproper make xconfig # si estamos en entorno gráfico (recomendado!) # puede usarse make menuconfig o make config (NO recomendado) make dep make clean make bzImage # ir a tomar cafe (mucho cafe) make modules make modules_install cp /usr/src/linux-2.4.0 Setup del LILO Agregar lo siguiente a /etc/lilo.map-2.0label=new root=/dev/hda1 # reemplazar por la partición root correcta en tu sistema # ver la parte del lilo.4.4.0.4.4.img read-only Ejecutar lilo -t y si no tira ningún error ejecutar lilo -v y rebootear la máquina.4.0/arch/i386/boot/bzImage /boot/vmlinuz-2.4.map ln -s System.0.map /boot/System.0 cd /boot rm System.gz mv linux linux-2.

fi) -D__KERNEL__ -I $(HPATH) Parches.0 ----En Red Hat 7..mkbootdisk --device /dev/fd0 2. en la siguiente línea. Tenes que escribir el siguiente comando: dmesg | less (less es una version de more que permite moverse hacia atrras) Indice Módulo IV (Nivelador) 1 Introducción 1 Servicios del sistema operativo 2 Scripts de "rc" 2 Filtros 4 Grep 5 Compilación 5 Kernel 6 Introducción 6 Parches. else echo $(CROSS_COMPILE)gcc...4.pØ Para ver los mensajes que aparecen durante el booteo.. Instalación de "Parches" Patch. zcat /tmp/patch-2. then echo $(CROSS_COMPILE)kgcc.1 | patch . Instalación de "Parches" Patch. etc . etc .4... que es la que se encarga de indicar el compilador a utilizar: CC =($CROSSCOMPILE)gcc . 8 . Debe quedar así (es todo la misma línea): CC :=$(shell if which $(CROSS_COMPILE)kgcc > /dev/null 2>&1.0 es necesario modificar el archivo Makefile luego de descompactar la tarball.

Sign up to vote on this title
UsefulNot useful