Está en la página 1de 5

Proceso de arranque en Linux

Proceso de arranque en Linux


El Proceso de arranque en Linux es el proceso de inicializacin del sistema operativo Linux. Es en muchos aspectos similar a los procesos de arranque de BSD y otros sistemas Unix, de los cuales deriva.

Descripcin general del proceso tpico


En Linux., el flujo de control durante el arranque es desde el BIOS, al gestor de arranque y al ncleo (kernel). El ncleo inicia el planificador (para permitir la multitarea) y ejecuta el primer espacio de usuario (es decir, fuera del espacio del ncleo) y el programa de inicializacin (que establece el entorno de usuario y permite la interaccin del usuario y el inicio de sesin), momento en el que el ncleo se inactiva hasta que sea llamado externamente. La etapa del cargador de arranque no es totalmente necesaria. Determinadas BIOS pueden cargar y pasar el control a Linux sin hacer uso del cargador. Cada proceso de arranque ser diferente dependiendo de la arquitectura del procesador y el BIOS. 1. El BIOS realiza las tareas de inicio especficas de la plataforma de hardware. 2. Una vez que el hardware es reconocido y se inicia correctamente, el BIOS carga y ejecuta el cdigo de la particin de arranque del dispositivo de arranque designado, que contiene la fase 1 de un gestor de arranque Linux. La fase 1 carga la fase 2 (la mayor parte del cdigo del gestor de arranque). Algunos cargadores pueden utilizar una fase intermedia (conocida como la fase 1.5) para lograr esto, ya que los modernos discos de gran tamao no pueden ser totalmente ledos sin cdigo adicional. 3. El gestor de arranque a menudo presenta al usuario un men de opciones posibles de arranque. A continuacin, carga el sistema operativo, que descomprime en la memoria, y establece las funciones del sistema como del hardware esencial y la paginacin de memoria, antes de llamar a la funcin start_kernel(). 4. La funcin start_kernel() a continuacin realiza la mayor parte de la configuracin del sistema (interrupciones, el resto de la gestin de memoria, la inicializacin del dispositivo, controladores, etc), antes de continuar por separado el proceso inactivo y planificador, y el proceso de Init (que se ejecuta en el espacio de usuario). 5. El planificador toma control efectivo de la gestin del sistema, y el ncleo queda dormido (inactivo). 6. El proceso Init ejecuta secuencias de comandos (Scripts) necesarios para configurar todos los servicios y estructuras que no sean del sistema operativo, a fin de permitir que el entorno de usuario sea creado y pueda presentarse al usuario con una pantalla de inicio de sesin. En el apagado, Init es llamado a cerrar toda las funcionalidades del espacio de usuario de una manera controlada, de nuevo a travs de secuencias de comandos, tras lo cual el Init termina y el ncleo ejecuta el apagado.

Espacio de usuario temprano


El espacio de usuario temprano se utiliza en las versiones ms recientes del kernel de Linux para sustituir tantas funciones como sea posible que originalmente se haran en el ncleo durante el proceso de inicio. Los usos tpicos del espacio de usuario temprano son para detectar que controladores de dispositivos (Drivers) son necesarios para cargar el sistema de archivos del espacio de usuario principal y cargarlos desde un sistema de archivos temporal.

Fase del cargador de arranque


Un cargador de arranque (boot loader en ingls) es un programa diseado exclusivamente para cargar un sistema operativo en memoria. La etapa del cargador de arranque es diferente de una plataforma a otra. Como en la mayora de arquitecturas este programa se encuentra en el MBR, el cual es de 512 bytes, este espacio no es suficiente para cargar en su totalidad un sistema operativo. Por eso, el cargador de arranque consta de varias

Proceso de arranque en Linux etapas. Las primeras operaciones las realiza el BIOS. En esta etapa se realizan operaciones bsicas de hardware. En esta primera etapa se localiza el sector de arranque (o MBR) y se carga el cargador de este sector (normalmente una parte de LILO o GRUB). A partir de ese momento, el proceso de arranque contina de la siguiente manera: La primera etapa del cargador de arranque carga el resto del gestor de arranque, que normalmente da un mensaje que pregunta que sistema operativo (o tipo de sesin) el usuario desea inicializar. Bajo LILO, esto se hace a travs del mapa instalado que lee el archivo de configuracin /etc/lilo.conf para identificar los sistemas disponibles. Incluye datos como la particin de arranque y la localizacin del kernel para cada uno, as como las opciones personalizadas en su caso. El sistema operativo seleccionado es cargado en la memoria RAM, un sistema de archivos mnimo inicial se establece en la memoria RAM desde un archivo de imagen (" initrd "), y junto con los parmetros adecuados, el control se pasa al sistema operativo activado recientemente. LILO y GRUB difieren en algunos aspectos: LILO no entiende los sistemas de archivos, por lo que utiliza desplazamientos de disco sin procesar y el BIOS para cargar los datos. Se carga el cdigo del men y, a continuacin, en funcin de la respuesta, carga, o el sector MBR del disco de 512 bytes como en Microsoft Windows, o la imagen del kernel de Linux. GRUB por el contrario comprende los sistemas de archivos comunes ext2 , ext3 y ext4. Debido a que GRUB almacena sus datos en un archivo de configuracin en vez de en el MBR y a que contiene un interfaz de lnea de comandos, a menudo es ms fcil rectificar o modificar GRUB si est mal configurado o corrupto.

GRUB
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 segunda etapa est en una unidad grande, en ocasiones se carga una fase intermedia 1.5, que contiene cdigo adicional para permitir que los cilindros por encima de 1024, o unidades tipo LBA, puedan leerse. El gestor de arranque 1.5 es almacenado (si es necesario) en el MBR o en la particin de arranque. 3. La segunda etapa del gestor de arranque ejecuta y muestra el men de inicio de GRUB que permite al usuario elegir un sistema operativo y examinar y modificar los parmetros de inicio. 4. Despus de elegir un sistema operativo, se carga y se le pasa el control. GRUB soporta mtodos de arranque directo, arranque chain-loading, LBA, ext2, ext3, ext4 y hasta "un pre-sistema operativo en mquinas x86 totalmente basado en comandos". Contiene tres interfaces: un men de seleccin, un editor de configuracin, y una consola de lnea de comandos.

LILO
LILO es ms antiguo. Es casi idntico a GRUB en su proceso, excepto que no contiene una interfaz de lnea de comandos. Por lo tanto todos los cambios en su configuracin deben ser escritos en el MBR y luego reiniciar el sistema. Un error en la configuracin puede dejar el disco inservible para el proceso de arranque hasta tal grado, que sea necesario usar otro dispositivo (disquete, etc) que contenga un programa capaz de arreglar el error. Adems, no entiende el sistema de archivos. En su lugar, la ubicacin de los archivos de imagen se almacenan directamente en el MBR y el BIOS se utiliza para acceder a ellos directamente.

Proceso de arranque en Linux

Loadlin
Otra forma de cargar Linux es desde DOS o Windows 9x, donde el ncleo de Linux reemplaza completamente la copia de funcionamiento de estos sistemas operativos. Esto puede ser til en el caso de hardware que necesita ser conectado a travs del software y la configuracin de estos programas slo est disponible para DOS y no para Linux, debido a cuestiones de secretos industriales y cdigo propietario. Sin embargo, esta tediosa forma de arranque ya no es necesaria en la actualidad ya que Linux tiene drivers para multitud de dispositivos hardware. Aun as, esto era muy til en el pasado. Otro caso es cuando Linux se encuentra en un dispositivo que el BIOS no lo tiene disponible para el arranque. Entonces, DOS o Windows pueden cargar el driver apropiado para el dispositivo superando dicha limitacin del BIOS, y cargar Linux desde all.

Fase del kernel


El kernel de Linux se encarga de todos los procesos del sistema operativo, como la gestin de memoria, planificador de tareas, I/O, comunicacin entre procesos, y el control general del sistema. Este se carga en dos etapa: en la primera etapa el kernel (como un archivo imagen comprimido) se carga y se descomprime en memoria, y algunas funciones fundamentales como la gestin de memoria de base se establecen. El control entonces se cambia a la etapa final para iniciar el kernel principal. Una vez que el ncleo est en pleno funcionamiento - y como parte de su puesta en marcha, despus de ser cargado y ejecutado - el kernel busca un proceso de inicio para ejecutar, que (separadamente) fija un espacio de usuario y los procesos necesarios para un entorno de usuario y ultimar la entrada . Al ncleo en s entonces se le permite pasar a inactivo, sujeto a las llamadas de otros procesos.

Fase de carga del kernel


El kernel es cargado normalmente como un archivo imagen, comprimido dentro de otro con zlib como zImage o bzImage. Contiene una cabecera de programa que hace una cantidad mnima de instalacin del hardware, descomprime la imagen completamente en la memoria alta , teniendo en cuenta cualquier disco RAM si est configurado. A continuacin, lleva a cabo su ejecucin. Esto se realiza llamando la funcin startup del kernel (en los procesadores x86 a travs de la funcin startup_32() del archivo /arch/i386/boot/head).

Fase de inicio del kernel


La funcin de arranque para el kernel (tambin llamado intercambiador o proceso 0) establece la gestin de memoria (tablas de paginacin y paginacin de memoria), detecta el tipo de CPU y cualquier funcionalidad adicional como capacidades de punto flotante, y despus cambia a las funcionalidades del kernel para arquitectura no especficas de Linux, a travs de una llamada a la funcin start_kernel(). start_kernel ejecuta una amplia gama de funciones de inicializacin. Establece el manejo de interrupciones (IRQ), configura memoria adicional, comienza el proceso de inicializacin (procesa el espacio del primer usuario), y luego comienza la tarea inactiva a travs de cpu_idle(). En particular, el proceso de inicio del kernel tambin monta el disco RAM inicial ("initrd") que se ha cargado anteriormente como el sistema raz temporal durante la fase de arranque. Esto permite que los mdulos controladores se carguen sin depender de otros dispositivos fsicos y drivers y mantiene el kernel ms pequeo. El sistema de archivos raz es cambiado ms tarde a travs de la llamada a pivot_root(), que desmonta el sistema de archivos temporal y lo reemplaza por el real una vez que ste sea accesible. La memoria utilizada por el sistema de archivos temporal es entonces recuperada. Por lo tanto, el ncleo inicializa los dispositivos, monta el sistema de archivos raz especificado por el gestor de arranque como de slo lectura , y se ejecuta Init (/sbin/init), que es designado como el primer proceso ejecutado por el sistema (PID=1). Tambin puede ejecutar opcionalmente initrd para permitir instalar y cargar dispositivos relacionados (disco RAM o similar), para ser manipulados antes de que el sistema de archivos raz est

Proceso de arranque en Linux montado. En este punto, con las interrupciones habilitadas, el programador puede tomar el control de la gestin general del sistema, para proporcionar multitarea preventiva, e iniciar el proceso para continuar con la carga del entorno de usuario en el espacio de usuario.

El proceso de inicio
El trabajo de Init es "conseguir que todo funcione como debe ser" una vez que el kernel est totalmente en funcionamiento. En esencia, establece y opera todo el espacio de usuario. Esto incluye la comprobacin y montaje de sistemas de archivos, la puesta en marcha los servicios de usuario necesarios y, en ltima instancia, cambiar al entorno de usuario cuando el inicio del sistema se ha completado. Es similar a los procesos Init de Unix y BSD, de la que deriva, pero en algunos casos se ha apartado o se hicieron a la medida. En un sistema Linux estndar, Init se ejecuta con un parmetro, conocido como nivel de ejecucin, que tiene un valor entre 1 y 6, y que determina que subsistemas pueden ser operacionales. Cada nivel de ejecucin tiene sus propios scripts que codifican los diferentes procesos involucrados en la creacin o salida del nivel de ejecucin determinado, y son estas secuencias de comandos los necesarios en el proceso de arranque. Los scripts de Init se localizan normalmente en directorios con nombres como "/etc/rc...". El archivo de configuracin de ms alto nivel para Init es /etc/inittab. Durante el arranque del sistema, se verifica si existe un nivel de ejecucin predeterminado en el archivo /etc/inittab, si no, se debe introducir por medio de la consola del sistema. Despus se procede a ejecutar todos los scripts relativos al nivel de ejecucin especificado. Despus de que se han dado lugar todos los procesos especificados, Init se aletarga, y espera a que uno de estos tres eventos sucedan:- que procesos comenzados finalicen o mueran; un fallo de la seal de potencia (energa); o una peticin a travs de /sbin/telinit para cambiar el nivel de ejecucin.

Enlaces externos
El cdigo de un IPL en GNU ensamblador [1]

Referencias
[1] http:/ / code. google. com/ p/ akernelloader/

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Proceso de arranque en Linux Fuente: http://es.wikipedia.org/w/index.php?oldid=66281489 Contribuyentes: Aeris17, BlackBeast, ColdWind, Echani, Elabra sanchez, Maxfer, Omerta-ve, Pablocarballo, Rafa3040, 37 ediciones annimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/