Entender linux
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
Uploaded on

¿Cuáles son los objetivos de este trabajo? ...

¿Cuáles son los objetivos de este trabajo?
1. Ofrecer una descripción básica del trabajo interno y de las operaciones del núcleo (kernel) de
LINUX en favor de los lectores.
2. Todos los archivos mencionados en este trabajo se refieren al núcleo de LINUX 3.2. Aunque
estos archivos son comunes a todo UX* y pueden ser encontrados en cualquier sistema Linux,
el autor utiliza la versión Debian Wheezy.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
327
On Slideshare
327
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Prof. Dr. Jorge Domínguez ChávezEntendiendo el inicio de operaciones de LINUXTodos los días, miles de usuarios de LINUX encienden sus computadores, esperan pocos segundos (ominutos dependiendo la velocidad de su CPU) para ver a su sistema operativo favorito cargar, y obtenerla pantalla de bienvenida !!! Les causa un inmenso placer hacer log en su sistema operativo favorito ytrabajar.El Proceso de arranque en LINUX es el proceso de arranque de un sistema operativo que en muchosaspectos es similar a los procesos de arranque de BSD1y otros sistemas UNIX2, de los cuales deriva.¿Cuáles son los objetivos de este trabajo?1. Ofrecer una descripción básica del trabajo interno y de las operaciones del núcleo (kernel) deLINUX en favor de los lectores.2. Todos los archivos mencionados en este trabajo se refieren al núcleo de LINUX 3.2. Aunqueestos archivos son comunes a todo UX* y pueden ser encontrados en cualquier sistema Linux,el autor utiliza la versión Debian Wheezy.Proceso típicoEn LINUX, el flujo de control durante el arranque es desde el BIOS, al gestor de inicio y al núcleo(KERNEL). El núcleo inicia el planificador (para multitarea) y ejecuta el primer espacio de usuario (esdecir, fuera del espacio del núcleo) y el programa de arranque (que establece el entorno de usuario ypermite la interacción del usuario y el inicio de sesión), momento en el que el núcleo se inactiva hastaser llamado externamente.La etapa del cargador de inicio no es totalmente necesaria. Determinados BIOS pueden cargar y pasarel control a LINUX sin hacer uso del cargador. Cada proceso de arranque será diferente dependiendo dela arquitectura del procesador y el BIOS.1. El BIOS realiza las tareas de inicio específicas del hardware.2. Una vez que éste es reconocido y se inicia correctamente, el BIOS carga y ejecuta el código dela partición de arranque del dispositivo de arranque designado, que contiene la fase 1 de ungestor de arranque LINUX. La fase 1 carga la fase 2 (la mayor parte del código del gestor dearranque). Algunos cargadores pueden utilizar una fase intermedia (conocida como fase 1.5)1 Berkeley Software Distribution o BSD (en castellano, «distribución de software Berkeley») es un sistema operativoderivado del sistema UNIX generado por los aportes realizados a ese sistema por la Universidad de California en Berkeley,USA.2 Unix (registrado oficialmente como UNIX®) es un sistema operativo portable, multitarea y multiusuario; desarrollado, enprincipio, en 1969, por los Laboratorios Bell de ATT.
  • 2. para lograr esto, ya que los modernos discos de gran capacidad no pueden ser totalmente leídossin código adicional.3. El gestor de arranque, a menudo, presenta al usuario un menú de opciones posibles de arranque.Luego, carga el sistema operativo, al que descomprime en la memoria y establece las funcionestanto del sistema como del hardware esencial y la paginación de memoria, previo a llamar a lafunción start_kernel().4. A continuación, la función start_kernel()realiza la mayor parte de la configuración delsistema (interrupciones, el resto de la gestión de memoria, la inicialización del dispositivo,controladores, etc), antes de continuar, por separado el proceso, inactivo y planificador, asícomo el proceso de Init (que se ejecuta en el espacio de usuario).5. El planificador toma control efectivo de la gestión del sistema y el núcleo queda inactivo.6. El proceso Init ejecuta los comandos (scripts) necesarios para configurar todos los servicios yestructuras que no sean del sistema operativo, a fin de permitir que el entorno de usuario seacreado y pueda presentarse al usuario con una pantalla de inicio de sesión.En el apagado, Init es llamado a cerrar las funcionalidades del espacio de usuario de una maneracontrolada, a través de secuencias de comandos, tras lo cual termina y el núcleo ejecuta el apagado.Espacio de usuario tempranoEl espacio de usuario temprano se utiliza en versiones recientes del núcleo de LINUX para sustituirtantas funciones como sea posible, funciones que originalmente se cargarían en el núcleo durante elproceso de inicio. Los usos típicos del espacio de usuario temprano son para detectar los controladoresde dispositivos (Drivers) necesarios para cargar el sistema de archivos del espacio de usuario principaly cargarlos desde un sistema de archivos temporal.Este espacio, el cual es externo al núcleo se refiere a un espacio de aplicación, típicamente UNIX o ensistemas operativos UX*. Algunas veces, la expresión espacio de usuario puede referirse a unaaplicación que lleva a cabo sus propias llamadas al sistema o su propia entrada y salida (E/S). Por locomún, como parte de una aplicación, hará llamadas al sistema y a otras actividades del sistema desdeel núcleo.En el sentido jerárquico del sistema de archivos, el espacio de usuario se refiere a cualquier espacio dealmacenamiento en disco del sistema que no es parte de su almacenamiento crítico, es decir, el espaciode almacenamiento de los usuarios, como sus documentos personales y otros datos no críticos. En lossistemas Unix reside en los directorios /home, /export/home o /usr/home.Proceso en detalleComo primer punto revisamos el proceso de carga o boot process del Sistema Operativo LINUX.Vemos que LINUX pasa por diferentes etapas de carga. Comprender como LINUX carga es muyimportante en términos de manejo efectivo de los errores en caso de que el proceso falle. Averiguar loque ha pasado y pasa en las etapas de la secuencia de arranque es de suma importancia para un buenfuncionamiento de su computador y de su sistema operativo LINUX.En LINUX hay 6 etapas de carga, vea la figura 1. Luego se discuten esas etapas en detalle.
  • 3. BIOS (Sistema Básico de Entrada Salida)1. Encendido del pc, el hardware transfiere el control a BIOS.2. BIOS es el primer programa en ejecutarse y es independiente del Sistema Operativo.3. BIOS reside en la ROM (Memoria sólo Lectura).4. El primer paso de BIOS es Potenciar Autoprueba (POST) el cual recorre la información delhardware y verifica el inicio de carga (bootloader).5. Recorre los dispositivos de almacenamiento de datos (Floppy, CD y/o DVD, y USB). Duranteel período de recorrido, el usuario puede presionar las teclas (F2, F12 esto dependen de sucomputadora) para cambiar la secuencia de carga de su sistema.6. BIOS lee el primer sector del disco duro, al que se denomina sector de carga y donde reside elproceso de inicio de carga (bootloader). Una vez que éste es detectado, carga la BIOS y pasa elcontrol al bootloader, luego se inicia el siguiente nivel en la secuencia de carga.MBR (Registro Maestro de Carga)1. Un registro de inicio principal, también conocido como registro maestro de inicio o master bootrecord (abreviado MBR) es el primer sector ("sector cero") de un dispositivo dealmacenamiento de datos, como un disco duro, cd, dvd, usb. A veces, MBR se emplea para elinicio del sistema operativo con bootstrap, otras veces es usado para almacenar una tabla departiciones y, en ocasiones, se usa sólo para identificar un dispositivo de disco individual,aunque en algunas máquinas esto último no se usa y es ignorado.2. En la práctica, el MBR casi siempre se refiere al sector de inicio de 512 bytes, o el sector departición de una partición para computadores compatibles con IBM PC. Debido a la ampliaimplementación de computadores PC clones, este tipo de MBR se usa mucho, hasta el punto deser incorporado en otros tipos de computador y en nuevos estándares multiplataforma para elparticionado y el inicio. Ver siguiente tabla.Figura 1: Proceso de inicio decarga en LINUX
  • 4. Almacenamiento de un master boot record estándarDirección Descripción0x0000 Área de código0x01B8 4 bytes; firma del disco (opcional)0x01BC 2 bytes; normalmente 0x00000x01BETabla de particiones3primarias, cada entrada es de 16 bytes (esquemaestándar de la tabla de particiones del MBR)0x01FE 2 bytes; firma del MBR (0x55AA)3. MBR tiene un tamaño de 512 bytes, divididos en tres componentes:1. Los primeros 446 bytes son el iniciador de carga primario (sólo código ejecutable).2. Los siguientes 64 bytes son información de la tabla de particiones.3. Los últimos 2 bytes son usados como número mágico (validación verificación de MBR).Primer sector físico del disco (pista cero)446 bytes Código máquina (gestor de inicio)64 bytesTabla de particiones (4 registros que definen cada una de lasparticiones primarias)2 bytes Firma de unidad de inicio ("55h AAh" en hexadecimal)Registro de la tabla de particiones - 16 bytesOffset Descripción0x00 Binario codificado en decimal0x01 Más binario, Cabezal, Sector (CHS) del primer sector en la partición.0x04 Tipo de partición0x05 Cilindro, Cabezal, Sector (CHS) del último sector de la partición.3 Una partición de un disco duro es una división lógica en una unidad de almacenamiento (por ejemploun disco duro o unidad flash), en la cual se alojan y organizan los archivos mediante un sistema dearchivos. Existen distintos esquemas de particiones para la distribución de particiones en un disco. Losmás conocidos y difundidos son MBR (Master Boot Record) y GPT (GUID Partition Table). Lasparticiones, para contener datos tienen que poseer un sistema de archivos. El espacio no asignado en undisco no es una partición, por lo tanto no puede tener un sistema de archivos. Existen múltiplessistemas de archivos, con diferentes características, como FAT, NTFS, FAT32, EXT2, EXT3, EXT4,Btrfs, FedFS, Reise, Reiser4 y otros.Los discos ópticos (DVD, CD) utilizan otro tipo de particiones llamada Formato de Disco Universal( UDF o Universal Disc Format), el cual agrega archivos y carpetas y es por ello que es usado por lamayoría de software de escritura por paquetes, conocidos como programas de grabación de unidadesópticas. Este sistema de archivos es obligatorio en unidades de (DVD) pero también se admiten enalgunos (CD)
  • 5. 0x08 (4 bytes) Logical block address del primer sector de la partición0x0C (4 bytes) Longitud de la partición, en sectores4. Bootloader puede residir en el MBR o en cualquier otra localidad.5. MBR contiene información de GRUB/LILO y ejecuta su carga.GRUB (GRand Unified Bootloader)1. GRUB se carga y se ejecuta en 4 etapas:1. La primera etapa del cargador la lee el BIOS desde el MBR.2. La primera etapa carga el resto del gestor de arranque (segunda etapa). Si la segundaetapa está en una unidad grande, en ocasiones se carga una fase intermedia 1.5, quecontiene código adicional para permitir que los cilindros por encima de 1024, o unidadestipo LBA, puedan leerse. El gestor de arranque 1.5 es almacenado (si es necesario) en elMBR o en la partición de arranque.3. La segunda etapa del gestor de arranque ejecuta y muestra el menú de inicio de GRUBque permite al usuario elegir un sistema operativo y examinar y modificar losparámetros de inicio.4. Después de elegir un sistema operativo, se carga y se le pasa el control.GRUB soporta métodos de arranque directo, arranque chain-loading, LBA, ext2, ext3, ext4 y hasta "unpre-sistema operativo en máquinas x86 totalmente basado en comandos". Contiene tres interfaces: unmenú de selección, un editor de configuración y una consola de línea de comandos.2. GRUB tiene su propio menú e interface y tiene la capacidad de navegar por el sistema dearchivos.3. Muestra una lista de los núcleos (kernel) disponibles definidos en /etc/grub.conf. Provee lasopciones para elegir uno de ellos sí una imagen múltiple de núcleos está instalada.ConfiguraciónEl archivo de configuración GRUB es /boot/grub/menu.lst. Algunas veces verá referencias a/etc/grub.conf, pero el archivo no existe en Debian (al menos en mi laptop)Debe contener, al menos, las siguientes lineas:default=0timeout=30# To boot the default kerneltitle Debian LINUXroot (hd0,1)kernel /boot/vmlinuz root=LABEL=/initrd /boot/initrd.img
  • 6. Revisión rápida de comandos•default: SO por defecto a cargar, si no presiona las teclas (F2, F12) para cambiar la secuencia de cargade su sistema. Note que es la primera linea contiene un 0.•timeout: tiempo en segundos de espera antes que el sistema operativo por defecto sea cargado.•Title: Texto que es mostrado en el menú. Inicia una sección de SO hasta que otra linea Title esencontrada.•Root: La partición donde el directorio /boot está. Todos los caminos serán relativos a la partición,así que no es necesario especificarla para cada archivo.•Kernel: es la imagen del núcleo de LINUX a ser cargada con sus opciones.•Initrd: es la imagen initrd para cargar el núcleo.Notar que el comando root no está relacionado con el parámetro root para el núcleo de LINUX. Rootespecifica que partición tiene los caminos relativos. Sí tiene una partición /boot en (hd0,0) entonces:root (hd0,0)kernel vmlinuz root=LABEL=es la misma que:kernel (hd0,0)/vmlinuzGRUB nombres de dispositivos y particionesGrub usa números para nombrar discos duros y particiones, empezando con 0. esto confunde un pocoal usuario LINUX para llamar hda1 al primer disco – primera partición. Vea la siguiente tabla.LINUX grubFirst IDE bus, master hda hd0First IDE bus, master, first primary partition hda1 hd0,0First IDE bus, slave, first extended partition hdb5 hd1,41. GRUB muestra una ventana de inicio y espera pocos segundos para intervenir, si no carga laimagen por defecto del núcleo.2. GRUB Bootloader inicia el núcleo y carga la imagen initrd.Núcleo (Kernel)1. Mount sistema de archivos root.2. Núcleo inicia proceso INIT. primer proceso iniciado por el núcleo el cual cual tieneProcess ID4(PID) de 1.3. Carga módulo initrd. initrd (disco RAM inicial) es un sistema de archivos temporal rootcargado en la RAM hasta que el sistema de archivos root sea montado.4 PID es la abreviatura de Process ID es decir es el identificador de un proceso, un numero que identifica de manerainequívoca a un proceso.
  • 7. INIT1. INIT (padre de todos los procesos).2. INIT (abreviatura para inicialización) demonio5(deamon) que genera los otros procesos.3. INIT lee el archivo /etc/inittab pro instrucciones para proceder.4. Aquí el inittab de Debian Wheezy.# /etc/inittab: init(8) configuration.# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $# The default runlevel.id:2:initdefault:# Boot-time system configuration/initialization script.# This is run first except when booting in emergency (-b) mode.si::sysinit:/etc/init.d/rcS# What to do in single-user mode.~~:S:wait:/sbin/sulogin# /etc/init.d executes the S and K scripts upon change# of runlevel.## Runlevel 0 is halt.# Runlevel 1 is single-user.# Runlevels 2-5 are multi-user.# Runlevel 6 is reboot.l0:0:wait:/etc/init.d/rc 0l1:1:wait:/etc/init.d/rc 1l2:2:wait:/etc/init.d/rc 2l3:3:wait:/etc/init.d/rc 3l4:4:wait:/etc/init.d/rc 45 La palabra demonio viene de DAEMON (Disk And Execution Monitor) que es un tipo especial de procesoinformático que se ejecuta en segundo plano en lugar de ser controlado directamente por el usuario (es un procesono interactivo). Los programadores de Unix adoptaron este nombre para referirse a estos procesos y como sonafectos a las siglas y a los acronimos recursivos extendieron su uso.
  • 8. l5:5:wait:/etc/init.d/rc 5l6:6:wait:/etc/init.d/rc 6# Normally not reached, but fallthrough in case of emergency.z6:6:respawn:/sbin/sulogin# What to do when CTRL-ALT-DEL is pressed.ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now# Action on special keypress (ALT-UpArrow).#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."# What to do when the power fails/returns.pf::powerwait:/etc/init.d/powerfail startpn::powerfailnow:/etc/init.d/powerfail nowpo::powerokwait:/etc/init.d/powerfail stop# /sbin/getty invocations for the runlevels.## The "id" field MUST be the same as the last# characters of the device (after "tty").## Format:# <id>:<runlevels>:<action>:<process>## Note that on most Debian systems tty7 is used by the X Window System,# so if you want to add more gettys go ahead but skip tty7 if you run X.#1:2345:respawn:/sbin/getty 38400 tty12:23:respawn:/sbin/getty 38400 tty23:23:respawn:/sbin/getty 38400 tty34:23:respawn:/sbin/getty 38400 tty45:23:respawn:/sbin/getty 38400 tty56:23:respawn:/sbin/getty 38400 tty6
  • 9. # Example how to put a getty on a serial line (for a terminal)##T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100# Example how to put a getty on a modem line.##T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS31. Runs scripts /etc/rc.d/*Programas RunlevelExisten 7 runlevel, numerados del 0 al 6, aunque es posible crear más, cada uno tiene su propiosignificado en LINUX. Los diferentes niveles son los siguientes:1. Run Level 0 – Halt (detener)2. Run Level 1 – Single user mode (modo único usuario)3. Run Level 2 – Multiuser but without NFS (multiusuario sin NFS)4. Run Level 3 – Full multiuser mode (Modo multiusuario completo)5. Run Level 4 – unused / User-definable (no usado/ definible por el usuario)6. Run Level 5 – X11 (ambiente gráfico)7. Run Level 6 – reboot (recargar)De acuerdo con la configuración del nivel de ejecución por defecto, el sistema lee y ejecuta losprogramas de los siguientes directorios.1. Run Level 0 – /etc/rc.d/rc0.d/2. Run Level 1 – /etc/rc.d/rc1.d/3. Run Level 2 – /etc/rc.d/rc2.d/4. Run Level 3 – /etc/rc.d/rc3.d/5. Run Level 4 – /etc/rc.d/rc4.d/6. Run Level 5 – /etc/rc.d/rc5.d/7. Run Level 6 – /etc/rc.d/rc6.d//etc/rc0.d/ es enlazado al directorio /etc/rc.d/rc0.d/. Dentro el directorio /etc/rc.d/rc0.d/ puede verprogramas cuyo nombre empieza con S y K lo que significa startup y kill respectivamente. También,hay un número secuencial a S y K. Estos números son la secuencia programas de inicio a través destarted o killed durante la carga.El runlevel 0 es la condición de apagado del sistema. La mayoría de computadores actuales se apaganal llegar a este nivel.El 1 es conocido como de mono-usuario o usuario único. Suele llamarse modo de rescate (rescue mode
  • 10. o trouble-shooting). En este nivel no ejecuta ningún servicio o demonio. Normalmente es posibleiniciar el sistema en modo rescate desde el GRUB, o añadiendo la palabra single al final de la línea decomandos del kernel.Del runlevel 2 al 5 son modos multiusuario, y el modo usado por defecto.Si 0 es la condición de apagado, 6 es reinicio del sistema. Exactamente igual que el runlevel 0 salvoque reinicia al terminar la secuencia en lugar de apagar.¿Dónde residen los Run Level?Están definidos mediante archivos, como en todo sistema LINUX, se encuentran en el directorio /etc:/etc/rc0.d Run level 0/etc/rc1.d Run level 1/etc/rc2.d Run level 2/etc/rc3.d Run level 3/etc/rc4.d Run level 4/etc/rc5.d Run level 5/etc/rc6.d Run level 6Observe el contenido del runlevel 2:ls /etc/rc2.d/README S18acpid S18postgresql S20gdm3S01motd S18acpi-support S18rsync S20pulseaudioS13rpcbind S18anacron S18speech-dispatcher S20sanedS14nfs-common S18atd S18ssh S21bootlogsS16acpi-fakekey S18battery-stats S19avahi-daemon S22laptop-modeS16binfmt-support S18clamav-freshclam S19bluetooth S22minissdpdS16rsyslog S18cron S19exim4 S22rc.localS16sudo S18dbus S19network-manager S22rmnologinS17apache2 S18mysql S20cups S22teamviewerdCada archivo es un enlace simbólico a su respectivo script residente en /etc/init.d. Estos scriptscontrolan la detención o inicio de un servicio.El nombre de los enlaces de estos directorios puede ser poco intuitivos al principio, pero vea susignificado, la sintaxis es:[K | S] + nn + [string]Es decir, la primera letra del nombre es una K o una S, seguidas de un número de dos dígitos, del 01 al99 y por último una cadena de texto. La K significa que el servicio será detenido al entrar al runlevel(Kill), la S para iniciarlo (Start). El número indica la prioridad del servicio dentro del runlevel, porejemplo, S02apache y S01php inicia primero php y luego apache. Si dos servicios tienen el mismoorden de prioridad numérico, se procede en orden alfabético.
  • 11. ¿Cómo determinar en qué runlevel se encuentra el sistema?El comando runlevel muestra el último runlevel que fue ejecutado, y el actual:runlevelN 2N significa Nada, informando que no ha habido cambio de runlevel desde que inició el sistema, 2 es elrunlevel actual.Para ir de un runlevel a otro ejecute el comando telinit seguido del número del runlevel deseado.Aunque sea correcto, se recomienda no apagar o reiniciar el sistema cambiando a los runlevel 0 o 6.¿Cómo agregar un servicio a un runlevel?Si desea agregar un servicio a un runlevel deberemos usar el comando update-rc.d. Sí requiere quenginx o Apache se ejecuten en cada inicio del sistema, basta con agregarlos a los runlevel 2-5,correspondientes al modo multiusuario:# update-rc.d nginx start 90 2 3 4 5 . stop 01 0 1 6 .El 90 es el número de prioridad para el inicio (S90nginx) aplicado a los runlevles 2-5, 01 para laprioridad de detención (K01nginx) en los runlevel 0 1 y 6. Lo más sencillo es aplicar los valores pordefecto con# update-rc.d nginx defaultsReferencias1. ↑ Ohloh Analysis Summary - GNU GRU.2. ↑ Sitio oficial de GNU GRUB (en inglés)3. ↑ GRUB Manual - 1.2 Grub History (en inglés)4. ↑ Página del Proyecto PUPA (en inglés)5. ↑ GRUB 2 en Ubuntu 9.10 Karmic KoalaEnlaces externos• Configuración de GRUB, una guía básica (para GRUB Legacy)• GAG, Gestor de Arranque Gráfico• GNU GRUB Manual 1.99 (en inglés)• GRUB - Guía Ubuntu• GrubWiki Command List (Comandos para ambas versiones de GRUB, en inglés)• Grub from the Ground Up (en inglés)• Recuperar GRUB - Guía Ubuntu• GRUBack: utilidad para recuperar GRUB sin salir de Windows• LILO homepage (en inglés).• LILO mini-HOWTO (en inglés).• LILO error messages (en inglés).